fixes waypoint move after save bug

This commit is contained in:
Christian Beutel
2024-12-05 01:17:51 +01:00
parent a39c880272
commit 8adaa52f81
3 changed files with 24 additions and 16 deletions

View File

@@ -31,6 +31,9 @@
export let showFullscreen: boolean = false; export let showFullscreen: boolean = false;
export let showTerrain: boolean = false; export let showTerrain: boolean = false;
export let fitBounds: "animate" | "instant" | "off" = "instant"; export let fitBounds: "animate" | "instant" | "off" = "instant";
export let onMarkerDragEnd:
| ((marker: M.Marker, wpId?: string) => void)
| undefined = undefined;
export let elevationProfileContainer: string | HTMLDivElement | undefined = export let elevationProfileContainer: string | HTMLDivElement | undefined =
undefined; undefined;
@@ -488,7 +491,7 @@
return; return;
} }
for (const waypoint of trails[activeTrail]?.expand.waypoints ?? []) { for (const waypoint of trails[activeTrail]?.expand.waypoints ?? []) {
const marker = createMarkerFromWaypoint(waypoint); const marker = createMarkerFromWaypoint(waypoint, onMarkerDragEnd);
marker.addTo(map); marker.addTo(map);
markers.push(marker); markers.push(marker);
} }

View File

@@ -23,7 +23,7 @@ export class FontawesomeMarker extends M.Marker {
} }
} }
export function createMarkerFromWaypoint(waypoint: Waypoint, onDragEnd?: (marker: M.Marker) => void): FontawesomeMarker { export function createMarkerFromWaypoint(waypoint: Waypoint, onDragEnd?: (marker: M.Marker, wpId?: string) => void): FontawesomeMarker {
const marker = new FontawesomeMarker({ const marker = new FontawesomeMarker({
icon: `fa fa-${waypoint.icon}`, icon: `fa fa-${waypoint.icon}`,
}, { }, {
@@ -44,7 +44,7 @@ export function createMarkerFromWaypoint(waypoint: Waypoint, onDragEnd?: (marker
.setPopup(popup) .setPopup(popup)
if (onDragEnd) { if (onDragEnd) {
marker.on("dragend", () => onDragEnd(marker)); marker.on("dragend", () => onDragEnd(marker, waypoint.id,));
} }
return marker; return marker;
@@ -83,7 +83,7 @@ export function createPopupFromTrail(trail: Trail) {
const thumbnail = trail.photos.length const thumbnail = trail.photos.length
? getFileURL(trail, trail.photos[trail.thumbnail]) ? getFileURL(trail, trail.photos[trail.thumbnail])
: "/imgs/default_thumbnail.webp"; : "/imgs/default_thumbnail.webp";
const popup = new M.Popup({maxWidth: "320px"}); const popup = new M.Popup({ maxWidth: "320px" });
popup.setHTML( popup.setHTML(
`<a href="/map/trail/${trail.id}" data-sveltekit-preload-data="off"> `<a href="/map/trail/${trail.id}" data-sveltekit-preload-data="off">
<li class="flex items-center gap-4 cursor-pointer text-content max-w-80"> <li class="flex items-center gap-4 cursor-pointer text-content max-w-80">

View File

@@ -387,23 +387,26 @@
savedWaypoint.id = cryptoRandomString({ length: 15 }); savedWaypoint.id = cryptoRandomString({ length: 15 });
$form.expand.waypoints = [...$form.expand.waypoints, savedWaypoint]; $form.expand.waypoints = [...$form.expand.waypoints, savedWaypoint];
} }
const marker = createMarkerFromWaypoint(savedWaypoint, (event) => { const marker = createMarkerFromWaypoint(savedWaypoint, moveMarker);
var marker = event;
var position = marker.getLngLat();
const editableWaypointIndex = $form.expand.waypoints.findIndex(
(w) => w.id == savedWaypoint.id,
);
const editableWaypoint =
$form.expand.waypoints[editableWaypointIndex];
editableWaypoint!.lat = position.lat;
editableWaypoint!.lon = position.lng;
$form.expand.waypoints = [...$form.expand.waypoints];
});
marker.addTo(map); marker.addTo(map);
savedWaypoint.marker = marker; savedWaypoint.marker = marker;
} }
function moveMarker(marker: M.Marker, wpId?: string) {
const position = marker.getLngLat();
const editableWaypointIndex = $form.expand.waypoints.findIndex(
(w) => w.id == wpId,
);
const editableWaypoint = $form.expand.waypoints[editableWaypointIndex];
if (!editableWaypoint) {
return;
}
editableWaypoint.lat = position.lat;
editableWaypoint.lon = position.lng;
$form.expand.waypoints = [...$form.expand.waypoints];
}
function beforeSummitLogModalOpen() { function beforeSummitLogModalOpen() {
summitLog.set(new SummitLog(new Date().toISOString().split("T")[0])); summitLog.set(new SummitLog(new Date().toISOString().split("T")[0]));
openSummitLogModal(); openSummitLogModal();
@@ -903,6 +906,8 @@
<MapWithElevationMaplibre <MapWithElevationMaplibre
trails={mapTrail} trails={mapTrail}
drawing={drawingActive} drawing={drawingActive}
showTerrain={true}
onMarkerDragEnd={moveMarker}
bind:map bind:map
on:click={(e) => handleMapClick(e.detail)} on:click={(e) => handleMapClick(e.detail)}
></MapWithElevationMaplibre> ></MapWithElevationMaplibre>