React Map GL have a similar example in their docs:
https://visgl.github.io/react-map-gl/examples/draggable-markers
On that page you'll find a link to "View Code", and in App.js you'll see the logic.
React-Mapbox-GL works in a similar way, and have the same properties you can pass functions to: onDragStart
, onDrag
, onDragEnd
.
You'll need to set up your marker in a similar way to them:
const onMarkerDragStart = useCallback(event => {
logEvents(_events => ({..._events, onDragStart: event.lngLat}));
}, []);
const onMarkerDrag = useCallback(event => {
logEvents(_events => ({..._events, onDrag: event.lngLat}));
}, []);
const onMarkerDragEnd = useCallback(event => {
logEvents(_events => ({..._events, onDragEnd: event.lngLat}));
setMarker({
longitude: event.lngLat[0],
latitude: event.lngLat[1]
});
}, []);
<Marker
longitude={marker.longitude}
latitude={marker.latitude}
offsetTop={-20}
offsetLeft={-10}
draggable
onDragStart={onMarkerDragStart}
onDrag={onMarkerDrag}
onDragEnd={onMarkerDragEnd}
>