GeoJSON Feature Collection per JavaScript-Object erzeugen

Im Rahmen von Michaels Pacific Crest Wanderung habe ich basierend auf OpenLayers, jQuery und den Daten seines SPOT Satellite Messenger eine Webanwendung gebaut, auf der man rund um die Uhr verfolgen kann, wo er sich gerade befindet. Bei der Nutzung von OpenLayers stellt man sich zwangsläufig irgendwann die Frage, in welchem Format man die Location-Daten denn überhaupt abrufen möchte.

In einem Projekt von 2010 für walking-away.de (Beispiel), habe ich beispielsweise GPX-Dateien verwendet. Die Methode bietet sich vor allem immer dann an, wenn man die Daten beispielsweise aus einem Navigationsgerät von Garmin und co. auslesen möchte um sie im Web darzustellen. Diese Geräte bieten meistens die aufgezeichneten Tracks im GPX-Format an.

Im Fall von live.everyday-madness.de habe ich mich dazu entschlossen, auf das GeoJSON-Format zu setzen. JSON als solches ist momentan ohnehin der absolute Shooting-Star was den Datenaustausch im Web angeht. GeoJSON setzt, wie der Name schon sagt, auf die JSON „Sprache“ auf und definiert, wie Daten übermittelt werden müssen. Über GeoJSON lassen sich Punkte (Points), Tracks (LineStrings) oder auch Formen (Polygon) definieren. OpenLayers zum Beispiel unterstützt in der aktuellen Version alle im GeoJSON Standard definierten Typen. Zudem lassen sich mehrer Typen zu so genannten „Feature Collections“ zusammen fassen. Eine Feature Collection besteht beispielsweise aus einem Track (als LineString) und einem Start- bzw. Endpunkt-Marker (als Point). Eine solche Feature Collection kann anschließend als JSON-String von beispielsweise OpenLayers eingelesen werden und stellt sämtliche in ihr enthaltenen Daten dar.

In meinem Fall habe ich die Roh-Daten (Koordinaten, Timestamp, Nachrichten-Inhalt, Typ) per AJAX und JSON (nicht GeoJSON) über den Umweg über PHP aus einer MySQL Datenbank geholt. Natürlich hätte ich die den GeoJSON-String bereits per PHP zusammen setzen können, allerdings benötigte ich ohnehin noch weitere Daten aus der Datenbank, weshalb ich mich dazu entschlossen habe, den GeoJSON-String erst in JavaScript zusammen zu setzen um ihn dann an OpenLayers zu übergeben.

Doch wie erstellt man nun möglichst einfach eine Feature Collection in JavaScript? Der einfachste Weg ist, eine Kombination aus Objekten und Arrays zu verwenden.

weiterlesenGeoJSON Feature Collection per JavaScript-Object erzeugen