谷歌地图:如何计算缩放级别的"double"?



这个问题的答案

是解决我的问题的好主意。

现在,问题是:我如何计算"加倍"缩放级别?


编辑

的意义:

地图上看的是一个正方形2x2 km,我想缩小看一个4x4 km正方形。


newZoom=oldZoom*2不工作:-((

)

缩放级别每增加一倍,比例就增加一倍。要缩小倍数为2,请在缩放级别上加1。

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

虽然我还不确定你想要实现什么,但我做了这个。这似乎有点傻,但我真的不知道还能是什么。

代码片段:

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

        }
    });

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

最新更新