1

在我的传单地图中,单击标记会打开其弹出窗口并立即将其关闭

地图事件的记录表明,popupopen单击标记触发了 2 个事件,而不是仅触发一个事件,popupopen然后popupclose是相同的标记。

这种行为是半一致的:

  • 当您只单击标记而不拖动鼠标时,就会发生打开+关闭。但是,如果您单击标记并将鼠标移动几个像素(< ~30px),则弹出窗口现在可以正常打开(并且仅popupopen触发一个事件,而不popupclose跟随它)。
  • Open+close 仅​​在 Mac 和 iPhone 上的 Safari 中可靠地发生。它有时也会在 Mac 上的 Chrome 中发生,并且当它发生时 - 它在测试会话期间是一致的。
  • 这只发生在我的 2 个地图页面之一中,它们使用一个通用地图组件(一个用于移动设备,一个用于桌面)。显然这是开始调试的好地方,但是尽管调试了很多小时,我还是无法缩小它们之间的相关差异。

我调试了popupclose事件的来源,惊讶地发现里面的_openPopup函数src/layer/Popup.js:473被调用了两次。此方法最终会调用this.closePopup()第二次调用。

请注意确定它是否相关,但是查看click地图上的事件,我在 Safari 中看到每次鼠标单击都有两个这样的事件,它们都有一个原始事件类型MouseEvent。在 Chrome 中,当一切正常时,只有一个原始事件为PointerEvent.

我怀疑这可能与#7255有关,但不幸的是,建议的设置tap为 false 的解决方法没有帮助。

任何想法可能是什么原因以及如何解决它?

通过 react-leaflet 3.2.1 使用 Leaflet 1.7.1。

4

1 回答 1

0

更新:

事实证明,设置tap为 false 实际上确实解决了这个问题!

不知道我以前是怎么错过的。绝对是我最近遇到的最令人沮丧的第三方问题之一!

于 2021-10-14T20:27:45.407 回答