From 930feda4d6aa9a9b495e50b630f461f8d077d637 Mon Sep 17 00:00:00 2001 From: Christian Beutel <> Date: Sun, 5 May 2024 12:31:08 +0200 Subject: [PATCH] adds gpx rte tag to maps --- web/src/lib/components/trail/trail_info_panel.svelte | 4 ++-- web/src/lib/i18n/locales/nl.json | 4 ++-- web/src/lib/util/gpx_util.ts | 12 +++++++----- web/src/lib/vendor/leaflet-elevation/src/control.js | 4 ++-- web/src/routes/lists/+page.svelte | 2 +- web/src/routes/map/+page.svelte | 2 +- .../vendor/leaflet-elevation/libs/leaflet-hotline.js | 1 - 7 files changed, 15 insertions(+), 14 deletions(-) diff --git a/web/src/lib/components/trail/trail_info_panel.svelte b/web/src/lib/components/trail/trail_info_panel.svelte index 8c295c07..76293a94 100644 --- a/web/src/lib/components/trail/trail_info_panel.svelte +++ b/web/src/lib/components/trail/trail_info_panel.svelte @@ -79,7 +79,7 @@ weight: 5, }, gpx_options: { - parseElements: ["track"] as any, + parseElements: ["track", "route"] as any, }, marker_options: { startIcon: L.AwesomeMarkers.icon({ @@ -93,7 +93,7 @@ shadowUrl: "", }, }) - .on("loaded", function (e) { + .on("loaded", function (e) { map.fitBounds(e.target.getBounds()); }) .addTo(map); diff --git a/web/src/lib/i18n/locales/nl.json b/web/src/lib/i18n/locales/nl.json index df4e7787..8a31d1c3 100644 --- a/web/src/lib/i18n/locales/nl.json +++ b/web/src/lib/i18n/locales/nl.json @@ -79,7 +79,7 @@ "language": "Taal", "latitude": "Breedtegraad", "license": "Licentie", - "list": "{n, plural, =1 {lijst} other {lijsten}}", + "list": "{n, plural, =1 {Lijst} other {Lijsten}}", "location": "Locatie", "login": "Inloggen", "logout": "Uitloggen", @@ -135,7 +135,7 @@ "stop-drawing": "", "summit-book": "Bergtopboek", "text": "Tekst", - "trail": "{n, plural, =1 {wandelroute} other {wandelroutes}}", + "trail": "{n, plural, =1 {Wandelroute} other {Wandelroutes}}", "trails-for-you": "Wandelroutes voor jou", "units": "Eenheden", "upload-file": "Bestand uploaden", diff --git a/web/src/lib/util/gpx_util.ts b/web/src/lib/util/gpx_util.ts index c26b0b4c..04e61c1b 100644 --- a/web/src/lib/util/gpx_util.ts +++ b/web/src/lib/util/gpx_util.ts @@ -28,15 +28,17 @@ export async function gpx2trail(gpxString: string) { const totals = gpx.getTotals() - const points = gpx.trk?.at(0)?.trkseg?.at(0)?.trkpt - const startPoint = points?.at(0); + const trackPoints = gpx.trk?.at(0)?.trkseg?.at(0)?.trkpt + const routePoints = gpx.rte?.at(0)?.rtept; + + const startPoint = trackPoints?.at(0) ?? routePoints?.at(0); if (startPoint) { trail.lat = startPoint.$.lat trail.lon = startPoint.$.lon - } + } - const startTime = points?.at(0)?.time; - const endTime = points?.at((points?.length ?? 1) - 1)?.time + const startTime = trackPoints?.at(0)?.time; + const endTime = trackPoints?.at((trackPoints?.length ?? 1) - 1)?.time if (startTime && endTime && !trail.date) { trail.date = startTime.toISOString() diff --git a/web/src/lib/vendor/leaflet-elevation/src/control.js b/web/src/lib/vendor/leaflet-elevation/src/control.js index 00e3fb8b..ea2d405e 100644 --- a/web/src/lib/vendor/leaflet-elevation/src/control.js +++ b/web/src/lib/vendor/leaflet-elevation/src/control.js @@ -17,7 +17,7 @@ export const Elevation = L.Control.Elevation = L.Control.extend({ __TOGEOJSON: '/vendor/leaflet-elevation/libs/togeojson.umd.js', __LGEOMUTIL: '/vendor/leaflet-elevation/libs/leaflet.geometryutil.js', __LALMOSTOVER: '/vendor/leaflet-elevation/libs/leaflet.almostover.js', - __LHOTLINE: '/vendor/leaflet-elevation/libs/leaflet-hotline.min.js', + __LHOTLINE: '/vendor/leaflet-elevation/libs/leaflet-hotline.js', __LDISTANCEM: '/vendor/leaflet-elevation/libs/leaflet-distance-marker.min.js', __LEDGESCALE: '/vendor/leaflet-elevation/libs/leaflet-edgescale.min.js', __LCHART: '/vendor/leaflet-elevation/src/components/chart.js', @@ -452,7 +452,7 @@ export const Elevation = L.Control.Elevation = L.Control.extend({ .then(() => { layer.eachLayer((trkseg) => { if (trkseg.feature.geometry.type != "Point") { - let geo = L.geoJson(trkseg.toGeoJSON(), { coordsToLatLng: (coords) => L.latLng(coords[0], coords[1], coords[2] * (this.options.altitudeFactor || 1)) }); + let geo = L.geoJson(trkseg.toGeoJSON(), { coordsToLatLng: (coords) => L.latLng(coords[0], coords[1], (coords[2] * (this.options.altitudeFactor || 1)) || 0) }); let line = L.hotline(geo.toGeoJSON().features[0].geometry.coordinates, { renderer: L.Hotline.renderer(), min: isFinite(this.track_info[prop + '_min']) ? this.track_info[prop + '_min'] : 0, diff --git a/web/src/routes/lists/+page.svelte b/web/src/routes/lists/+page.svelte index 1037e978..2955c581 100644 --- a/web/src/routes/lists/+page.svelte +++ b/web/src/routes/lists/+page.svelte @@ -77,7 +77,7 @@ weight: 5, }, gpx_options: { - parseElements: ["track"], + parseElements: ["track", "route"], }, marker_options: { startIcon: L.AwesomeMarkers.icon({ diff --git a/web/src/routes/map/+page.svelte b/web/src/routes/map/+page.svelte index 771a4385..3b2b9cbd 100644 --- a/web/src/routes/map/+page.svelte +++ b/web/src/routes/map/+page.svelte @@ -211,7 +211,7 @@ weight: 5, }, gpx_options: { - parseElements: ["track"], + parseElements: ["track", "route"], }, marker_options: { startIcon: L.AwesomeMarkers.icon({ diff --git a/web/static/vendor/leaflet-elevation/libs/leaflet-hotline.js b/web/static/vendor/leaflet-elevation/libs/leaflet-hotline.js index 1684560b..591913d2 100644 --- a/web/static/vendor/leaflet-elevation/libs/leaflet-hotline.js +++ b/web/static/vendor/leaflet-elevation/libs/leaflet-hotline.js @@ -243,7 +243,6 @@ https://github.com/iosphere/Leaflet.hotline/ for (i = 0, dataLength = this._data.length; i < dataLength; i++) { path = this._data[i]; - for (j = 1, pathLength = path.length; j < pathLength; j++) { pointStart = path[j - 1]; pointEnd = path[j];