因为需求只要完整地址所以用字符串解析。并没有使用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; } }