GPX Viewer

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 oder OpenStreetMap verwendet. Zusätzlich kann ein Höhenprofil, ein Steigungsprofil, ein Geschwindigkeitsprofil, ein Cadenzprofil und ein Herzfrequenzprofil 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.

Beispiel4

Beschreibung

Das Script liest eine oder mehrere 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:

Einbinden des Scriptes

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 lang="de">
  <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.

Einfache Variante

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 Dateien 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 (Deutscher Stil) class="gpxview:Name_der_GPX-Datei.gpx:OSMDE"
Open Street Map (Cycle Map) class="gpxview:Name_der_GPX-Datei.gpx:OSM_Cycle"
Open Street Map (Landscape) class="gpxview:Name_der_GPX-Datei.gpx:OSM_Landscape "

Siehe hierzu die Beispielseite 1.

Anmerkung

Ich empfehle, HTML-Seite, GPX-Datei und eventuelle Fotos im selben Ordner abzulegen.

Voraussetzungen

Zusätzliche Einflussnahmen auf die Karten

Button

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:skaliere:center_lat,center_lon,radius">
  Auf center_lat,center_lon mit Radius skalieren</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.

Profile

Zusätzlich zur Darstellung auf der Karte oder dem Satellitenbild können je nach Inhalt der GPX-Datei auch Höhen-, Steigungs-, Geschwindigkeits-, Herzfrequenz- und Trittfrequenzprofile 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 zusammensetzt:

Profil
ID des DIVsFunktion
mapKarte / Satellitenbild
map_hpHöhenprofil gegen Weg
map_hptHöhenprofil gegen Zeit
map_spSteigungsprofil gegen Weg
map_sptSteigungsprofil gegen Zeit
map_vpGeschwindigkeitsprofil gegen Weg
map_vptGeschwindigkeitsprofil gegen Zeit
map_hrpHerzfrequenzprofil gegen Weg
map_hrptHerzfrequenzprofil gegen Zeit
map_cadpTrittfrequenzprofil gegen Weg
map_cadptTrittfrequenzprofil gegen Zeit
map_wpWeg 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_hrp" style="width:500px;height:300px">
 <noscript>
  <p>Zum Anzeigen des Herzfrequenzprofils gegen den Weg wird Javascript benötigt.</p>
 </noscript>
</div>
<!-- ... -->
<div id="map_hrpt" style="width:500px;height:300px">
 <noscript>
  <p>Zum Anzeigen des Herzfrequenzprofils gegen die Zeit wird Javascript benötigt.</p>
 </noscript>
</div>
<!-- ... -->
<div id="map_cadp" style="width:500px;height:300px">
 <noscript>
  <p>Zum Anzeigen des Trittfrequenzprofils gegen den Weg wird Javascript benötigt.</p>
 </noscript>
</div>
<!-- ... -->
<div id="map_cadpt" style="width:500px;height:300px">
 <noscript>
  <p>Zum Anzeigen des Trittfrequenzprofils 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.

Weitere Steuermöglichkeiten

Am Anfang des Scriptes befinden sich einige Steuervariablen, mit denen das Aussehen der Karte und das Verhalten des Scripts weiter beeinflusst werden kann. 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.

Liste der Steuervariablen

