百度地图动态的设置中心坐标和缩放级别

来源:互联网 发布:淘宝课堂网址 编辑:程序博客网 时间:2024/05/16 08:38

问题描述:有些时候地图的中心坐标,以及缩放级别要根据标注点来确定,所以有时候要根据标注点坐标,动态的设置中心坐标和缩放级别

代码如下:

//根据原始数据计算中心坐标和缩放级别,并为地图设置中心坐标和缩放级别。     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。          }      };  }

说明:其中points是一个数组,内容的格式如下

   var points = [{"lng":y1,"lat":x1},                   {"lng":y2,"lat":x2}                   ]; 
其中y1,x1,以及y2,x2是你具体的经纬度信息


阅读全文
0 0