【发布时间】:2016-05-05 04:57:28
【问题描述】:
我有两种类型的搜索来在地图上放置标记。一个搜索基于来自输入表单的搜索查询触发,另一个触发moveend 事件(即“重做地图移动搜索”)。结果数据不一样;前者使用半径,后者限制在范围内)。
问题在于,通过基于查询的搜索,我想将地图与返回的标记相匹配。因此,我为此使用fitBounds(),它在内部代表并将平移动画到标记周围的最佳边界。
在动画结束时,它会触发 moveend 事件,触发我的其他类型的搜索并重置我的结果,这是我不想要的行为。
为了解决这个问题,我可以使用setTimeout 和fitBounds() 上的平移选项的已知持续时间。有了这个,我可以关闭我的事件监听器moveend,然后fitBounds 需要0.25 秒,然后setTimeout 0.25 秒(实际上,更长一点),并通过回调添加moveend听众回来了。
这可行,但如果 fitBounds 或 panning 本身有一个事件或回调,它会更实用。你能想出更好的解决方案吗?
【问题讨论】:
-
能把受影响的代码放上去吗?
-
也对您的设置感到困惑。在这里发布相关代码会有很长的路要走。也许
once监听器对你有用?
标签: javascript leaflet mapbox