C# 根據根據經緯度獲取地址(使用高德API)


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

  

 


免責聲明!

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



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