improved OSM Element selection

This commit is contained in:
PxlLoewe
2025-06-03 15:50:20 -07:00
parent 56856664a7
commit 0f50bf1db8
10 changed files with 118 additions and 154 deletions

View File

@@ -11,7 +11,14 @@ import { Popup, useMap } from "react-leaflet";
export const ContextMenu = () => {
const map = useMap();
const { contextMenu, setContextMenu, setSearchElements, setSearchPopup } = useMapStore();
const {
contextMenu,
searchElements,
setContextMenu,
setSearchElements,
setSearchPopup,
toggleSearchElementSelection,
} = useMapStore();
const { missionFormValues, setMissionFormValues, setOpen, isOpen } = usePannelStore(
(state) => state,
);
@@ -64,7 +71,9 @@ export const ContextMenu = () => {
const parsed: OSMWay[] = data.elements
.filter((e: any) => e.type === "way")
.map((e: any) => {
const elementInMap = searchElements.find((el) => el.wayID === e.id);
return {
isSelected: elementInMap?.isSelected ?? false,
wayID: e.id,
nodes: e.nodes.map((nodeId: string) => {
const node = data.elements.find((element: any) => element.id === nodeId);
@@ -125,12 +134,15 @@ export const ContextMenu = () => {
nodeWay.push([node.lat, node.lon]),
);
if (closestToContext) {
toggleSearchElementSelection(closestToContext.wayID);
}
setMissionFormValues({
...parsed,
state: "draft",
addressLat: contextMenu.lat,
addressLng: contextMenu.lng,
addressOSMways: [closestToContext],
});
map.setView([contextMenu.lat, contextMenu.lng], 18, {