2015-09-11 70 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 .... –

相关问题