【问题标题】:Is there a callback after map.fitBounds?map.fitBounds 之后有回调吗?
【发布时间】:2012-05-31 14:21:23
【问题描述】:

我的代码:

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

但我看到map.setZoom(11); 可以在.fitBounds 结束之前调用。所以结果不是我想要的。

有没有办法在.fitBound 完成时管理回调?

【问题讨论】:

  • 为什么要使用 setZoom? fitBounds 将自动调整视口,包括缩放级别以适合传递给方法的边界对象。没有可用的回调。您可以使用bounds_changed 事件并为此包含一个事件侦听器,但只要用户平移或缩放,该事件就会触发。最好的办法是使用 fitBounds。
  • 是的!但如果只找到 bound,则缩放级别较高。我要低于这个...
  • 我不知道你的应用是如何设计的,但你什么时候无法确定边界?

标签: javascript google-maps google-maps-api-3


【解决方案1】:

试试这个:

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

【讨论】:

  • @markzzz,如果您仍然对此感到头疼,“idle”事件将在 fitBounds 方法完成调整地图后触发。所以,fitBounds 没有回调,但 idle 有,并且 idle 总是在任何地图移动结束后触发。
  • 谢谢!我遇到了完全相同的问题,想知道在 map.fitBounds() 之后是否可以进行这样的回调。这里你的addListenerOnce()和'idle'正是我需要的解决方案。另外注意,我们也可以使用常规的addListener(),然后在回调操作完成后用removeListener()将其删除。
猜你喜欢
  • 2011-03-31
  • 2021-12-06
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
相关资源
最近更新 更多