有大佬知道链家是怎么定位区域的中心点么? 不会是一个点一个点打上去的吧....
区域的中心点我按照下面算的, 跟链家上的点不一样. 浦东新区很明显.
链家的地址: https://sh.lianjia.com/ditu/
function getBoundary() {
var bdary = new BMap.Boundary();
bdary.get(`上海市${region.name}`, function (rs) { //获取行政区域
console.log(rs)
// map.clearOverlays(); //清除地图覆盖物
var count = rs.boundaries.length; //行政区域的点有多少个
if (count === 0) {
console.log(region.name)
console.log(region)
}
var pointArray = [];
var lngAry = [];
var latAry = [];
rs.boundaries[0].split(';').forEach(item => {
lngAry.push(item.split(',')[0]);
latAry.push(item.split(',')[1]);
})
for (var i = 0; i < count; i++) {
var ply = new BMap.Polygon(rs.boundaries[i], { strokeWeight: 2, strokeColor: "#ff0000" }); //建立多边形覆盖物
map.addOverlay(ply); //添加覆盖物
pointArray = pointArray.concat(ply.getPath());
}
var minLng = Math.min(...lngAry);
var maxLng = Math.max(...lngAry);
var minLat = Math.min(...latAry);
var maxLat = Math.max(...latAry);
var cenLng =(parseFloat(maxLng)+parseFloat(minLng))/2;
var cenLat = (parseFloat(maxLat)+parseFloat(minLat))/2;
var myCompOverlay = new ComplexCustomOverlay(new BMap.Point(cenLng, cenLat), region.name, region.countHotel);
var cen = new BMap.Marker(new BMap.Point(cenLng, cenLat));
map.addOverlay(myCompOverlay);
map.addOverlay(cen);
// map.setViewport(pointArray); //调整视野
});
}