import { useMapStore } from "_store/mapStore"; import { Marker as LMarker } from "leaflet"; import { Ref, use, useEffect, useRef } from "react"; import { Marker, Polygon, Polyline, Popup } from "react-leaflet"; import L from "leaflet"; export const SearchElements = () => { const { searchElements, searchPopup, setSearchPopup, setPopup } = useMapStore(); const poppupRef = useRef(null); useEffect(() => { if (searchPopup?.isOpen) { poppupRef.current?.openPopup(); } else { poppupRef.current?.closePopup(); } }, [searchPopup]); const SearchElement = ({ element, }: { element: (typeof searchElements)[1]; }) => { const ref = useRef(null); useEffect(() => { if (ref.current) { ref.current.on("click", () => { const center = ref.current.getBounds().getCenter(); setSearchPopup({ isOpen: true, lat: center.lat, lng: center.lng, elementId: element.id, }); setPopup(null); }); } }, []); return ( [node.lat, node.lon])} color={searchPopup?.elementId === element.id ? "#ff4500" : "#46b7a3"} ref={ref} /> ); }; console.log("searchPopup", searchPopup); const searchPopupElement = searchElements.find( (element) => element.id === searchPopup?.elementId, ); console.log("searchPopupElement", searchPopupElement); return ( <> {searchElements.map((element) => { return ; })} {searchPopup && (
OSM-Element
)} ); };