javascript获取地图多边形中心点与缩放级别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a0405221/article/details/80899378

查找收集了地图根据多个点坐标计算出中心点与缩放级别

一、计算中心点

function getCenterPoint(path) {
  //var path =e.;//Array<Point> 返回多边型的点数组
  //var ret=parseFloat(num1)+parseFloat(num2);
  var x = 0.0;
  var y = 0.0;
  for (var i = 0; i < path.length; i++) {
    x = x + parseFloat(path[i].lng);
    y = y + parseFloat(path[i].lat);
  }
  x = x / path.length;
  y = y / path.length;

  //return new BMap.Point(path[0].lng,path[0].lat);
  return new BMap.Point(x, y);
  //return path[0];
}

二、获取中心点+缩放级别

// 根据原始数据计算中心坐标和缩放级别,并为地图设置中心坐标和缩放级别。  
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);    
    }   
}  
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 < zoomLen; i++) {  
        if(zoom[i] - distance > 0){  
            return 18-i+3;//之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。  
        }  
    };  
}  

猜你喜欢

转载自blog.csdn.net/a0405221/article/details/80899378