关于javascript:Google地图中的浮点缩放和setZoom

Floating point zoom and setZoom in Google Maps

Google Maps文档说.zoom和setZoom()需要数字。一切似乎都指向这些数字是整数。但是,今天我给了后者一个浮点值,它的工作原理是……。

1
2
3
4
5
6
7
8
9
10
var MAP;

function initialize() {
    MAP = new google.maps.Map(document.getElementById('map-canvas'),
    {
        zoom : 5,
        center : new google.maps.LatLng(-25.610111, 134.354806),
        mapTypeId : google.maps.MapTypeId.ROADMAP
    });
}

使用上面的代码,我可以使调试器访问MAP对象。

现在以澳大利亚大陆为例,如果放大4倍,我会得到东南亚,巴布亚新几内亚和新西兰的所有地区,以及中心的大南部地区。如果放大5倍,我会到达大陆,但没有塔斯马尼亚岛-绝对是一件"坏事"。交互式使用MAP.setZoom()发现的最佳缩放为4.3。很棒,除了该缩放没有其他作用。当我尝试绘制多边形或热图时,地图会抛出诸如

1
GET https://khms0.google.com/kh?v=178&hl=en-US&x=0&y=0&z=0.2999999999999998&token=77820 404 (OK)

我认为上面的" z"值是导致404的原因-khms0.google.com期望的不是浮点" z"值。

那么,如何获得一个更适当缩放的家园,其中包含多边形,标记,热图,KML图层以及您呢?

顺便说一句,我确实尝试过使用fitBounds(),但是除了将地图围绕新的中心移动之外,它对于视口的可见内容没有任何更改。

1
2
3
4
var se = new google.maps.LatLng(-44.999315, 156.971343); // Tasman Sea
var nw = new google.maps.LatLng(-9.063496, 106.346343); // Indian Ocean
var bs = new google.maps.LatLngBounds(nw,se);
MAP.fitBounds(bs);


缩放级别必须是整数(至少目前是这样)。 它曾经被记录在案,但我看不到它在任何地方都有明确说明。

如果整数缩放级别对您不起作用,请更改显示地图的的大小,或者制作具有不同比例的自定义图块。