【问题标题】:Within leaflet, does fitBounds have a callback?在传单中,fitBounds 是否有回调?
【发布时间】:2016-05-05 04:57:28
【问题描述】:

我有两种类型的搜索来在地图上放置标记。一个搜索基于来自输入表单的搜索查询触发,另一个触发moveend 事件(即“重做地图移动搜索”)。结果数据不一样;前者使用半径,后者限制在范围内)。

问题在于,通过基于查询的搜索,我想将地图与返回的标记相匹配。因此,我为此使用fitBounds(),它在内部代表并将平移动画到标记周围的最佳边界。

在动画结束时,它会触发 moveend 事件,触发我的其他类型的搜索并重置我的结果,这是我不想要的行为。

为了解决这个问题,我可以使用setTimeoutfitBounds() 上的平移选项的已知持续时间。有了这个,我可以关闭我的事件监听器moveend,然后fitBounds 需要0.25 秒,然后setTimeout 0.25 秒(实际上,更长一点),并通过回调添加moveend听众回来了。

这可行,但如果 fitBounds 或 panning 本身有一个事件或回调,它会更实用。你能想出更好的解决方案吗?

【问题讨论】:

  • 能把受影响的代码放上去吗?
  • 也对您的设置感到困惑。在这里发布相关代码会有很长的路要走。也许once 监听器对你有用?

标签: javascript leaflet mapbox


【解决方案1】:

您可以使用 moveend + zoomend 事件来捕捉地图拟合的结束。
因为至少有一个在fitBounds执行结束时调用了

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 把第一句作为评论就行了。它不应该是答案的一部分。
    • 使用dragend 代替moveend 是一个绝妙的想法,或多或少都有效。问题是我们想在缩放变化时重做搜索。 zoomend 仍然被 fitBounds 解雇,而 dragend 不是。
    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2016-10-29
    • 2016-06-16
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多