Strecken als Objekte mit Struktur
In meinem ersten Ansatz habe ich für jeden abzubildenden Track ein Vektorobjekt aus der Layer-Klasse von Openlayers verwendet. Für die Erzeugung eines solchen Vektorobjekts entwerfe ich nun eine Funktion, die dieses Objekt mit allen notwendigen Eigenschaften erzeugt:
//---------------------------------------------------------------------------------------------------------------------------------- function erstelle_Strecke(einDatum, eineEntfernung, eineGPXDatei, eineFarbe="magenta", eineLinienstaerke=3, eineLiniendichte=0.5) { // Muster zum Erstellen eines Trackabbilds // // Aufruf: // // map.addLayer(new erstelle_Strecke( -- 1 -- Was als Text im Switcher als Streckenbeschreibung erscheinen soll // -- 2 -- Die Entfernung in Kilometern // -- 3 -- Der Name der zu verwendenden GPX-Datei // -- 4 -- Die Farbe, in der der GPX-Track dargestellt werden soll // -- 5 -- Die "Durchsichtigkeit" des GPX-Tracks (0 = ganz durchsichtig, 1 = undurchsichtig) // // Farbe, Linienstärke und Liniendichte sind als Parameter vorbesetzt und können ggf. nach den // Konventionen der Parameterübergabe bei Javascript weggelassen werden. dieStrecke = new OpenLayers.Layer.Vector(einDatum + " - " + eineEntfernung, { strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.HTTP({ url: eineGPXDatei, format: new OpenLayers.Format.GPX() }), style: {strokeColor: eineFarbe, strokeWidth: eineLinienstaerke, strokeOpacity: eineLiniendichte}, projection: new OpenLayers.Projection("EPSG:4326")}) return dieStrecke } //--------------------------------------------------------------------------------------------------------------------------------
Diese Funktion hat fünf Parameter, von denen die drei letzten schon mit Werten vorbesetzt sind, die aber innerhalb der Funktion überschrieben werden können (s. Quelltext). Der Funktionsaufruf liefert dann im Programm ein Objekt der Klasse OpenLayers.Layer.Vector, das dann direkt in die Liste der Objekte, die im Kartenobjekt map der komplexen Klasse OpenLayers.Map gesammelt werden, aufgenommen wird.
Den Quelltext des gesamten HTML-Dokuments zur vereinfachten Darstellung von GPX-Tracks mit OpenLayers kann man hier einsehen.