分享
 
 
 

C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: |||超大  

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

[html] view plaincopy

public class BaiduMap { /// <summary> /// 依据坐标获取定位信息的URL模板。 /// 参数1:百度地图API的KEY。 /// 参数2:坐标(经度,纬度)。 /// </summary> public const string GEOCODING_COORDINATE_URL_TEMPLATE = "http://api.map.baidu.com/geocoder/v2/?ak={0}&location={1}&output=json&pois=1"; /// <summary> /// 依据坐标获取定位信息 /// </summary> /// <param name="coordinates">坐标(经度,纬度),多个坐标间用分号隔开</param> /// <param name="mapCoordinateType">坐标类型</param> /// <returns></returns> 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<CoordLocationResult>(locationResponseText); } catch (Exception e) { info = "定位异常:" + e.Message; return null; } return locationResult; } }

注:

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

(2).TransToBaiduCoord函数是《C#的百度地图开发(二)转换JSON数据为相应的类》中将非百度坐标转换成百度坐标方法的封装。

(3).RequestUrl方法是《C#的百度地图开发(一)发起HTTP请求》所说的发起HTTP请求的封装。

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

[html] view plaincopy

namespace MapApi.Baidu { [Serializable] public class CoordLocationResult { /// <summary> /// 状态 /// </summary> public String status { get; set; } /// <summary> /// 结果 /// </summary> public CoordLocationResult_Result result { get; set; } } #region CoordLocationResult_Result /// <summary> /// 定位结果 /// </summary> [Serializable] public class CoordLocationResult_Result { /// <summary> /// 定位的经度与纬度 /// </summary> public CoordLocationResult_Result_Location location { get; set; } /// <summary> /// 结构化地址信息 /// </summary> public String formatted_address { get; set; } /// <summary> /// 所在商圈信息,如 "人民大学,中关村,苏州街" /// </summary> public String business { get; set; } /// <summary> /// 定位的行政区域 /// </summary> public CoordLocationResult_Result_AddressComponent addressComponent { get; set; } /// <summary> /// 周边位置 /// </summary> public CoordLocationResult_Result_Poi[] pois { get; set; } /// <summary> /// 周边区域 /// </summary> public CoordLocationResult_Result_PoiRegion[] poiRegions { get; set; } /// <summary> /// 城市代码 /// </summary> public String cityCode { get; set; } } /// <summary> /// 定位结果之定位的经纬度 /// </summary> [Serializable] public class CoordLocationResult_Result_Location { /// <summary> /// 经度 /// </summary> public String lng { get; set; } /// <summary> /// 纬度 /// </summary> public String lat { get; set; } } /// <summary> /// 定位结果之行政区域 /// </summary> [Serializable] public class CoordLocationResult_Result_AddressComponent { /// <summary> /// 城市名 /// </summary> public String city { get; set; } /// <summary> /// 区县名 /// </summary> public String district { get; set; } /// <summary> /// 省名 /// </summary> public String PRovince { get; set; } /// <summary> /// 街道名 /// </summary> public String street { get; set; } /// <summary> /// 街道门牌号 /// </summary> public String street_number { get; set; } } #endregion #region CoordLocationResult_Result_Poi /// <summary> /// 周边位置信息 /// </summary> [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": "" /// <summary> /// 地址信息 /// </summary> public String addr { get; set; } /// <summary> /// 数据来源 /// </summary> public String cp { get; set; } /// <summary> /// 方向 /// </summary> public String direction { get; set; } /// <summary> /// 离坐标点距离 /// </summary> public String distance { get; set; } /// <summary> /// poi名称 /// </summary> public String name { get; set; } /// <summary> /// poi类型,如’办公大厦,商务大厦’ /// </summary> public String poiType { get; set; } /// <summary> /// poi坐标{x,y} /// </summary> public Coordinate point { get; set; } /// <summary> /// 电话 /// </summary> public String tel { get; set; } /// <summary> /// poi唯一标识 /// </summary> public String uid { get; set; } /// <summary> /// 邮编 /// </summary> public String zip { get; set; } } #endregion #region CoordLocationResult_Result_PoiRegion /// <summary> /// 周边区域 /// </summary> [Serializable] public class CoordLocationResult_Result_PoiRegion { /// <summary> /// 目标方向。比如:内 /// </summary> public String direction_desc { get; set; } /// <summary> /// 区域名称。比如:音乐·家生活广场 /// </summary> public String name { get; set; } } #endregion }

注:类的构造方法依据前面所说的构造,也可以使用工具直接生成(链接)。

下面是测试代码

[html] view plaincopy

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的官方文档说明。

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有