百度地圖動態的設定中心座標和縮放級別
阿新 • • 發佈:2019-01-25
問題描述:有些時候地圖的中心座標,以及縮放級別要根據標註點來確定,所以有時候要根據標註點座標,動態的設定中心座標和縮放級別
程式碼如下:
//根據原始資料計算中心座標和縮放級別,併為地圖設定中心座標和縮放級別。 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是你具體的經緯度資訊