How to toggle popup in react-leaflet on mouse hover
Asked Answered
N

2

6

I tried everything I found on google and I can't figure out how to trigger the popup.

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

Note: I know I can't trigger the function openPopup there its just to show where I want to implement the trigger function to toggle the popup on mouse hover.

Can someone please help, Thanks.

Nordic answered 2/8, 2018 at 21:3 Comment(0)
A
15

Leaflet Marker object is accessible via event.target property of mouseover and mouseout events, so popup could be opened/closed like this:

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

Demo

Autism answered 27/11, 2018 at 12:4 Comment(0)
D
2

Using React Leaflet v3, the solution is easier and cleaner, use Tooltip instead of Popup, e.g.:

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

In particular, I have found useful to also add sticky property for Tooltip. There are more examples for tooltips in the documentation, which covers basic tooltips, sticky tooltips or permanent tooltips, with offsets and many more.

Dorothi answered 28/1, 2021 at 11:13 Comment(2)
unfortunately there is no autoPan option for the TooltipMoltke
@Moltke you can always open a PR, react-leaflet is an active project :)Dorothi

© 2022 - 2024 — McMap. All rights reserved.