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