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