diff --git a/frontend/search/components/ngo/LeafletMap.tsx b/frontend/search/components/ngo/LeafletMap.tsx new file mode 100644 index 0000000..ccd5796 --- /dev/null +++ b/frontend/search/components/ngo/LeafletMap.tsx @@ -0,0 +1,83 @@ +import React, {useEffect, useState} from 'react' +import 'leaflet' +import 'leaflet/dist/leaflet.css' + +import { + LayersControl, + MapContainer, + Marker, + Polygon, + Polyline, + Popup, + TileLayer, + useMap, + useMapEvent +} from '@monsonjeremy/react-leaflet' +import * as L from 'leaflet' +type LeafletMapProps = {onBoundsChange?: (bounds: L.LatLngBounds) => void} + +const BoundsChangeListener = ({onBoundsChange}: {onBoundsChange?: (bounds: L.LatLngBounds) => void}) => { + const map = useMap() + const updateBounds = () => { + onBoundsChange && onBoundsChange( + map.getBounds() + ) + } + useEffect(() => { + updateBounds() + }, [map]) + + useMapEvent('moveend', (e) => updateBounds()) + useMapEvent('load', (e) => updateBounds()) + return null +} +const LeafletMap = ({onBoundsChange}: LeafletMapProps) => { + const [zoom, setZoom] = useState( 8 ) + const [position, setPosition] = useState( { + lat: 51.0833, + lng: 13.73126, + } ) + + return ( + <> + + + + + + + + + + + + + + + + + + ) +} + +export default LeafletMap diff --git a/frontend/search/components/ngo/LeafletMapWithoutSSR.tsx b/frontend/search/components/ngo/LeafletMapWithoutSSR.tsx new file mode 100644 index 0000000..add317c --- /dev/null +++ b/frontend/search/components/ngo/LeafletMapWithoutSSR.tsx @@ -0,0 +1,10 @@ +import dynamic from "next/dynamic" + +/** The component uses Leaflet, which is using the `windows` object. + * This is not available with SSR (during development). + * Solution: + * https://nextjs.org/docs/advanced-features/dynamic-import#with-no-ssr + **/ +export const LeafletMapWithoutSSR = dynamic(() => import("./LeafletMap"), { + ssr: false + })