VariableBedeutungWert
DoclangSprache des Dokumentsauto/de/en
UnitLängeneinheiten in m/km, mile/ft, NM/ft, sm/ftsi/enus/air/water
LargemapcontrolGroßer/kleiner Zoomreglertrue/false
OverviewmapcontrolÜbersichtskarte an/austrue/false
ShowmaptypecontrollKartenwähler an/austrue/false
ScrollwheelzoomZoomen mit Scrollrad an/austrue/false
FullscreenbuttonBlendet oben rechts in der Karte eine kleine Lupe ein, mit der sie auf Fullscreen vergrößert werden kanntrue/false
LegendeLegende an/austrue/false
Legende_fnmDateinamen in Legende zeigen/nicht zeigentrue/false
Legende_rrHöhenmeter in Legende zeigen/nicht zeigentrue/false
Legende_trkTrackanzeige beim Öffnen der Seite an/austrue/false
Legende_rteRoutenanzeige beim Öffnen der Seite an/austrue/false
Legende_wptWegpunktanzeige beim Öffnen der Seite an/austrue/false
Tracks_verbindenTracks in Profilgrafik verbindentrue/false
Tracks_dateiuebergreifend_verbindenTracks in Profilgrafik auch dateiübergreifend verbindentrue/false
TrcolmodTracks in Abhängigkeit von Höhe ("h"), Steigung ("s"), Geschwindigkeit ("v"), Trittfrequenz ("cad") oder Herzfrequenz ("hr") farbcodieren"h"/"s"/"v"/
"hr"/"cad"/""
UsegpxboundsSkalierung nach dem Bounds-Tagtrue/false
ReadspeedSpeed-Tag auswerten, wenn vorhandentrue/false
SpeedfaktorEichfaktor für den Wert des Speed-Tags1
HfaktorEichfaktor für die Höhe1
SfaktorEichfaktor für die Steigung1
VfaktorEichfaktor für die Geschwindigkeit1
WfaktorEichfaktor für die Strecke1
TrackoverTrack- oder Routeninfo anzeigen, wenn Maus über Linietrue/false
ShwpnameInhalt des name-Feldes in Wegpunktinfo anzeigentrue/false
ShwpcmtInhalt des cmt-Feldes in Wegpunktinfo anzeigentrue/false
ShwpdescInhalt des desc-Feldes in Wegpunktinfo anzeigentrue/false
ShwptimeZeit in Wegpunktinfo anzeigentrue/false
ShwpshadowWegpunkticons mit Schatten anzeigentrue/false
WpclusterWegpunkte, die zu dicht zusammen liegen, als Cluster anzeigentrue/false
BildwegpunkticonIconname für Bildwegpunkte, bei "" wird Iconname aus GPX-Datei verwendetBild
GroesseminibildGröße des Vorschaubildes bei Bildwegpunkten60
BildpfadPfad zum Bild""
ShtrcmtInhalt des cmt-Feldes in Trackinfo anzeigentrue/false
ShtrdescInhalt des desc-Feldes in Trackinfo anzeigentrue/false
ShtrxStrecke in Trackinfo anzeigentrue/false
ShtrcadTrittfrequenz in Trackinfo anzeigentrue/false
ShtrhrPuls in Trackinfo anzeigentrue/false
ShtrtZeit in Trackinfo anzeigentrue/false
ShtrtwobZeit in Bewegung in Trackinfo anzeigentrue/false
ShtrtabsAbsolute Zeit statt Zeit nach Start im Infofenster (Maus über Profilgrafik) anzeigentrue/false
ShtrtgesGesamtzeit des Tracks anzeigen anzeigentrue/false
ShtrtgeswobGesamtzeit in Bewegung anzeigen anzeigentrue/false
ShtrvGeschwindigkeit in Trackinfo anzeigentrue/false
ShtrhHöhe in Trackinfo anzeigentrue/false
ShtrsSteigung in Trackinfo anzeigentrue/false
ShtrvmittDurchschnittsgeschwindigkeit in Trackinfo anzeigentrue/false
ShtrvmittwobDurchschnittsgeschwindigkeit unter Berücksichtigung von Pausen in Trackinfo anzeigentrue/false
ShtrvmittpaceDurchschnittsgeschwindigkeit in Min/km in Trackinfo anzeigentrue/false
ShtrvmittpacewobDurchschnittsgeschwindigkeit in Min/km unter Berücksichtigung von Pausen in Trackinfo anzeigentrue/false
ShtrstartMarkierung am Trackanfangtrue/false
ShtrzielMarkierung am Trackendetrue/false
ShrtstartMarkierung am Routenanfangtrue/false
ShrtzielMarkierung am Routenendetrue/false
ShrtcmtInhalt des cmt-Feldes in Routeninfo anzeigentrue/false
ShrtdescInhalt des desc-Feldes in Routeninfo anzeigentrue/false
DisplaycolorLinienfarbe aus GPX-Datei übernehmen (z.Zt. nur Garmin)true/false
Laengen3dBei Entfernungsberechnung auch Höhenunterschiede berücksichtigentrue/false
HglattlaenLänge des Glättungsintervalls für das Höhenprofil in Meter, für die Berechnung der Steigung und bei Bedarf für die Anzeige500
VglattlaenLänge des Glättungsintervalls für das Geschwindigkeitsprofil in Meter100
HglattHöhenprofil für die Anzeige glättentrue/false
VglattGeschwindigkeitsprofil glättentrue/false
TdiffZeitoffset für Zeitanzeige im Infofenster in Stunden0
TkorrKorrektur der Zeitangaben zur Ortszeittrue/false
ScalingVorgabe der Min- und Maxwerte in den Profildiagrammen. Siehe Text.
Farben der Profilgrafik:
PlotframecolRahmenfarbe"black"
PlotgridcolGitterfarbe"gray"
PlotlabelcolFarbe der Achsenbeschriftung"black"
PlotmarkercolFarbe des Markers in der Profilgrafik"black"
ProfilfillopacSättigung der Farbe unter der Profilkurve0 bis 1
Linieneigenschaften auf der Karte:
OwidthLinienstärke Track und Route bei Mouseover3
TwidthLinienstärke Track2
RwidthLinienstärke Route2
TopacTransparenz Trackfarbe0.8
RopacTransparenz Routenfarbe0.8

