Koorrdinaten zu Adressen bestimmen (Geokodierung)

Auf der vorherigen Seite haben wir das Brandenburger Tor gesehen. Welcher Kartenausschnitt gezeigt wird, bestimmt diese Zeile:

center: new google.maps.LatLng(52.5162731, 13.3777642),

Dort wird der Mittelpunkt der Karte festgelegt: 52.5162731, 13.3777642 sind Angaben der geografischen Breite bzw. Länge. Diese direkte Angabe von Koordinaten ist jedoch nicht sehr praktikabel: Normalerweise kennt man eine gewisse Adresse und möchte diese als Mittelpunkt der Karte angezeigt bekommen.

Die Umrechnung von Adressen in Koordinaten nennt man Geokodierung. Sie ist recht rechenaufwendig, weshalb man die Umrechnung für eine Adresse nicht jedesmal durchführen lassen sollte, wenn die Karte angezeigt wird, sondern nur einmal für die Adresse. Da normalerweise die Karte zu Beginn ja immer die gleiche Adresse anzeigen soll, sollte dies kein Problem darstellen.

1. Ansatz: Auslesen aus Google Maps

Geht man auf Google Maps und sucht nach der entsprechenden Adresse (z.B. Pariser Platz, Berlin) sieht man in der Adressleiste des Browsers bereits die Geokoordinaten:

https://www.google.de/maps/place/Pariser+Platz/@52.5164562,13.3808328,2355m

Wie man sieht, stehen dort hinter dem @ ungefähr unsere gesuchten Koordinaten, die man nun einfach in den Code der voerhigen Seite einfügen kann.

2. Ansatz: Direkte Geokodierung der Adresse

Wie man aber auch sieht, ist diese Angabe nicht so ganz genau. Welche Koordinaten hat denn nun eine bestimmte Adresse?

Auch hierzu bietet Google einen Dienst an, denn auch diese Umrechnung kann man von Google vornehmen lassen: Dazu ruft man folgende URL auf, gefolgt von der Adresse, z.B. für das Brandenburger Tor:
https://maps.googleapis.com/maps/api/geocode/json?address=Pariser Platz, 11011 Berlin&key=[IhrKey]
Dies funktioniert allerdings nur, wenn man den Key nicht an bestimmte Domains gebunden hat.

Zurück erhält man dann einen Satz mit Daten:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Pariser Platz",
               "short_name" : "Pariser Platz",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Bezirk Mitte",
               "short_name" : "Bezirk Mitte",
               "types" : [ "sublocality_level_1", "sublocality", "political" ]
            },
            {
               "long_name" : "Berlin",
               "short_name" : "Berlin",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Berlin",
               "short_name" : "Berlin",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Deutschland",
               "short_name" : "DE",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "10117",
               "short_name" : "10117",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Pariser Platz, 10117 Berlin, Deutschland",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 52.51724,
                  "lng" : 13.379631
               },
               "southwest" : {
                  "lat" : 52.51494,
                  "lng" : 13.37775
               }
            },
            "location" : {
               "lat" : 52.5160749,
               "lng" : 13.3783013
            },
            "location_type" : "GEOMETRIC_CENTER",
            "viewport" : {
               "northeast" : {
                  "lat" : 52.5174389802915,
                  "lng" : 13.3800394802915
               },
               "southwest" : {
                  "lat" : 52.5147410197085,
                  "lng" : 13.3773415197085
               }
            }
         },
         "partial_match" : true,
         "types" : [ "route" ]
      }
   ],
   "status" : "OK"
}

Uns interessieren dabei die "location": 52.5160749, 13.3783013. Setzt man die ersten beiden Zahlen als Koordinaten ein, also:

center: new google.maps.LatLng(52.5160749, 13.3783013),

erhält man den gewünschten Kartenausschnitt auf diesen Koordinaten zentriert.


Die erhaltenen Zahlen sind manchmal auch etwas ungenau bzw. möchte man evtl. einen etwas anderen Ausschnitt haben. Um den Ausschnitt genau festzulegen, empfiehlt sich unser Tool zum genauen bestimmendes Kartenausschnitts.