This answer到This question谷歌地圖:如何計算「雙倍」縮放級別?
是解決我的問題的好主意。
現在,問題是:如何計算「雙倍」縮放級別?
編輯
含義:
地圖正在尋找一個正方形2x2的公里,我想縮小看一個4×4公里廣場。
做newZoom=oldZoom*2
不起作用: - (((
This answer到This question谷歌地圖:如何計算「雙倍」縮放級別?
是解決我的問題的好主意。
現在,問題是:如何計算「雙倍」縮放級別?
編輯
含義:
地圖正在尋找一個正方形2x2的公里,我想縮小看一個4×4公里廣場。
做newZoom=oldZoom*2
不起作用: - (((
縮放級別的每次增加一倍的規模。要縮小兩倍,請在縮放級別中添加一個。
newZoom=oldZoom-1;
世界座標反映給定的投影絕對位置,但我們需要將這些轉化爲像素座標,以確定給定的縮放等級時的「像素」。這些像素座標採用以下公式計算:
pixelCoordinate = worldCoordinate * 2 個zoomLevel
從上面的等式中,注意,每個增大縮放級別是兩次在x和y兩個方向上的大。因此,每個較高的縮放級別包含比前一級別高四倍的分辨率。例如,在縮放級別1時,地圖由4個256x256像素拼貼組成,從而產生512x512的像素空間。在縮放級別19時,地圖上的每個x和y像素可以使用介於0和256之間的值進行引用。* 219
使用SetZoom()
方法:
map.setZoom(oldZoom * 2);
還與GetZoom():
map.setZoom(map.GetZoom() * 2);
的最大縮放級別一般是19,0是最大的縮小。
值得注意的是,這並不總是可以放大到19在地圖上的每一個部分,這裏有更多關於它的信息: https://developers.google.com/maps/documentation/javascript/maxzoom
而且,您可以進一步放大的部分: http://www.wolfpil.de/v3/deep-zoom.html
感謝Slyvain,問題其實我該如何計算「新」縮放級別,我編輯了問題 –
雖然我還不確定你想達到什麼,但我做到了。這似乎有點愚蠢,但我真的不知道還有什麼可能。
代碼片段:
google.maps.event.addDomListener(zoomInButton, 'click', function() {
if (newZoom <= 19) {
oldZoom = newZoom;
newZoom = oldZoom * 2; //maptOptions.zoom is the initial oldZoom
alert("New zoom is: " + newZoom);
alert("Old zoom is: " + oldZoom);
map.setZoom(newZoom);
} else {
alert("you have reached the maximum");
}
});
// Setup the click event listener - zoomOut
google.maps.event.addDomListener(zoomOutButton, 'click', function() {
if (newZoom > 1) {
oldZoom = newZoom;
newZoom = parseInt(oldZoom/2);
alert("New zoom is: " + newZoom);
alert("Old zoom is: " + oldZoom);
map.setZoom(newZoom);
} else {
alert("you have reached the minimum");
}
});
感謝eugen,請參閱我的編輯,問題是如果我除以2縮放級別,我會得到很多很多更大的區域...不是簡單地形成2x2到4x4 .... –
您的代碼是什麼樣的?請提供證明此問題的[最小,完整,測試和可讀示例](http://stackoverflow.com/help/mcve)。 – geocodezip