博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
阅读量:6478 次
发布时间:2019-06-23

本文共 6905 字,大约阅读时间需要 23 分钟。

在《》一文中,我们得到了百度坐标,现在依据这一坐标来获取相应的信息。下面是相应的代码

public class BaiduMap{        ///         /// 依据坐标获取定位信息的URL模板。        /// 参数1:百度地图API的KEY。        /// 参数2:坐标(经度,纬度)。                ///         public const string GEOCODING_COORDINATE_URL_TEMPLATE =            "http://api.map.baidu.com/geocoder/v2/?ak={0}&location={1}&output=json&pois=1";        ///         /// 依据坐标获取定位信息        ///         /// 坐标(经度,纬度),多个坐标间用分号隔开        /// 坐标类型        /// 
public static CoordLocationResult FetchLocation(String coordinates, MapCoordinateType mapCoordinateType) { CoordTransResult transformResult = TransToBaiduCoord(coordinates, mapCoordinateType); String info = ""; if (!transformResult.status.Equals(CoordTransStatus.OK)) { info = "坐标转换异常:状态是---" + transformResult.status.ToString(); return null; } if (transformResult.result == null || transformResult.result.Length <= 0) { info = "坐标转换异常:结果为空或数组长度为0"; return null; } String locationUrl = ""; foreach (Coordinate coordTemp in transformResult.result) { locationUrl = String.Format(GEOCODING_COORDINATE_URL_TEMPLATE, MAP_KEY_BAI_DU, coordTemp.x + "," + coordTemp.y); } String locationResponseText = RequestHelper.RequestUrl(locationUrl, null); CoordLocationResult locationResult = null; try { locationResult = Newtonsoft.Json.JsonConvert.DeserializeObject
(locationResponseText); } catch (Exception e) { info = "定位异常:" + e.Message; return null; } return locationResult; }
///
        /// 依据坐标获取定位信息        ///         ///
坐标        ///
        public static CoordLocationResult FetchLocation(Coordinate coordinate)        {            if (coordinate == null)            {                return null;            }            return FetchLocation(String.Format("{0},{1}", coordinate.x, coordinate.y), MapCoordinateType.GOOGLE_SOSO_ALIYUN_MAPABC_AMAP);        }}
注:

(1).使用const常量来定义一个百度地图API的URL模板,方便后面的调用。

(2).TransToBaiduCoord函数是《》中将非百度坐标转换成百度坐标方法的封装。

(3).RequestUrl方法是所说的发起HTTP请求的封装。

(4).CoordLocationResult类的具体实现,请参看后面的代码。

namespace MapApi.Baidu{    [Serializable]    public class CoordLocationResult    {        ///         /// 状态        ///         public String status { get; set; }        ///         /// 结果        ///         public CoordLocationResult_Result result { get; set; }    }    #region CoordLocationResult_Result    ///     /// 定位结果    ///     [Serializable]    public class CoordLocationResult_Result    {        ///         /// 定位的经度与纬度        ///         public CoordLocationResult_Result_Location location { get; set; }        ///         /// 结构化地址信息        ///         public String formatted_address { get; set; }        ///         /// 所在商圈信息,如 "人民大学,中关村,苏州街"        /// 	        public String business { get; set; }        ///         /// 定位的行政区域        ///         public CoordLocationResult_Result_AddressComponent addressComponent { get; set; }        ///         /// 周边位置        ///         public CoordLocationResult_Result_Poi[] pois { get; set; }        ///         /// 周边区域        ///         public CoordLocationResult_Result_PoiRegion[] poiRegions { get; set; }        ///         /// 城市代码        ///         public String cityCode { get; set; }    }    ///     /// 定位结果之定位的经纬度    ///     [Serializable]    public class CoordLocationResult_Result_Location    {        ///         /// 经度        ///         public String lng { get; set; }        ///         /// 纬度        ///         public String lat { get; set; }    }    ///     /// 定位结果之行政区域    ///     [Serializable]    public class CoordLocationResult_Result_AddressComponent    {        ///         /// 城市名        ///         public String city { get; set; }        ///         /// 区县名        ///         public String district { get; set; }        ///         /// 省名        ///         public String province { get; set; }        ///         /// 街道名        ///         public String street { get; set; }        ///         /// 街道门牌号        ///         public String street_number { get; set; }    }    #endregion    #region CoordLocationResult_Result_Poi    ///     /// 周边位置信息    ///     [Serializable]    public class CoordLocationResult_Result_Poi    {        //"addr": "福建省厦门市湖里区嘉禾路388",        //       "cp": "NavInfo",        //       "direction": "西",        //       "distance": "49",        //       "name": "永同昌大厦",        //       "poiType": "商务大厦",        //       "point": {        //           "x": 118.13374113945,        //           "y": 24.501871673827        //       },        //       "tel": "",        //       "uid": "19c4b3f2642893beafb22a1e",        //       "zip": ""        ///         /// 地址信息        ///         public String addr { get; set; }        ///         /// 数据来源        ///         public String cp { get; set; }        ///         /// 方向        ///         public String direction { get; set; }        ///         /// 离坐标点距离        ///         public String distance { get; set; }        ///         /// poi名称        ///         public String name { get; set; }        ///         /// poi类型,如’办公大厦,商务大厦’        ///         public String poiType { get; set; }        ///         /// poi坐标{x,y}        ///         public Coordinate point { get; set; }        ///         /// 电话        ///         public String tel { get; set; }        ///         /// poi唯一标识        ///         public String uid { get; set; }        ///         /// 邮编        ///         public String zip { get; set; }    }    #endregion    #region CoordLocationResult_Result_PoiRegion    ///     /// 周边区域    ///     [Serializable]    public class CoordLocationResult_Result_PoiRegion    {        ///         /// 目标方向。比如:内        ///         public String direction_desc { get; set; }        ///         /// 区域名称。比如:音乐·家生活广场        ///         public String name { get; set; }    }    #endregion}
注:类的构造方法依据前面所说的构造,也可以使用工具直接生成( )。

下面是测试代码

protected void btnTest_Click(object sender, EventArgs e)        {                      Coordinate coordinate = new Coordinate("39.92", "116.46");            CoordLocationResult coordLocationResult=BaiduMap.FetchLocation(coordinate);            Alert.Show(coordLocationResult.status.ToString());        }
测试结果如下

从图中可以看到,formatted_address是位置信息,business是商圈信息,pois是周围的信息,其他的信息可自行参考百度地图WebApi的官方文档说明。

这样,我们就得到了指定坐标点的位置信息,那得到了这些信息后,如果在前面的地图上显示呢?请参看后文《》。

转载请注明出处http://blog.csdn.net/xxdddail/article/details/42705549。

转载于:https://www.cnblogs.com/sparkleDai/p/7604976.html

你可能感兴趣的文章
App里面如何正确显示用户头像
查看>>
U-BOOT之一:BootLoader 的概念与功能
查看>>
我的路上
查看>>
Velocity处理多余空白和多余空白行问题
查看>>
DB2与oracle有什么区别
查看>>
创建一个多级文件目录
查看>>
Picasa生成图片幻灯片页面图文教程
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
Security updates and resources
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>
打印图片
查看>>
SHOW CREATE DATABASE Syntax
查看>>
rsync常见问题及解决办法
查看>>
MySQL日期 专题
查看>>