0

我有一张比宽高的地图。我注意到在某些情况下,fitBounds 方法无法正确调整缩放和中心以显示所有标记。

我已经设法在这个例子中隔离了这个问题:

http://jsbin.com/welcome/2568

在示例中,我首先尝试加载 23 个位置,您会注意到它放大了很远。我正在做的是:

//extending 23 positions doesn't really work
bounds = new google.maps.LatLngBounds ();
for (var i = 0; i < markerList.length; i++) {
    pos = new google.maps.LatLng (markerList[i]["Za"],markerList[i]["$a"])
    bounds.extend(pos);
}
window.map.fitBounds(bounds);

5 秒后,我再次运行该基本脚本,但这次不是扩展 23,而是仅扩展边界 5 次。这次地图真的缩小了!

我注意到要重现此问题,我必须设置画布 div 的宽度和高度:

<div id="map_canvas" style="width:450px;height:600px;"></div>

所以我想我的问题是:如何设置地图画布大小并成功 fitBounds() 25+ 个位置?

4

1 回答 1

0

我只是想发生的事情是我在地图配置中设置了 minZoom。

似乎如果 minZoom 低于 fitBounds() 显示所有位置所需的值,它就会默默地失败。

影响地图宽度的原因是,地图越薄,越要缩小才能显示整组位置,遇到minZoom的约束就会死掉。

我认为 5 个位置的子集会起作用的原因仅仅是因为它没有达到 minZoom。

为了解决这个问题,我删除了 minZoom 设置。

于 2012-07-23T22:40:10.073 回答