百度地图根据坐标集设置中心点和缩放等级
程序员文章站
2022-06-10 12:40:57
...
设置中心点
参数points坐标集的格式
[{lng:1,lat:1},{lng:1,lat:1},{lng:1,lat:1}]
getCenter (points) {
if (points.length > 0) {
let maxLng = points[0].lng
let minLng = points[0].lng
let maxLat = points[0].lat
let minLat = points[0].lat
let res
for (let i = points.length - 1; i >= 0; i--) {
res = points[i]
if (res.lng > maxLng) maxLng = res.lng
if (res.lng < minLng) minLng = res.lng
if (res.lat > maxLat) maxLat = res.lat
if (res.lat < minLat) minLat = res.lat
};
let cenLng = (parseFloat(maxLng) + parseFloat(minLng)) / 2
let cenLat = (parseFloat(maxLat) + parseFloat(minLat)) / 2
this.center = {
lat: cenLat,
lng: cenLng
}
可以直接设置显示的缩放等级
if (points.length == 1) {
this.zoom = 17
} else {
this.zoom = this.getZoom(maxLng, minLng, maxLat, minLat)
}
}
}
设置缩放等级
参数 maxLng, minLng, maxLat, minLat
getZoom (maxLng, minLng, maxLat, minLat) {
let zoom = ['50', '100', '200', '500', '1000', '2000', '5000', '10000', '20000', '25000', '50000', '100000', '200000', '500000', '1000000', '2000000']// 级别18到3。
let pointA = new this.BMap.Point(maxLng, maxLat) // 创建点坐标A
let pointB = new this.BMap.Point(minLng, minLat) // 创建点坐标B
let distance = this.map.getDistance(pointA, pointB).toFixed(1) // 获取两点距离,保留小数点后两位
for (let i = 0, zoomLen = zoom.length; i < zoomLen; i++) {
if (zoom[i] - distance > 0) {
return 18 - i + 3// 之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。
}
};
}
上一篇: 百度地图js 根据半径搜索坐标点周围服务