如何在鼠标悬停时在 react-leaflet 中切换弹出窗口

How to toggle popup in react-leaflet on mouse hover

我尝试了在 google 上找到的所有内容,但我不知道如何触发弹出窗口。

<Marker
  position={this.props.position}
  onMouseOver={() => { openPopup() }}
  onMouseOut={() => { closePopup() }}
>
  <Popup>
     "HI"
  </Popup>
</Marker>

注意:我知道我无法在那里触发函数 openPopup,它只是为了显示我想在何处实现触发函数以在鼠标悬停时切换弹出窗口。

有人可以帮忙吗,谢谢。

Leaflet Marker object 可通过 mouseovermouseout 事件的 event.target 属性 访问,因此弹出窗口可以是 opened/closed,如下所示:

<Marker
    position={position}
    onMouseOver={(e) => {
      e.target.openPopup();
    }}
    onMouseOut={(e) => {
      e.target.closePopup();
    }}
  >
    <Popup>Sydney</Popup>
  </Marker>

Demo

使用 React Leaflet v3,解决方案更简单、更清晰,使用 Tooltip 而不是 Popup,例如:

<Marker position={this.props.position}>
  <Tooltip>I appear on mouse over</Tooltip>
</Marker>

特别是,我发现为 Tooltip 添加 sticky 属性 也很有用。 documentation 中有更多工具提示示例,涵盖基本工具提示、粘性工具提示或永久工具提示,带有偏移量等等。