Mit dem GPX Viewer kann man einfach Tracks, Routen und Wegpunkte, die z.B. mit einem GPS-Empfänger aufgenommen wurden, auf einer WWW-Seite darstellen. Die Daten müssen dazu als GPX-Datei vorliegen. Zur Anzeige wird die Kartendarstellung von Google Maps verwendet. Zusätzlich kann ein Höhenprofil, ein Steigungsprofil und ein Geschwindigkeitsprofil der Tracks erstellt werden. Zur Nutzung des Scriptes sind keine Javascriptkenntnisse nötig.
Mit der Seite Show GPX können Sie sich den Inhalt einer GPX Datei ohne Upload ansehen und die Möglichkeiten des GPX Viewers austesten.
Das Script liest eine oder mehrer GPX-Dateien, wertet sie aus und zeichnet Tracks, Routen und Wegpunkte in eine Google Maps-Karte ein. Befinden sich in der GPX-Datei mehrere Tracks oder Routen, so werden sie als getrennte Linien in verschiedenen Farben gezeigt. Die Namen der Tracks bzw. Routen erscheinen dann in einer Legende. Der Kartenausschnitt wird so gewählt, dass alle Tracks, Routen und Wegpunkte sichtbar sind. Der Kartenausschnitt kann nachträglich verändert werden.
Der Inhalt der GPX-Datei wird folgendermaßen behandelt:
Wegpunkte
Tracks
Routen
Damit Routen und Tracks in die Karte eingezeichnet werden können, sollte die Seite den Dokumententyp "HTML 5" haben und UTF-8 kodiert sein:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
...
Das Script muss dann folgendermaßen eingebunden werden:
<script type="text/javascript" src="GM_Utils/GPX2GM.js"></script>
Wenn das Script in einem anderen Ordner liegt, muss der Pfad zum Script noch angepasst werden.
Um nur Tracks, Routen oder Wegpunkte aus einer GPX-Datei auf ihrer Seite anzuzeigen, fügen sie folgenden HTML-Code auf Ihrer Seite da ein, wo die Karte erscheinen soll:
<div class="gpxview:Name_der_GPX-Datei.gpx" style="width:500px;height:300px">
<noscript><p>Zum Anzeigen der Karte wird Javascript benötigt.</p></noscript>
</div>
"Name_der_GPX-Datei.gpx" ersetzen sie einfach durch den Namen Ihrer GPX-Datei. Möchten sie Inhalte aus mehreren Datein darstellen, müssen die Dateinamen durch ein Komma getrennt werden:
<div class="gpxview:GPX-Datei_1.gpx,GPX-Datei_2.gpx" style="width:500px;height:300px">
<noscript><p>Zum Anzeigen der Karte wird Javascript benötigt.</p></noscript>
</div>
Die Höhen- und Breitenangaben können Sie natürlich an Ihr Layout anpassen.
Sie können hinter den Dateinamen noch einen weiteren Steuerparameter angeben. Dabei bedeutet:
| Kartendarstellung: | class="gpxview:Name_der_GPX-Datei.gpx:Karte" |
| Satellitenfoto: | class="gpxview:Name_der_GPX-Datei.gpx:Satellit"
class="gpxview:Name_der_GPX-Datei.gpx" |
| Beides: | class="gpxview:Name_der_GPX-Datei.gpx:Hybrid" |
| Oberflächenansicht: | class="gpxview:Name_der_GPX-Datei.gpx:Oberflaeche" |
| Open Street Map (Mapnik) | class="gpxview:Name_der_GPX-Datei.gpx:OSM" |
| Open Street Map (Cycle Map) | class="gpxview:Name_der_GPX-Datei.gpx:OSM_Cycle" |
Siehe hierzu die Beispielseite 1.
Ich empfehle, HTML-Seite, GPX-Datei und eventuelle Fotos im selben Ordner abzulegen.
Durch das Platzieren von Buttons mit entsprechendem Klassennamen kann man die Karten neu skalieren, so dass der ganze Track wieder sichtbar ist, und man kann neue Routen / Tracks / Wegpunkte mit entsprechendem Kartenausschnitt in das Kartenfenster laden:
<button type="button" class="gpxview:map:skaliere">Alles anzeigen</button>
<button type="button" class="gpxview:map:lade:Beispiel1.gpx:Hybrid">1. Karte laden</button>
<button type="button" class="gpxview:map:lade:Beispiel2.gpx:Karte">2. Karte laden</button>
<div id="map" class="gpxview:Beispiel1.gpx:Satellit" style="width:500px;height:300px">
<noscript><p>Zum Anzeigen der Karte wird Javascript benötigt.</p></noscript>
</div>
Die Befehle sind folgendermaßen aufgebaut:
gpxview:id_der_Karte:Befehl:optionale_Parameter
Dem div, in dem die Karte angezeigt werden soll, muss eine id gegeben werden.
Siehe hierzu die Beispielseite 2.
Ebenso können neue Routen / Tracks / Wegpunkte mit entsprechendem Kartenausschnitt in das Kartenfenster über ein Auswahlmenü geladen werden (Beispielseite 2b):
<select class="gpxview">
<option value="map:Beispiel1.gpx:Hybrid" selected="selected">Beispiel1.gpx</option>
<option value="map:Beispiel2.gpx:Karte">Beispiel2.gpx</option>
</select>
<div id="map" class="gpxview:Beispiel1.gpx:Satellit" style="width:500px;height:300px">
<noscript><p>Zum Anzeigen der Karte wird Javascript benötigt.</p></noscript>
</div>
Außerdem können auch mehrere Karten auf einer Seite angezeigt werden. Siehe hierzu die Beispielseite 3 und die Beispielseite 3b.
Zusätzlich zur Darstellung auf der Karte oder dem Satellitenbild können je nach Inhalt der GPX-Datei auch Höhen-, Steigungs- und Geschwindigkeitsprofile sowie ein Weg-Zeit-Diagramm angezeigt werden. Dabei ist die Darstellung gegen den zurückgelegten Weg oder gegen die verstrichene Zeit möglich. Da die Zuordnung zwischen Karte und Profilgrafik über die ID erfolgt, muss das Karten-DIV eine ID haben, z.B. "map". Die DIVs für die Profile benötigen dann eine ID, die sich wie folgt zusamensetzt:
| ID des DIVs | Funktion |
|---|---|
| map | Karte / Satellitenbild |
| map_hp | Höhenprofil gegen Weg |
| map_hpt | Höhenprofil gegen Zeit |
| map_sp | Steigungsprofil gegen Weg |
| map_spt | Steigungsprofil gegen Zeit |
| map_vp | Geschwindigkeitsprofil gegen Weg |
| map_vpt | Geschwindigkeitsprofil gegen Zeit |
| map_wp | Weg gegen Zeit |
Um z.B. alle Profile anzeigen zu können, muss der HTML-Code folgendermaßen aussehen:
<div id="map" class="gpxview:Name_der_GPX-Datei.gpx" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen der Karte wird Javascript benötigt.</p>
</noscript>
</div>
<!-- ... -->
<div id="map_hp" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen des Höhenprofils gegen den Weg wird Javascript benötigt.</p>
</noscript>
</div>
<!-- ... -->
<div id="map_hpt" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen des Höhenprofils gegen die Zeit wird Javascript benötigt.</p>
</noscript>
</div>
<!-- ... -->
<div id="map_sp" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen des Steigungsprofils gegen den Weg wird Javascript benötigt.</p>
</noscript>
</div>
<!-- ... -->
<div id="map_spt" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen des Steigungsprofils gegen die Zeit wird Javascript benötigt.</p>
</noscript>
</div>
<!-- ... -->
<div id="map_vp" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen des Geschwindigkeitsprofils gegen den Weg wird Javascript benötigt.</p>
</noscript>
</div>
<!-- ... -->
<div id="map_vpt" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen des Geschwindigkeitsprofils gegen die Zeit wird Javascript benötigt.</p>
</noscript>
</div>
<!-- ... -->
<div id="map_wp" style="width:500px;height:300px">
<noscript>
<p>Zum Anzeigen des Weg-Zeit-Diagramms wird Javascript benötigt.</p>
</noscript>
</div>
Die Karte und die Profile können sich an beliebigen Stellen der Seite befinden. Siehe hierzu auch die Beispielseite 4 mit Profilen gegen den Weg und die Beispielseite 5 mit Profilen gegen die Zeit.
Am Anfang des Scriptes befinden sich einige Steuervariablen, mit denen das Aussehen der Karte und das Verhalten des Scripts weiter beeinflusst werden kann, indem man ihre Werte auf true oder false setzt. Man kann u. A. zwischen großem und kleinem Zoomregler wählen, die Übersichtskarte einschalten, die Legende über der Karte abschalten, einstellen, welche Elemente beim Start gezeigt werden und mehrere Tracks in einer Datei im Höhenprofile aneinander ketten. Darüber hinaus kann auch das Aussehen von Tracks und Routen verändert werden.
Die Werte der Steuervariablen können im Script angepasst werden, so dass die Änderung auf allen Seiten wirkt. Ein Setzen der Variablen in der Datei "GPX2GM_Defs.js" ist ebenfalls möglich. Man kann die Variablen aber auch nur im Scriptbereich der Seiten einfügen, deren Darstellung verändert werden soll.
Über die Variable "JB.Scaling" kann die Skalierung der Profildiagramme beeinflusst werden. Normalerweise ermittelt das Script automatisch die Min- und Maxwerte. Werden die Werte für min und max beide gesetzt, nimmt das Script diese für die Skalierung. Dazu können Sie die normalerweise auskommentierte Definition am Anfang des Scripts aktivieren und anpassen oder die Zeilen in einen Scriptbereich vor der Einbindung des Scriptes setzen.
| Variable | Bedeutung | Wert |
|---|---|---|
| Largemapcontrol | Großer/kleiner Zoomregler | true/false |
| Overviewmapcontrol | Übersichtskarte an/aus | true/false |
| Scrollwheelzoom | Zoomen mit Scrollrad an/aus | true/false |
| Legende | Legende an/aus | true/false |
| Legende_fnm | Dateinamen in Legende zeigen/nicht zeigen | true/false |
| Legende_rr | Höhenmeter in Legende zeigen/nicht zeigen | true/false |
| Legende_trk | Trackanzeige beim Öffnen der Seite an/aus | true/false |
| Legende_rte | Routenanzeige beim Öffnen der Seite an/aus | true/false |
| Legende_wpt | Wegpunktanzeige beim Öffnen der Seite an/aus | true/false |
| Tracks_verbinden | Tracks in Profilgrafik verbinden | true/false |
| Tracks_dateiuebergreifend_verbinden | Tracks in Profilgrafik auch dateiübergreifend verbinden | true/false |
| Usegpxbounds | Skalierung nach dem Bounds-Tag | true/false |
| Readspeed | Speed-Tag auswerten, wenn vorhanden | true/false |
| Speedfaktor | Eichfaktor für den Wert des Speed-Tags | 1 |
| Trackover | Track- oder Routeninfo anzeigen, wenn Maus über Linie | true/false |
| Shwpname | Inhalt des name-Feldes in Wegpunktinfo anzeigen | true/false |
| Shwpcmt | Inhalt des cmt-Feldes in Wegpunktinfo anzeigen | true/false |
| Shwpdesc | Inhalt des desc-Feldes in Wegpunktinfo anzeigen | true/false |
| Shwptime | Zeit in Wegpunktinfo anzeigen | true/false |
| Groesseminibild | Größe des Vorschaubildes bei Bildwegpunkten | 60 |
| Shtrcmt | Inhalt des cmt-Feldes in Trackinfo anzeigen | true/false |
| Shtrdesc | Inhalt des desc-Feldes in Trackinfo anzeigen | true/false |
| Shtrx | Strecke in Trackinfo anzeigen | true/false |
| Shtrt | Zeit in Trackinfo anzeigen | true/false |
| Shtrtabs | Absolute Zeit statt Zeit nach Start im Infofenster (Maus über Profilgrafik) anzeigen | true/false |
| Shtrv | Geschwindigkeit in Trackinfo anzeigen | true/false |
| Shtrh | Höhe in Trackinfo anzeigen | true/false |
| Shtrs | Steigung in Trackinfo anzeigen | true/false |
| Shtrvmitt | Durchschnittsgeschwindigkeit in Trackinfo anzeigen | true/false |
| Shtrstart | Markierung am Trackanfang | true/false |
| Shtrziel | Markierung am Trackende | true/false |
| Shrtstart | Markierung am Routenanfang | true/false |
| Shrtziel | Markierung am Routenende | true/false |
| Shrtcmt | Inhalt des cmt-Feldes in Routeninfo anzeigen | true/false |
| Shrtdesc | Inhalt des desc-Feldes in Routeninfo anzeigen | true/false |
| Displaycolor | Linienfarbe aus GPX-Datei übernehmen (z.Zt. nur Garmin) | true/false |
| Laengen3d | Bei Entfernungsberechnung auch Höhenunterschiede berücksichtigen | true/false |
| Hkorr | Korrktur fehlender Höhenwerte imTrack durch Interpolation | true/false |
| Hglattlaen | Länge des Glättungsintervalls für das Höhenprofil in Meter | 500 |
| Vglattlaen | Länge des Glättungsintervalls für das Geschwindigkeitsprofil in Meter | 100 |
| Vglatt | Geschwindigkeitsprofil glätten | true/false |
| Tdiff | Zeitoffset für Zeitanzeige im Infofenster in Stunden | 0 |
| Scaling | Vorgabe der Min- und Maxwerte in den Profildiagrammen. Siehe Text. | |
| Farben der Profilgrafik: | ||
| Plotframecol | Rahmenfarbe | "black" |
| Plotgridcol | Gitterfarbe | "gray" |
| Plotlabelcol | Farbe der Achsenbeschriftung | "black" |
| Profilfillopac | Sättigung der Farbe unter der Profilkurve | 0 |
Vor der Veröffentlichung des Scriptes unterziehe ich es umfangreichen Tests mit diversen GPX-Dateien in den gängigen Browsern. Sollten Sie trotzdem einen Fehler finden, würde ich mich über eine Mitteilung, evtl. mit der den Fehler verursachenden GPX-Datei, freuen. An dieser Stelle möchte ich mich für die Meldungen von Usern und für deren Dateien, die mir bei meinen Tests eine große Hilfe sind, ganz herzlich bedanken.
Die Google Maps API V3 verlangt keinen Schlüssel mehr. Daher kann die Zeile "var key=..." entfernt werden, muss aber nicht. Ich empfehle den Documententyp "HTML 5", "XHTML 1.0" funktioniert aber auch. Daher müssen Sie auch hier nichts ändern. Die Datei "GPX2GM_Defs.js" muss ebenfalls ausgetauscht werden. Sollten Sie in dieser Datei eigene Definitionen haben, müssen Sie diese übertragen. Achtung: das Iconformat wurde geändert.
Die Version 5 ist bis auf das andere Aussehen der V3-Map kompatibel zu älteren Versionen. Sollte ich bei der Umstellung etwas übersehen haben, würde ich mich über eine kurze Info freuen.
Infos über Updates auf Twitter @JBerkemeier.
Die Verwendung des Scriptes auf nicht kommerziellen Seiten ist frei. Die Verwendung auf kommerziellen Seiten bedarf meiner Zustimmung. Das Script darf verändert werden, wenn meine Copyrightvermerke nicht entfernt werden und wenn diese Änderungen kenntlich gemacht werden. Über eine Nennung meines Namens oder einen Link auf diese Seite würde ich mich freuen.
Das Script greift auf die Google Maps API zu. Seine Funktion hängt damit von der Bereitstellung dieses Dienstes durch Google ab. Die rechtlichen Bestimmungen von Google müssen eingehalten werden.