当用户在Map上大量平移时,我希望停止加载数据,并仅在用户停止平移时重新加载数据=视口/边界不再更改。是否有可能侦听“事件”,即Map在特定时间范围内不更改?
为了删除数据,我检查视区的变化程度,并给出一定的阈值,数据被删除。现在,当用户停止平移事件时,但仅当这在多秒钟内为真时,我才假设平移完成,我想要重新加载数据。等待几秒钟是必需的,因为在每个小平移事件之后,moveend事件都会被激发。
关于如何检查标测图视口/边界在一段时间内是否未发生变化,有何建议?
当用户在Map上大量平移时,我希望停止加载数据,并仅在用户停止平移时重新加载数据=视口/边界不再更改。是否有可能侦听“事件”,即Map在特定时间范围内不更改?
为了删除数据,我检查视区的变化程度,并给出一定的阈值,数据被删除。现在,当用户停止平移事件时,但仅当这在多秒钟内为真时,我才假设平移完成,我想要重新加载数据。等待几秒钟是必需的,因为在每个小平移事件之后,moveend事件都会被激发。
关于如何检查标测图视口/边界在一段时间内是否未发生变化,有何建议?
1条答案
按热度按时间2ul0zpep1#
对于这种情况,您可以使用“去抖动”功能。
它的名字来源于物理按钮。当你按下一个机械按钮时,你可能不会得到完美的“关闭”和“打开”信号,但它可能会在关闭和打开之间反弹很短的时间。
这和你的问题是一样的。你有两种状态:
你需要一个清晰的“关”和“开”信号。
可以这么简单:
当
moveend
事件触发时,timer
中的超时被设置。如果在2000ms内再次触发该事件,则清除计时器并启动一个新的计时器。如果没有触发新的事件,则触发超时并调用您的函数。js has a debounce function还包括取消它的选项,并且可以更好地处理
this
。