Breiten- und Längengrad zu einer Adresse mit PHP ermitteln

Ich musste aus einer CSV-Datei mit Adressen die Koordinaten bestimmen und in ein CMS einpflegen. Dank dem Google Geocoding API ist es auch super einfach. Dazu wird einfach eine Anfrage an Google, mit der Adresse als Parameter, gesendet und man erhält alles was man braucht. Als Ergebnis kann man dabei XML oder JSON anfordern.
Folgende Parameter können übergeben werden:
- address: Die Adresse zu der die Koordinaten ermittelt werden sollen
- region: Der dazugehörige Ländercode (zweistelliger ccTLD-Wert)
- language: Spreache der Ergebnisse
- sensor: Angabe, ob die Geocodierungsanfrage von einem Gerät mit einem Standortsensor kommt
Jetzt können wir unsere Anfrage mit curl() oder file_get_contents() stellen und bekommen die gewünschten Daten. Als Parameter für die Funktion verwenden wir das folgende URL:
http://maps.google.com/maps/api/geocode/format?parameter
In der Variablen
$address
steht unsere Adresse. Diese kann natürlich aus der Datenbank oder einer Benutzereingabe kommen. Dann fordern wir die Daten von Google, in JSON, an. Und dekodieren diese anschließend.
1 2 3 4 | $address = 'Schanzenstr. 70, 22357 Hamburg, Deutschland'; $path = 'http://maps.google.com/maps/api/geocode/json?address='.urlencode($address).'&sensor=false'; $geocode = file_get_contents($path); $output = json_decode($geocode); |
Um den Code etwas zu vereinfachen, habe ich diesen in viele Zwischenschritte unterteilt und die Funktion file_get_contents() verwendet.
In
$output
haben wir jetzt ein Objekt mit den gesuchten Werten:
5 6 | $latitude = $output->results[0]->geometry->location->lat; $longitude = $output->results[0]->geometry->location->lng; |
Weitere Informationen könnt ihr in der offiziellen Dokumentation von Google nachlesen: Das Google Geocoding API