使用Maps API v3.根据Google文档,如果地图容器以编程方式调整大小,则必须手动触发地图大小调整事件.
调整大小事件:当div更改大小时,开发人员应在地图上触发此事件.
所以我正在使用:
google.maps.event.trigger(map,'resize');
我应该使用哪个监听器根据调整大小的映射容器的新边界来更新我的标记?
google.maps.event.addListener(map,'resize',function() { console.log(map.getBounds()); });
以上仍然显示了调整大小前的范围.
解决方法
每当地图重新调整大小时,界限都将会变幻.因此,您可以使用bounds_changed事件:
google.maps.event.addListener(map,'bounds_changed',function() { var bounds = map.getBounds(); });
它有以下描述:
This event is fired when the viewport bounds have changed.
如果您只希望在映射调整大小后调用事件,则可以使用布尔变量来跟踪地图是否刚刚调整大小,如下所示:
var mapResized = false;
然后,每当触发resize功能时,可以将mapResized变量设置为true.您可以使用以下功能:
function resizeMap(map) { google.maps.event.trigger(map,'resize'); mapResized = true; }
然后,在bounds_changed事件中,只有mapResized为true时,才能响应调用,然后将mapResized设置为false:
google.maps.event.addListener(map,function() { if (mapResized) { // react here } mapResized = false; }