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

    xiaoxiao2021-03-26  59

    一、 背景描述

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

    二、 获取住宅小区边界

    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

    转载请注明原文地址: https://ju.6miu.com/read-350318.html

    最新回复(0)