C#调用百度地图精确地址建议API

来源:互联网 发布:网络活动主持词开场白 编辑:程序博客网 时间:2024/05/17 23:19

            百度地图提供了一个非常棒的API,就是当用户输入模糊地名时,可以返回精确地名,给用户提供建议选项。这个功能大大方便了相关应用的开发。

            那么这个API应该怎么使用咧,详解如下: 

            首先,你需要在百度地图API申请一个Key,这个key是免费的,这一步非常简单。

           百度地图API给出的使用建议只有这个


          "http://api.map.baidu.com/place/v2/suggestion?query="+ place + "&region=131&output=json&ak="+mapKey
 

           输入以后,我们发现这个请求可以返回一个json文件,这是我第一次接触json,因此走了一些弯路。现在将我的经验分享出来,希望可以帮助到有需要的程序员。

          首先是请求json数据,代码如下: 

         

        public string getMetadata(string place)        {            String url = "http://api.map.baidu.com/place/v2/suggestion?query="+ place + "&region=131&output=json&ak="+mapKey;            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);            request.Method = "GET";            Encoding encoding = Encoding.UTF8;//根据网站的编码自定义              HttpWebResponse response = (HttpWebResponse)request.GetResponse();            Stream responseStream = response.GetResponseStream();            StreamReader streamReader = new StreamReader(responseStream, encoding);            string retString = streamReader.ReadToEnd();            streamReader.Close();            responseStream.Close();            return retString;        } 
 

          这里需要啰嗦一句,C#与java不同,C#默认的类和方法都不是public,而java默认是public的,因此在C#中我们需要显式的写明白。很明显的,这个函数返回的是一个string,即百度地图提供给我们的精确地址建议的json数据。


           完成了这一步,就要开始我们的精彩部分了,即C#怎样处理json数据。这个工作耗用了我一整天的时间。

          首先需要下载Newtownsoft.Json这个动态链接库

                                                      

            下载完成后,我们就可以大展身手了。代码如下:

        public string  getAccurateName(string place)        {            String a = getMetadata(place);            JObject jo = (JObject)JsonConvert.DeserializeObject(a);            string result = jo["result"].ToString();            // string zone_en = jo["beijing"]["zone_en"].ToString();            JArray ja = (JArray)JsonConvert.DeserializeObject(result);            string finala  = "";            for (int i = 0; i < ja.Count; i++)            {                 finala += ja[i]["name"].ToString() + "#";            }            return finala;                    }

           这段代码将json数据看作一个数组,取出的是result中的name

                                

                           对应看就可以发现json的存储方式非常的方便程序员的使用。

 





0 0
原创粉丝点击