因為需求只要完整地址所以用字符串解析。並沒有使用Json解析。
public class AmapUtil { const string key = "132976335b2e02f3d6455f91bb8a98d4"; /// <summary> /// 根據經緯度獲取地址 /// </summary> /// <param name="LngLatStr">經度緯度組成的字符串 例如:"113.692100,34.752853"</param> /// <param name="timeout">超時時間默認10秒</param> /// <returns>失敗返回"" </returns> public static string GetLocationByLngLat(string LngLatStr, int timeout = 10000) { string url = $"http://restapi.amap.com/v3/geocode/regeo?key={key}&location={LngLatStr}"; return GetLocationByURL(url, timeout); } /// <summary> /// 根據經緯度獲取地址 /// </summary> /// <param name="lng">經度 例如:113.692100</param> /// <param name="lat">維度 例如:34.752853</param> /// <param name="timeout">超時時間默認10秒</param> /// <returns>失敗返回"" </returns> public static string GetLocationByLngLat(double lng,double lat, int timeout = 10000) { string url = $"http://restapi.amap.com/v3/geocode/regeo?key={key}&location={lng},{lat}"; return GetLocationByURL(url, timeout); } /// <summary> /// 根據URL獲取地址 /// </summary> /// <param name="url">Get方法的URL</param> /// <param name="timeout">超時時間默認10秒</param> /// <returns></returns> private static string GetLocationByURL(string url,int timeout=10000) { string strResult = ""; try { HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; req.ContentType = "multipart/form-data"; req.Accept = "*/*"; //req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"; req.UserAgent = ""; req.Timeout = timeout; req.Method = "GET"; req.KeepAlive = true; HttpWebResponse response = req.GetResponse() as HttpWebResponse; using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { strResult = sr.ReadToEnd(); } int formatted_addressIndex = strResult.IndexOf("formatted_address"); int addressComponentIndex = strResult.IndexOf("addressComponent"); int cutIndex = addressComponentIndex - formatted_addressIndex - 23; int subIndex = formatted_addressIndex + 20; return strResult.Substring(subIndex, cutIndex); } catch (Exception) { strResult = ""; } return strResult; } }