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

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

代码如下:

//根据原始数据计算中心坐标和缩放级别,并为地图设置中心坐标和缩放级别。  
   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是你具体的经纬度信息


你可能感兴趣的:(百度地图)