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

本文介绍如何通过百度地图API获取住宅小区边界坐标,并将米制坐标转换为度表示法,便于进行地图相关计算。

一、 背景描述

在百度地图上查询一个住宅小区, 界面会显示一个小区的边界阴影。大小区、新小区有;一些老小区也没有。这些边界坐标有时我们也想拿到,用于在做各种地图相关的计算和展示。

二、 获取住宅小区边界

1.1 获取住宅小区的POI ID。

通过百度提供的JS接口LocalSearch的Search方法搜索小区名称,返回LocalResult中包含POI的uid.

1.2 调用百度的Web方法查询小区的边界

http://map.baidu.com/?reqflag=pcmap&from=webmap&qt=ext&uid=680fb703ea53819c8ab988a9&ext_ver=new&l=18

返回值中包含住宅小区的边界:
{“content”:{“geo”:”4|12935110.3722,4844973.6228;12935311.2043,4845232.10011|1-12935110.3722,4845027.18418,12935110.5757,4845232.10011,12935295.028,4845223.84613,12935283.3104,4845082.19657,12935311.2043,4845076.61802,12935300.1501,4844973.6228,12935270.6855,4844985.61037,12935170.3042,4845022.58463,12935110.3722,4845027.18418;”,”uid”:”680fb703ea53819c8ab988a9”},”current_city”:…..}

返回结果中小区边界坐标点是米制坐标,转换为百度地图的度表示法才方便使用。

1.3 百度米制坐标转换为度表示法函数

function coordinateToPoints(coordinate) { 
var points =”“;

if (coordinate) {
        var projection = BMAP_NORMAL_MAP.getProjection();

        if (coordinate && coordinate.indexOf(";") >= 0) {
            coordinate = coordinate.split(';');
        }

        for ( var i = 0, len = coordinate.length; i < len; i++) {
                var pos = coordinate[i].split(',');
                var point = projection.pointToLngLat(new BMap.Pixel(pos[0], pos[1]));
                points += ([ point.lng, point.lat ].toString() + ";");
        }
}

return points;
}

使用BMAP_NORMAL_MAP API需要下载引入百度的CityList.js文件。下载路径:http://api.map.baidu.com/library/CityList/1.4/docs/symbols/BMapLib.CityList.html

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值