调用百度地图接口获取城市住宅小区边界信息

一、背景需求:
在百度地图上查询一个住宅小区, 界面会显示一个小区的边界阴影。大小区、新小区有;一些老小区也没有。我们老大看到了让我也整一个出来,大概就是输入小区名称,地图上展示出这个小区的边界轮廓。
要想展示边界轮廓,那么势必要获取小区的边界坐标。查遍百度地图api,只有获取行政区域轮廓图的方法。所以我采用抓包的方法,看了一下百度地图是怎么操作的。总结出了以下几个步骤。
二、实现方法:
1、获取小区的uid
获取小区id有两种方法:
a、根据抓包得到的百度获取小区uid的链接为:http://map.baidu.com/su?wd=金鹰国际城&cid=347&type=0&pc_ver=2,访问地址,得到结果:

调用百度地图接口获取城市住宅小区边界信息_第1张图片
微信图片_20171208151304.png

其中s内的几个都是uid,取第一个bbb467bd96bc0a9ccac3db61
b、通过百度提供的JS接口LocalSearch的Search方法搜索小区名称,返回LocalResult中包含POI的uid.
调用百度地图接口获取城市住宅小区边界信息_第2张图片
图片.png

得到返回值pois:
获取小区uid

取第一个得到uid:
调用百度地图接口获取城市住宅小区边界信息_第3张图片
获取小区uid

2、根据小区uid获取小区信息
通过Firefox的Httpfox插件抓包分析,与展示的小区范围相关的url串如下:
调用百度地图接口获取城市住宅小区边界信息_第4张图片
获取坐标集合

经测,其中content里面的geo,就是小区边界坐标集合。
3、获取小区边界坐标进行坐标转换
我们现在所获取到的小区边界坐标集合是百度的米制坐标,现在需要将米制坐标转换为经纬度。百度提供了BMAP_NORMAL_MAP.getProjection()。这个类里面的pointToLngLat(new BMap.Pixel(pos.lng, pos.lat));方法,可以将百度米制坐标转为经纬度。下面,我提供一个批量转换的方法,也就是直接可以把第二步获取的geo作为参数传进方法:
调用百度地图接口获取城市住宅小区边界信息_第5张图片
坐标解析

4、根据坐标集画多边形(小区边界轮廓)
现在我们已经取到了小区边界坐标集合,调用百度api,根据坐标点画多边形就好啦~~~
调用百度地图接口获取城市住宅小区边界信息_第6张图片
画多边形

三、源码



  
    test6.html
    
    
    
  
  
  
    
  

你可能感兴趣的:(调用百度地图接口获取城市住宅小区边界信息)