Projekt

Obecné

Profil

Stáhnout (1.13 KB) Statistiky
| Větev: | Tag: | Revize:
1
import { LatLngTuple, Marker as MarkerPOJO } from 'leaflet'
2
import { FunctionComponent, ReactNode, useMemo, useRef, useState } from 'react'
3
import { Marker } from 'react-leaflet'
4

    
5
export interface MapMarkerProps {
6
    position: LatLngTuple
7
    children?: ReactNode
8
}
9

    
10
// Custom Map Marker component
11
const MapMarker: FunctionComponent<MapMarkerProps> = ({ position, children }) => {
12
    const [currentPosition, setCurrentPosition] = useState(position)
13
    const markerRef = useRef<MarkerPOJO | null>(null)
14
    const eventHandlers = useMemo(
15
        () => ({
16
            dragend: () => {
17
                const marker = markerRef.current
18
                console.log(markerRef)
19
                if (!marker) {
20
                    return
21
                }
22
                const latlng = marker.getLatLng()
23
                setCurrentPosition([latlng.lat, latlng.lng])
24
            },
25
        }),
26
        []
27
    )
28

    
29
    return (
30
        <Marker
31
            draggable={true}
32
            position={currentPosition}
33
            eventHandlers={eventHandlers}
34
            ref={markerRef}
35
        >
36
            {children}
37
        </Marker>
38
    )
39
}
40

    
41
export default MapMarker
(2-2/9)