From 767f7a01979450fc712dc6d3b5e75c971ae9a563 Mon Sep 17 00:00:00 2001 From: Anton Tranelis Date: Sat, 13 Sep 2025 10:48:49 +0200 Subject: [PATCH] added navigation functionality --- .../ItemPopupComponents/HeaderView.tsx | 76 ++- lib/src/assets/navigation/OSM.svg | 481 ++++++++++++++++++ lib/src/assets/navigation/apple-maps.svg | 1 + lib/src/assets/navigation/googlemaps.svg | 1 + 4 files changed, 547 insertions(+), 12 deletions(-) create mode 100644 lib/src/assets/navigation/OSM.svg create mode 100644 lib/src/assets/navigation/apple-maps.svg create mode 100644 lib/src/assets/navigation/googlemaps.svg diff --git a/lib/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx b/lib/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx index 806499b0..2531be3a 100644 --- a/lib/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx +++ b/lib/src/Components/Map/Subcomponents/ItemPopupComponents/HeaderView.tsx @@ -21,6 +21,9 @@ import { useNavigate } from 'react-router-dom' import { toast } from 'react-toastify' import ChevronSVG from '#assets/chevron.svg' +import AppleMapsSVG from '#assets/navigation/apple-maps.svg' +import GoogleMapsSVG from '#assets/navigation/googlemaps.svg' +import OpenStreetMapSVG from '#assets/navigation/OSM.svg' import ClipboardSVG from '#assets/share/clipboard.svg' import FacebookSVG from '#assets/share/facebook.svg' import LinkedinSVG from '#assets/share/linkedin.svg' @@ -148,6 +151,30 @@ export function HeaderView({ .replace('{title}', encodeURIComponent(shareTitle)) } + const routingServices = [ + { + name: 'Google Maps', + url: item?.position?.coordinates + ? `https://www.google.com/maps/dir/?api=1&destination=${item.position.coordinates[1]},${item.position.coordinates[0]}` + : '', + icon: Google Maps, + }, + { + name: 'Apple Maps', + url: item?.position?.coordinates + ? `https://maps.apple.com/?daddr=${item.position.coordinates[1]},${item.position.coordinates[0]}` + : '', + icon: Apple Maps, + }, + { + name: 'OpenStreetMap', + url: item?.position?.coordinates + ? `https://www.openstreetmap.org/directions?to=${item.position.coordinates[1]},${item.position.coordinates[0]}` + : '', + icon: OpenStreetMap, + }, + ] + const openDeleteModal = async (event: React.MouseEvent) => { setModalOpen(true) event.stopPropagation() @@ -156,7 +183,7 @@ export function HeaderView({ return ( <>
-
+
{avatar && (
@@ -208,11 +235,8 @@ export function HeaderView({ (hasUserPermission(api?.collectionName!, 'delete', item) || hasUserPermission(api?.collectionName!, 'update', item)) && !hideMenu && ( -
-