Google Maps API – Geocodierung

In den bisherigen Teilen des Tutorials haben wir eine Adresse immer mittels der Koordinaten übergeben. Wie schon festgestellt birgt das einiges an Problemen, da wir in der Regel die Koordinaten eines Ortes nicht kennen, und diese somit nachschlagen müssen. Um dieses Manko zu beheben, besitzt die Google Maps API eine sogenannte Geocodierung. Mittels dieser Geocodierung können zum Beispiel Placemarks auch mittels Adresse gesetzt werden.

Was sich eigentlich gut anhört, ist allerdings mit Vorsicht zu genießen. Die Koordinaten sind stets genauer, als das Resultat einer Geocodierung. Da verhaut sich Google schon mal gerne um 1-2 Häuser, wie es selbst zugibt. Bei einer Geocodierung handelt es sich stets um eine Annäherung, keine exakte Wissenschaft! Wer also genau positionieren will, kommt an Koordinaten nicht vorbei. Dies gilt übrigens auch für die sogenannte umgekehrte Geocodierung. In dem Fall gibt Google für eine ausgewählte Position auf der Karte (zum Beispiel durch Klick) die entsprechende Adresse zurück. Auch hier gilt, es handelt sich um eine Annäherung! Was auch logisch ist, wenn ich in einem Gebiet mit 100 Schrebergärten Nummer 39 anklicke, ist es sehr unwahrscheinlich, das dieser eine eigene postalische Adresse besitzt!

Unser Beispiel – der Kölner Dom – besitzt übrigens nicht nur eine Adresse, sondern sogar eine Hausnummer, die auch außen angeschlagen ist! :) Offiziell heißt das dann: „Hohe Domkirche St. Peter und Maria, Domkloster 4, 50667 Köln (Altstadt-Nord)“, tja, wer hätte dies gedacht. Möchte ich nun ein Placemark mit dieser Adresse setzen, hat man etwas Arbeit vor sich. Zunächst einmal muss man die Adresse bei Google abfragen:

var address = "Domkloster 4, 50667 Köln";
geocoder = new GClientGeocoder();
geocoder.getLocations(address, addToMap);

Eigentlich ganz einfach, oder? Der Befehl getLocations sorgt für die Auflösung der Adresse, aber was ist eigentlich addToMap? Nichts anderes als eine Callback-Function in JavaScript! Diese muss wie folgt aufgebaut sein:

function addToMap(response) {
}

In der Variable response ist das Ergebnis der Suche hinterlegt. Dabei handelt es sich um eine KML-Datei (XML), die wir verarbeiten können:

http://maps.google.com/maps/geo?q=domkloster+5,+50677+k%F6ln&output=xml&sensor=true_or_false&key=abcdefg

Wie man in der URL sieht, erhält die KML fast die gleichen Koordinaten, die wir zuvor verwendet haben! Diese können wir nun in der Callback-Function addToMap extrahieren:

function addToMap(response) {
   // Den Ort im KML isolieren
   ort = response.Placemark[0];
   // Die Koordinaten extrahieren
   point = new GLatLng(ort.Point.coordinates[1],ort.Point.coordinates[0]);
   // Die Karte mit dem Zoom-Level 13 auf diesem Punkt zentrieren
   map.setCenter(point, 13);
   // Für den Punkt einen Marker generieren
   marker = new GMarker(point);
   // Den Marker der Karte hinzufügen
   map.addOverlay(marker);
   // Dem Marker ein HTML-Popup mit der Adresse hinzufügen
   marker.openInfoWindowHtml(ort.address);
}

Auch nicht sonderlich schwer, aber wie gesagt: mit Vorsicht zu genießen! Die Ergebnisse können stimmen, müssen aber nicht! Nun sind wir eigentlich so weit ein Demo-System aufsetzen zu können und Google Maps zu optimieren und zu erweitern. Das komplette JavaScript zu diesem Beispiel findet ihr hier.

Ähnliche Beiträge

melonJS – Spieleentwicklung in HTML5 Spieleentwicklung in HTML5 ist "the next big thing" - aber das ist nicht wirklich was Neues. Es geht inzwischen auch nicht mehr wirklich um das ob, so...
Autoresize von Textareas mit jQuery Textareas sind immer so eine Sache: egal wie groß man sie macht, der Kunde findet sie zu klein. Auch die Breite der Eingabe ist oft problematisch, da ...
Modernizr – HTML5 und CSS3 mit Fallback Manchmal ist der Teufel ein Eichhörnchen, und scheinbar hat er sich an einem langen Winterabend überlegt, der beste Weg die Menschheit zu quälen wären...
Bei der Navigation mit der Tastatur arbeiten In letzter Zeit hat sich das Web durch Online-Anwendungen auf die Fahne geschrieben, Desktop-Anwendungen ablösen zu wollen bzw. zu ersetzen. Die Ansät...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.