Leaflet 放大过多时不会触发传单JS zoomend事件

Leaflet 放大过多时不会触发传单JS zoomend事件,leaflet,Leaflet,我使用zoomlevel 15初始化地图: map.setView(latlng, 15) 稍后,当用户与触发此功能的按钮交互时: const zoomInAndTrigger = () => { map.setView(latlng, 18) map.once("zoomend", () => { // some triggers fired }) } zoomInAndTrigger() // on button click 这个很好用。 嗯,除非用户

我使用zoomlevel 15初始化地图:

map.setView(latlng, 15)
稍后,当用户与触发此功能的按钮交互时:

const zoomInAndTrigger = () => {
  map.setView(latlng, 18)

  map.once("zoomend", () => {
    // some triggers fired
  })
}

zoomInAndTrigger() // on button click
这个很好用。 嗯,除非用户在触发zoomInAndTrigger之前将地图缩小到最初的15个zoomlevel以上,否则根本不会触发“ZoomMend”


我不知道为什么。

在执行map setView之前,您可能只需要连接zoomend事件侦听器


默认情况下,当缩放级别间隙过大或新位置过远时,传单setView将立即重置视图,而不是设置视图更改的动画。然后,在视图已更改且未触发后,将连接您的侦听器。

当从级别(例如14到18)缩放时,默认情况下不会播放缩放动画-地图的ZoomanimationReshold的默认值为4,并且:

如果缩放差异超过此值,则不会设置缩放动画

然后,整个缩放交互会在map.oncezoomend…之前立即执行。。。行已执行

根据经验,在运行触发该事件的代码之前,应该始终附加事件处理程序,无论您是否只观察到该事件在一段时间后发生。它会让你防御一些敌人

另一方面,您可以将一组数据传递给呼叫;可以强制启用或禁用任何给定缩放操作的缩放动画