C#通過地址獲取省市區(基於百度地圖API)


最近公司有個需求,想通過地址獲取對應的省市區,本來想直接通過對地址的截取,對於完整的地址還可以,不完整的就沒法用了

所以本篇通過百度地圖API來獲取地址

第一步:申請ak密鑰

登錄百度地圖開放平台,按照提示一步步申請即可,效果如下

第二步:根據地理編碼API獲取地址對應的經緯度

ak為密鑰,123456是隨便填的,填上你自己的ak即可

            string ak="123456";
            string Url = @"http://api.map.baidu.com/geocoding/v3/?address="+txtAddress.Text.Trim()+"&output=json&ak=" + ak;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.KeepAlive = false;
            request.Method = "GET";
            request.ContentType = "application/json";

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            response.Close();
            request.Abort();

            txtLocation.Text = retString;

            JObject obj_RawData = (JObject)(JsonConvert.DeserializeObject(retString));
            JObject obj_Result = (JObject)(JsonConvert.DeserializeObject(obj_RawData["result"].ToString()));
            JObject obj_Loaction = (JObject)(JsonConvert.DeserializeObject(obj_Result["location"].ToString()));
            string lng = obj_Loaction["lng"].ToString(); //經度值
            string lat = obj_Loaction["lat"].ToString(); //緯度值

 

第三步:在根據逆地理編碼API獲取經緯度對應的省市區

 1             Url = @"http://api.map.baidu.com/reverse_geocoding/v3/?ak=" + ak + "&output=json&coordtype=bd09ll&location=" + lat + "," + lng;
 2 
 3             request = (HttpWebRequest)WebRequest.Create(Url);
 4             request.KeepAlive = false;
 5             request.Method = "GET";
 6             request.ContentType = "application/json";
 7 
 8             response = (HttpWebResponse)request.GetResponse();
 9             myResponseStream = response.GetResponseStream();
10             myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
11             retString = myStreamReader.ReadToEnd();
12             myStreamReader.Close();
13             myResponseStream.Close();
14             response.Close();
15             request.Abort();

以上代碼可獲取對應的省市區,返回的json例子如下:

"addressComponent": {
"country": "中國",
"country_code": 0,
"country_code_iso": "CHN",
"country_code_iso2": "CN",
"province": "浙江省",
"city": "嘉興市",
"city_level": 2,
"district": "平湖市",
"town": "",
"adcode": "330482",
"street": "興平一路",
"street_number": "",
"direction": "附近",
"distance": "2"
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM