欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

百度地图根据坐标集设置中心点和缩放等级

程序员文章站 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 Vue