C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
原文:C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息
我们得到了百度坐标,现在依据这一坐标来获取相应的信息。下面是相应的代码
- 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类的具体实现,请参看后面的代码。
- 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
- }
注:类的构造方法依据前面所说的构造,也可以使用工具直接生成(链接)。
下面是测试代码
- 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的官方文档说明。
这样,我们就得到了指定坐标点的位置信息,那得到了这些信息后,如果在前面的地图上显示呢?
C#的百度地图开发(三)依据坐标获取位置、商圈及周边信息的更多相关文章
- C#的百度地图开发(二)转换JSON数据为相应的类
原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...
- C#的百度地图开发(四)前端显示与定位
原文:C#的百度地图开发(四)前端显示与定位 有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API.下面是示例代码. 前端代码 <%@ Page ...
- 调用百度地图开发平台的JavascriptAPI实现将市县位置转换成坐标
最近的项目要做的地图比较多,有的还比较复杂,而地图用到的坐标,上网找json文件更是良莠不齐的.真是让人伤脑筋,后来突然想到了百度地图开发平台,没想到真的有对应的API哦,谢天谢地!!!下面说一下完整 ...
- 【地图功能开发系列:二】根据地址名称通过百度地图API查询出坐标
根据地址名称通过百度地图API查询出坐标 百度地图ApiUrl string url = "http://api.map.baidu.com/geocoder?address={0}& ...
- delphi 调用百度地图WEBSERVICE转换GPS坐标 转
http://www.cnblogs.com/happyhills/p/3789864.html 百度地图的API说明 使用方法 第一步,申请密钥(ak),作为访问服务的依据: 第二步,按照请求参 ...
- android 百度地图开发实例(转载)
因为在我的寝室google基站定位返回的数据总是为空,所以换成百度地图,发现百度地图开发起来非常方便,提供了许多有用的工具,地图的加载速度也比google地图快许多. 为了加强记忆,写一点androi ...
- delphi 调用百度地图WEBSERVICE转换GPS坐标
百度地图的API说明 使用方法 第一步,申请密钥(ak),作为访问服务的依据: 第二步,按照请求参数说明拼写发送http请求的url,注意需使用第一步申请的ak: 第三步,接收返回的数据(json或者 ...
- Android studio 百度地图开发(2)地图定位
Android studio 百度地图开发(2)地图定位 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图
标签: Android百度地图API Key 分类: Android 百度地图开发(2) 最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...
随机推荐
- PHP学习之-1.5 字符串
字符串 一个字符串是用双引号扩起来的一个词或者一个句子,比如 "Hello Word" ,你可以使用PHP语言输入这个字符串,像这样 <?php echo "Hel ...
- Mac+IPAD上使用wireshark抓包
首先先下载wireshark和Xquartz wireshark地址: http://www.wireshark.org/download.html Xquartz 地址:http://xquartz ...
- grails一对一关联关系
一对一关联关系开发中用的没有一对多那么广泛.可是我认为掌握以下还是有必要的.一对一关联关系有一张表存在外键,引用的通常是主表的主键.grails也对一对一关联关系提供了非常好的支持.配置也是简单的不得 ...
- NSDate与时间戳的那点事
对于项目中常常使用的时间来说,通过时间戳的形式进行数据的操作能带来极大的方便,以下就时间戳的生成和转换通过Demo的形式进行解说 声明一个时间类型的变量: // 获取当前的时间 // 以下的第一个方法 ...
- Effective C++_笔记_条款01_视C++为一个语言联邦
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) C++的各种能力和特性使它成为一个无可匹敌的工具,但也可能引发某 ...
- python httpConnection详解
模块urllib,urllib2,httplib的区别 httplib实现了http和https的客户端协议,但是在python中,模块urllib和urllib2对httplib进行了更上层的封装. ...
- GetCursorPos/WindowFromPoint/SendMessage
GetCursorPos/WindowFromPoint/SendMessage (用API函数向Edit框发送字符) GetCursorPos(mPoint); DTWND:=WindowFromP ...
- Delphi XE2 升级项目编译ralease版本,无法添加UAC解决方法
我今天把一个原来是Delphi2007的工程升级到了Delphi XE2,在编译ralease版本时候,发现无法添加UAC,我觉得可能是升级的原因,随后我用XE2新建了一个工程,但是在编译raleas ...
- iphone缩小uIImage图片
UIImage的缩小 有时候,项目中,要用到上传图片,从图片库里取出的图片有的太大了,而要上传的时候,会很费时间,而且也没必要太大,所以就把图片综缩小一下,再传! #pragma UIImagePic ...
- 新秀操作和维护注意事项:Windows关于使用Xshell管理你的云主机
假设你PC它是linux系统.那么直接与终端ssh命令就可以了.假设Windows系统.使用它是必要的sshclient. PS:我双系统. 有时候,他们想使用Windows的. Windows上ss ...