GPS-Koordinaten in Stadt umwandeln mit PHP und Google Maps

Dank Smartphone kommt man heute ziemlich schnell an die eigenen GPS-Koordinaten und kann ganz einfach seinen Standort teilen.

Was ist aber, wenn ihr auf der anderen Seite seid und den Standort des Nutzers zum Beispiel in eine Stadt umwandeln wollt?

In diesem Artikel stelle ich auch ein kleines PHP-Skript vor, mit dem ihr auf die Google Maps API zugreifen könnt und GPS-Koordinaten umwandeln könnt.

1. Bei Google Maps API anmelden

Die Google Maps Geocoding API kann bis zu einem gewissen Kontingent kostenlos verwendet werden.

Über euren Google Account könnt ihr für die Google Maps Geocoding API einen API-Schlüssel anfordern. Dieser ist Voraussetzung um das nachfolgende PHP-Skript verwenden zu können.

2. PHP-Skript für mehr Informationen zu GPS-Koordinaten

Die PHP Funktion, die ich euch hier bereitstelle, ist recht simpel aufgebaut:

function getAddressByGPS ($lat, $lng) {
    // NICHT VERGESSEN: API-Key einfügen! Anfrage an Google Maps API senden //
    $request = @json_decode(file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?latlng=".trim($lat).",".trim($lng)."&key=GMAPS_API_KEY"), true);
    $address = array();

    // Konnten die Daten erfolgreich ausgewertet werden? //
    if (isset($request['results'][0]['address_components'][0]['types'])) {
        foreach ($request['results'][0]['address_components'] AS $component) {
            switch ($component['types'][0]) {
                case 'street_number':                 $address['houseNr'] = $component['long_name']; break;
                case 'route':                        $address['street'] = $component['long_name']; break;
                case 'administrative_area_level_2':    $address['city'] = $component['long_name']; break;
                case 'locality':                    $address['city'] = $component['long_name']; break;
                case 'country':                        $address['country'] = $component['long_name']; break;
                case 'postal_code':                    $address['ZIP'] = $component['long_name']; break;
            }
        }
                    
        // Adresse zurückgeben //
        return $address;
    } else {
        return false;
    }
}

Ihr müsst in der Zeile, die mit $request beginnt, noch GMAPS_API_KEY durch den API-Key ersetzen, den ihr zuvor angefordert habt.

Die Funktion fragt zunächst die Google Maps API ab und übergibt die angegebenen GPS-Koordinaten. Wenn Google Maps keinen Fehler zurückgegeben hat, werden die Daten ausgewertet und einzelne Informationen, wie Stadt und Postleitzahl, aus der Antwort herausgefiltert.

Bei Erfolg gibt das PHP Skript ein Array mit den relevanten Informationen aus, andernfalls ein false.

3. Anwendungsbeispiel

Nun könnt ihr die Funktion ganz einfach aufrufen, indem ihr die GPS-Werte für den Breitengrad (lat) und Längengrad (lng) übergebt.

In diesem Beispiel übergeben wir GPS-Koordinaten für eine Adresse in Berlin und lassen uns das Ergebnis ausgeben:

var_dump(getAddressByGPS(52.5192207, 13.3733226));

Die Ausgabe lautet:

array(4) {
["street"]=> string(16) "Paul-Löbe-Allee"
["city"]=> string(6) "Berlin"
["country"]=> string(7) "Germany"
["ZIP"]=> string(5) "10557"
}

Ihr könnt das Skript noch weiter an eure Bedürfnisse anpassen. Bei einigen Orten kann es sein, dass das Skript nicht die genauen Angaben aus der Antwort der Google Maps API herausfiltert.

Daher könnt ihr euch auch selbst die Ergebnisse von $request anschauen und zum Beispiel statt $request[‚results‘][0][‚address_components‘][0][‚types‘] andere Werte auswählen und zurückgeben. Über eure Ideen und Anmerkungen in den Kommentaren freue ich mich natürlich.

4. Fazit

Wer nicht allzu viele Zugriffe pro Monat benötigt, kann ganz leicht mit der Google Maps API und PHP GPS-Koordinaten in Adressinformationen, wie z.B. den Namen der Stadt, umwandeln. Damit sind Anwendungen möglich, die dem Nutzer auf Basis seines Standorts weitere Informationen bieten.

5 Gedanken zu „GPS-Koordinaten in Stadt umwandeln mit PHP und Google Maps“

    1. Hi Mkuh,

      Soweit ich weiß, ist die OpenStreetMap ein großartiges Projekt, bietet aber keine API an, mit der sich Informationen zu den GPS-Koordinaten anzeigen lassen. Wenn du da mehr weißt, lass uns gerne daran teilhaben 🙂

      Lässt man sich die Daten zu diesem Zweck exportieren, ist man schnell bei einer ziemlich großen Datei. Das hat für meine Zwecke nicht gepasst.

      Beste Grüße
      Tristan

  1. case ‚administative_area_level_2′ muss irgendwas anderes sein, denn es wird nicht die Stadt angezeigt, sondern der Bezirk. Mein Code lautet:

    //
    $Newadress = getAddressByGPS($lat, $long);

    echo $Newadress[’street‘].‘, ‚.$Newadress[‚houseNr‘].‘, ‚.$Newadress[‚city‘].‘, ‚.$Newadress[‚ZIP‘].‘, ‚.$Newadress[‚country‘]; //

    Wie lautet der code für die Stadt?

    1. Hallo Torsten,

      unter Umständen kann es sein, dass dir statt der Stadt der Bezirk oder ähnliches angezeigt wird, wenn weitere Informationen vorhanden sind. Du könntest dann versuchen – je nach Bedarf einfach jeweils den ‚administative_area_level_‘-Wert mit der höchsten oder niedrigsten Zahl herauszufiltern und zu verwenden.

      Beste Grüße
      Tristan