百度地圖動態的設置中心座標和縮放級別

問題描述:有些時候地圖的中心座標,以及縮放級別要根據標註點來確定,所以有時候要根據標註點座標,動態的設置中心座標和縮放級別

代碼如下:

//根據原始數據計算中心座標和縮放級別,併爲地圖設置中心座標和縮放級別。  
   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是你具體的經緯度信息


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章