Anzeigen von Bildwegpunkten ohne GPX-Datei

Wenn die Geokoordinaten von Bildpunkten bekannt sind (s. auch Wann_und_wo), können diese auch ohne eine GPX-Datei angezeigt werden. Dazu muss nach dem Map-Div folgender HTML-Code eingefügt werden, wobei "map" die ID des Kartendivs ist:

<div id="map" class="gpxview::Karte">
  <noscript><p>Zum Anzeigen der Karte wird Javascript benötigt.</p></noscript>
</div>
<div id="map_img">
  <a href="Bild1.jpg" data-geo="lat:nnn.nnnnnnn,lon:nnn.nnnnnnn">Beschreibung</a>
  <a href="Bild2.jpg" data-geo="lat:nnn.nnnnnnn,lon:nnn.nnnnnnn">Beschreibung</a>
    <!-- ... weitere Bilder ... -->
    <!--          oder          -->
  <img src="Bild3.jpg" data-geo="lat:nnn.nnnnnnn,lon:nnn.nnnnnnn" alt="Beschreibung" />
  <img src="Bild4.jpg" data-geo="lat:nnn.nnnnnnn,lon:nnn.nnnnnnn" alt="Beschreibung" />
    <!-- ... weitere Bilder ... -->
</div>

Im Map-Div darf auch der Name einer GPX-Datei angegeben werden, muss aber nicht. Siehe hierzu auch Beispiel 11. Wenn die Bilder nur über die Karte gezeigt werden sollen, muss man dem umgebenden DIV die CSS-Eigenschaft "display:none" geben. In diesem Fall empfehle ich die Variante mit "<a href=..."

Beispiele

Versionen

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.

Update von einer älteren Version des Scriptes auf die Version 5 oder höher

Die Google Maps API V3 verlangt keinen Schlüssel mehr. Daher kann die Zeile "var key=..." entfernt werden, muss aber nicht. Ich empfehle den Dokumententyp "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.

Rechtliches

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.

Da auch die Möglichkeit besteht, die GPX-Daten auf OSM-Karten zu zeigen, müssen auch die Lizenzbedingungen von OSM eingehalten werden.