Automatic zooming of Baidu map and automatic zooming of designated center point

Automatic zooming of Baidu map and automatic zooming of designated center point

According to the specified center point, automatically calculate the zoom level

Effect picture:
Insert picture description here

                function getZoom (list) {
    
     
                    var point0 = new BMap.Point(list[0].lon, list[0].lat);
                    var maxDistance = 0;
                    for(var i = 1; i<list.length;i++){
    
    
                        var pointX = new BMap.Point(list[i].lon, list[i].lat);
                        var distance = map.getDistance(point0,pointX).toFixed(1);
                        if(distance > maxDistance){
    
    
                            maxDistance = distance
                        }
                    }
                    maxDistance = maxDistance*2;//计算距离中心点最远点和中心点距离的2倍
                    var zoom = ["50","100","200","500","1000","2000","5000","10000","20000","25000","50000","100000","200000","500000","1000000","2000000"]//级别18到3。  
                    // var pointA = new BMap.Point(maxLng,maxLat);  // 创建点坐标A  
                    // var pointB = new BMap.Point(minLng,minLat);  // 创建点坐标B  
                    // var distance = map.getDistance(pointA,pointB).toFixed(1);  //获取两点距离,保留小数点后两位  
                    for (var i = 0,zoomLen = zoom.length; i < zoomLen; i++) {
    
      
                        if(zoom[i] - distance > 0){
    
      
                            return 18-i;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。  
                        }  
                    };  
                }
                function setZoom(bPoints) {
    
    
                    var mapZoom = getZoom(list);
                    var centerPoint = new BMap.Point(list[0].lon, list[0].lat);
                    map.centerAndZoom(centerPoint, mapZoom);

                }

Stroke

                for (var i = 0; i < list.length; i ++) {
    
    
                    var point = new BMap.Point(list[i].lon, list[i].lat);
                    bPoints.push(point);
                    addMarker(point, list[i].type, list[i].name, i);
                }


                setTimeout(function () {
    
    
                    setZoom(bPoints);
                }, 1000)

There is no center point, the zoom level is automatically calculated and displayed

                function setZoom(bPoints) {
    
    
                     var view = map.getViewport(eval(bPoints));
                     var mapZoom = view.zoom;
                     var centerPoint = view.center;
                     map.centerAndZoom(centerPoint, mapZoom);
                }

Guess you like

Origin blog.csdn.net/dhw276/article/details/108886060