最近公司有個需求,想通過地址獲取對應的省市區,本來想直接通過對地址的截取,對於完整的地址還可以,不完整的就沒法用了
所以本篇通過百度地圖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"
}