beherbergung/frontend/search/components/ngo/LeafletStore.tsx

25 lines
671 B
TypeScript
Raw Normal View History

2022-03-14 19:22:17 +01:00
import create from 'zustand'
2022-03-14 21:08:55 +01:00
import * as L from 'leaflet'
2022-03-14 19:22:17 +01:00
2022-03-14 21:08:55 +01:00
export interface Marker {
id: string,
2022-03-14 19:22:17 +01:00
lat: number,
lng: number,
radius: number, // in meters
content: string // TODO react-child?
2022-03-14 21:08:55 +01:00
}
2022-03-14 19:22:17 +01:00
export interface LeafletState {
2022-03-14 21:08:55 +01:00
center: L.LatLng|null // at the moment not used for setting the maps center, but only for distance calculation onBoundsChange
setCenter: (center: L.LatLng) => void
markers: Marker[]
setMarkers: (markers: Marker[]) => void
2022-03-14 19:22:17 +01:00
}
export const useLeafletStore = create<LeafletState>(set => ({
2022-03-14 21:08:55 +01:00
center: null,
setCenter: center => set( _orig => ({center}) ),
2022-03-14 19:22:17 +01:00
markers: [],
2022-03-14 21:08:55 +01:00
setMarkers: markers => set( _orig => ({markers}) )
2022-03-14 19:22:17 +01:00
}))