Skip to main content
Version: v3.x

Events

import { useState } from 'react'
import {
MapContainer,
Marker,
Popup,
TileLayer,
useMapEvents,
} from 'react-leaflet'

function LocationMarker() {
const [position, setPosition] = useState(null)
const map = useMapEvents({
click() {
map.locate()
},
locationfound(e) {
setPosition(e.latlng)
map.flyTo(e.latlng, map.getZoom())
},
})

return position === null ? null : (
<Marker position={position}>
<Popup>You are here</Popup>
</Marker>
)
}

function EventsExample() {
return (
<MapContainer center={{ lat: 51.505, lng: -0.09 }} zoom={13}>
<TileLayer
attribution='&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<LocationMarker />
</MapContainer>
)
}