Google Maps API v3:可以在fitBounds之后设置缩放吗?

我有一套要在嵌入式Google地图(API v3)上绘制的点。 我希望边界能容纳所有点,除非缩放级别太低(即缩小得太多)。 我的方法是这样的:

var bounds = new google.maps.LatLngBounds();

// extend bounds with each point

gmap.fitBounds(bounds); 
gmap.setZoom( Math.max(6, gmap.getZoom()) );

这不起作用。 如果直接在fitBounds之后调用,最后一行“gmap.setZoom()”不会更改地图的缩放级别。

有没有办法让一个边界的缩放级别没有应用到地图? 其他想法来解决这个问题?


编辑 :请参阅下面的Matt Diamond的评论。

得到它了! 尝试这个:

map.fitBounds(bounds);
var listener = google.maps.event.addListener(map, "idle", function() { 
  if (map.getZoom() > 16) map.setZoom(16); 
  google.maps.event.removeListener(listener); 
});

修改您的需求。


我在其中一个应用中解决了类似的问题。 我对你对问题的描述有点困惑,但我认为你有同样的目标......

在我的应用程序中,我想绘制一个或多个标记,并确保地图显示它们全部。 问题是,如果我完全依赖fitBounds方法,那么当有一个点时放大级别会被最大化 - 这是不好的。

解决方法是在有多个点时使用fitBounds,而只有一个点时使用setCenter + setZoom。

if (pointCount > 1) {
  map.fitBounds(mapBounds);
}
else if (pointCount == 1) {
  map.setCenter(mapBounds.getCenter());
  map.setZoom(14);
}

我多次访问此页面以获取答案,尽管所有现有答案都非常有用,但它们并没有完全解决我的问题。

google.maps.event.addListenerOnce(googleMap, 'zoom_changed', function() {
    var oldZoom = googleMap.getZoom();
    googleMap.setZoom(oldZoom - 1); //Or whatever
});

基本上我发现'zoom_changed'事件阻止了地图的UI从“跳过”,这发生在我等待'空闲'事件时发生。

希望这可以帮助别人!

链接地址: http://www.djcxy.com/p/14303.html

上一篇: Google Maps API v3: Can I setZoom after fitBounds?

下一篇: How to disable mouse scroll wheel scaling with Google Maps API