map.fitBounds之后是否有回调函数?

18

我的代码:

if(!bounds.isEmpty()) {
    map.fitBounds(bounds);
    if (map.getZoom() > 11) {
        map.setZoom(11);
    }   
}  

我发现在调用 .fitBounds 之前可能会调用 map.setZoom(11);。导致结果与我的期望不符。

有没有一种方法可以在 .fitBounds 完成后管理回调函数?


为什么要使用setZoom?fitBounds会自动调整视口,包括缩放级别以适应传递给该方法的边界对象。没有可用的回调。您可以使用bounds_changed事件并为其包含事件侦听器,但每当用户平移或缩放时,事件都会触发。最好使用fitBounds。 - andresf
2
是的!但如果只找到一个边界,缩放级别就会很高。我想要比这个更低的级别... - markzzz
我不知道你的应用程序是如何设计的,但是什么情况下你无法确定边界? - andresf
1个回答

35

试试这个:

 if(!bounds.isEmpty()) {
    map.fitBounds(bounds);
    google.maps.event.addListenerOnce(map, 'idle', function() {
        if (map.getZoom() > 11) {
            map.setZoom(11);
        }  
    });
} 

6
如果你仍然对此感到困惑,那么"空闲"事件将在fitBounds方法调整地图后触发。因此,fitBounds没有回调函数,但是idle有,而且它始终会在任何地图移动结束后触发。 - chuck w
1
谢谢!我遇到了完全相同的问题,不知道在map.fitBounds()之后是否可能有这样的回调。在这里,您的addListenerOnce()和'idle'正是我需要的解决方案。另外需要注意的是,我们还可以使用常规的addListener(),然后在回调操作完成后使用removeListener()将其删除。 - Panini Luncher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接