zoukankan      html  css  js  c++  java
  • C#根据经纬度获取物理地址

    废话不多说,直接上代码:

    1.首先新建几个类,定义一些属性:

    public class BaiDuGeoCoding
    {
        public int Status { get; set; }
        public Result Result { get; set; }
    }
    
    public class Result
    {
        public Location Location { get; set; }
    
        public string Formatted_Address { get; set; }
    
        public string Business { get; set; }
    
        public AddressComponent AddressComponent { get; set; }
    
        public string CityCode { get; set; }
    }
    
    public class AddressComponent
    {
        /// <summary>
        /// 省份
        /// </summary>
        public string Province { get; set; }
        /// <summary>
        /// 城市名
        /// </summary>
        public string City { get; set; }
    
        /// <summary>
        /// 区县名
        /// </summary>
        public string District { get; set; }
    
        /// <summary>
        /// 街道名
        /// </summary>
        public string Street { get; set; }
    
        public string Street_number { get; set; }
    
    }
    
    public class Location
    {
        public string Lng { get; set; }
        public string Lat { get; set; }
    }

    2.新建一个帮助类根据URL获取页面内容:

    public class HttpClientHelper
    {
        /// <summary>
        /// GET请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <returns></returns>
        public static T GetResponse<T>(string url) where T : class,new()
        {
            string returnValue = string.Empty;
            HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(url));
            webReq.Method = "GET";
            webReq.ContentType = "application/json";
            using (HttpWebResponse response = (HttpWebResponse)webReq.GetResponse())
            {
                using (StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    returnValue = streamReader.ReadToEnd();
                    T result = default(T);
                    result = JsonConvert.DeserializeObject<T>(returnValue);
                    return result;
                }
            }
        }
    }

    3.定义字段和方法获取:

    //百度地图Api  Ak
    public const string BaiduAk = "9TxmFS8X1EXcUGZkqsDM4GKuayamwkbr";
    
    /// <summary>
    /// 经纬度  逆地理编码 Url  需要Format 0.ak  1.经度  2.纬度
    /// </summary>
    private const string BaiduGeoCoding_ApiUrl = "http://api.map.baidu.com/geocoder/v2/?ak={0}&location={1},{2}&output=json&pois=0";
    
    /// <summary>
    /// /// <summary>
    /// 经纬度  逆地理编码 Url  需要Format 0.经度  1.纬度 
    /// </summary>
    /// </summary>
    public static string Baidu_GeoCoding_ApiUrl
    {
        get
        {
            return string.Format(BaiduGeoCoding_ApiUrl, BaiduAk, "{0}", "{1}");
        }
    }
    
    /// <summary>
    /// 根据经纬度  获取 地址信息
    /// </summary>
    /// <param name="lat">经度</param>
    /// <param name="lng">纬度</param>
    /// <returns></returns>
    public static BaiDuGeoCoding GeoCoder(string lat, string lng)
    {
        string url = string.Format(Baidu_GeoCoding_ApiUrl, lat, lng);
        var model = HttpClientHelper.GetResponse<BaiDuGeoCoding>(url);
        return model;
    }

    4.调用方法:

    string lat = "22.228962"; 
    string lng = "113.308784";
    var model = GeoCoder(lat, lng); //model拿到的就是详细物理地址
  • 相关阅读:
    继承
    面向对象_封装练习
    ajax分页与组合查询配合使用
    Linq的分页与组合查询的配合使用
    发送邮件和数据导出
    GridView的使用
    母版页的使用
    DIV+CSS命名规范
    Ajax基础
    jQuery动画效果
  • 原文地址:https://www.cnblogs.com/genesis/p/6644895.html
Copyright © 2011-2022 走看看