百度地图AIP(2):地图根据标注点位置自适应调整缩放等级

1.效果图:

百度地图AIP(2):地图根据标注点位置自适应调整缩放等级_第1张图片
这里写图片描述

2.思路:
在参考了一位大牛的博客之后,得到了一个设计思路:

  1. 通过遍历所有的标注点统计出其中 经度和纬度(最大最小值)。
  2. 创建经纬度最大点和最小点:
    var pointA = new BMap.Point(maxLng,maxLat);
    var pointB = new BMap.Point(minLng,minLat);
    计算他们的距离,当作比例尺用。
  3. 再逐个比较找到最合适的缩放

3.核心方法:

//1.根据原始数据计算中心坐标和缩放级别,并为地图设置中心坐标和缩放级别。  
function setZoom(points){  
    if(points.length>0){  
        var maxLng = points[0].lng;  
        var minLng = points[0].lng;  
        var maxLat = points[0].lat;  
        var minLat = points[0].lat;  
        var res;  
        for (var 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;  
        };  
        var cenLng =(parseFloat(maxLng)+parseFloat(minLng))/2;  
        var cenLat = (parseFloat(maxLat)+parseFloat(minLat))/2;  
        var zoom = getZoom(maxLng, minLng, maxLat, minLat);  
        map.centerAndZoom(new BMap.Point(cenLng,cenLat), zoom);    
    }else{  
        //没有坐标,显示全中国  
        map.centerAndZoom(new BMap.Point(103.388611,35.563611), 5);    
    }   
}  
//===================================================
//  2.计算缩放级别的函数
function getZoom (maxLng, minLng, maxLat, minLat) {
     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  0) {
            return 18 -i + 3; 
            //地图范围常常是比例尺距离的10倍以上 所以加3
        }
    };
}
  • Tip:直接在上一篇的博客上添加这两个方法,再调用setZoom即可

4.完整代码:








地图根据标注点自适应大小


  • 参考链接:
  • http://blog.csdn.net/liusaint1992/article/details/50071613

你可能感兴趣的:(百度地图AIP(2):地图根据标注点位置自适应调整缩放等级)