• 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;
            }
        }
    

      

  • 相关阅读:
    Notepad++64插件安装方法
    lucene、solr、nutch三者的关系
    更改MySQL数据库的编码为utf8mb4
    对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)
    登录页面的表单验证(登录+密码 )
    MSYS2 环境搭建,并整合Qt
    QAbstractItemView为截断的项显示ToolTip(使用事件过滤)
    TraceTool 跟踪工具的瑞士军刀(C++版使用)
    Indy9的TIdFTPServer封装类
    Delphi 7学习开发控件(继承TGraphicControl只画一条线)
  • 原文地址:https://www.cnblogs.com/HandLoong/p/8511010.html
Copyright © 2020-2023  润新知