在 Leaflet 中,fitBounds 函数有回调函数吗?

8
我有两种在地图上标记位置的搜索方式。一种基于输入表单的搜索查询触发,另一种基于moveend事件触发(即“在地图移动时重新搜索”)。结果数据不同;前者使用半径,后者限制在范围内。
问题是,在基于查询的搜索中,我希望将地图适配到返回的标记上。因此,我使用fitBounds()实现这一点,它在内部委托并动画化在标记周围找到最佳边界的平移。
在动画结束时,它会触发一个moveend事件,触发我的其他类型的搜索并重置我的结果,这是我不想要的行为。
为了解决问题,我可以使用setTimeout和已知的持续时间来进行fitBounds()的平移选项。通过这种方式,我可以关闭moveend的事件侦听器,然后进行需要0.25秒的fitBounds(),再使用setTimeout 0.25秒(实际上稍长一些)的回调来添加moveend事件侦听器。
这个方法可行,但如果fitBounds或平移本身有一个事件或回调,那就更加方便了。你能想到更好的解决方案吗?

你能提供受影响的代码吗? - Alberto Alexander Rodriguez
你的设置也让人困惑。发布相关代码会对此有很大帮助。也许 once 监听器对你有用? - iH8
2个回答

1
您可以使用moveend + zoomend事件来捕获地图适配的结束。
因为它们中至少有一个在fitBounds执行结束时被调用。

0
如果您想检测地图上的“拖动”事件,我认为最好使用dragend而不是moveend

只需将第一句话作为注释。它不应该是答案的一部分。 - Jamal
使用dragend而不是moveend是一个很棒的想法,而且基本上可以工作。问题在于我们希望在缩放改变时重新进行搜索。zoomend仍然由fitBounds触发,而dragend则不会。 - maletor

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