2015-09-11 102 views
0

This answerThis question谷歌地圖:如何計算「雙倍」縮放級別?

是解決我的問題的好主意。

現在,問題是:如何計算「雙倍」縮放級別?


編輯

含義:

地圖正在尋找一個正方形2x2的公里,我想縮小看一個4×4公里廣場。


newZoom=oldZoom*2不起作用: - (((

+0

您的代碼是什麼樣的?請提供證明此問題的[最小,完整,測試和可讀示例](http://stackoverflow.com/help/mcve)。 – geocodezip

回答

3

縮放級別的每次增加一倍的規模。要縮小兩倍,請在縮放級別中添加一個。

newZoom=oldZoom-1; 

from the documentation

世界座標反映給定的投影絕對位置,但我們需要將這些轉化爲像素座標,以確定給定的縮放等級時的「像素」。這些像素座標採用以下公式計算:

pixelCoordinate = worldCoordinate * 2 個zoomLevel

從上面的等式中,注意,每個增大縮放級別是兩次在x和y兩個方向上的大。因此,每個較高的縮放級別包含比前一級別高四倍的分辨率。例如,在縮放級別1時,地圖由4個256x256像素拼貼組成,從而產生512x512的像素空間。在縮放級別19時,地圖上的每個x和y像素可以使用介於0和256之間的值進行引用。* 219

0

使用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

+0

感謝Slyvain,問題其實我該如何計算「新」縮放級別,我編輯了問題 –

0

雖然我還不確定你想達到什麼,但我做到了。這似乎有點愚蠢,但我真的不知道還有什麼可能。

代碼片段:

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"); 


     } 

    }); 

小提琴網址:http://jsfiddle.net/eugensunic/jptLfhc8/121/

+0

感謝eugen,請參閱我的編輯,問題是如果我除以2縮放級別,我會得到很多很多更大的區域...不是簡單地形成2x2到4x4 .... –

相關問題