Kartendarstellung der gefahrenen Strecke #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ich möchte eine Funktion, die die gefahrene Strecke als Kartendarstellung ausgibt. Ideal wäre eine interaktive Karte, in der man Scrollen und Zoomen kann. Als Fallback reicht ein gerendertes Bild, z.B. ein PNG.
Am besten wäre es wenn die Ausgabe so erfolgt, dass es auch in Openwebui angezeigt werden kann.
Openwebui kann Iframe content anzeigen.
Hallo @matthias,
ich habe mir Gedanken zur Umsetzung der Kartendarstellung (Issue #4) gemacht. Hier ist ein konkreter Lösungsvorschlag, der sich ideal für Open WebUI eignet:
1. Datenbasis von Strava
Strava liefert für jede Aktivität ein
map-Objekt, das eine im Google Polyline-Format kodierte Zeichenkette enthält:summary_polyline(für Übersichten)polyline(detaillierte GPS-Koordinaten)2. Interaktive Karte (Leaflet.js & OSM in Iframe)
Da Open WebUI HTML-Inhalte in einem Iframe (z. B. via standardmäßiger HTML-Block-Erkennung) interaktiv darstellen kann, ist dies die eleganteste Lösung:
map.fitBounds).Beispiel für den generierten HTML-Inhalt:
3. Fallback (Statische Vorschau)
Falls der Iframe blockiert wird oder keine interaktive Ansicht erwünscht ist, gibt es zwei solide Ausweichoptionen:
Empfohlener Weg: Wir erstellen ein neues MCP-Tool
get_activity_map(activity_id), welches den interaktiven HTML-Iframe-Code ausgibt, der in Open WebUI sofort als scroll- und zoombare Karte gerendert wird.Lass mich wissen, wie du diesen Ansatz findest, dann erstelle ich gerne die passende Umsetzung!
Das Issue wurde erfolgreich mit folgenden Premium-Funktionen umgesetzt und ausgiebig getestet:
Interaktive GPS-Karte (
get_activity_map):#fc4c02).Integriertes Höhenprofil (Höhendiagramm):
Individueller Sport-Emoji-Marker:
🚴für Radfahrten,🏃für Läufe) mit realistischen Drop-Shadow-Effekten über der Strecke.Bidirektionales Snapping (Zwei-Wege-Hover-Verbindung):
setLineDash([5, 5])) in teiltransparentem Strava-Orange hebt den aktuell fokussierten X-Wert im Diagramm hervor.Satellitenbild-Umschalter:
L.control.layers) integriert, um nahtlos zwischen der Standard-Karte (OpenStreetMap) und der hochauflösenden Satellitenbild-Karte (Esri World Imagery, lizenz- und API-key-frei) zu wechseln.Robuste Absicherungen & Tests:
pytest) mit 70/70 erfolgreichen Tests sichert die Implementierung.Das Projekt wurde vollständig aufgeräumt. Der lokale Test-Container (
test.html) funktioniert tadellos. Wir können dieses Issue hiermit erfolgreich schließen!