Beim Geocoding wird eine Adresse in einen Standort auf einer Karte umgewandelt. Wenn Sie eine Adresse geocodieren, enthält die Antwort Folgendes:
- Orts-ID des Standorts
- Breiten- und Längengradkoordinaten des Standorts
- Plus Code des Orts
- Erweiterte Adressdetails
Geocoding-Anfrage
Eine Geocode-Anfrage ist eine HTTP-GET-Anfrage. Sie können die Adresse als unstrukturierten String angeben:
https://geocode.googleapis.com/v4/geocode/address/ADDRESS_STRING
Oder als strukturierte Gruppe von Adresskomponenten, die durch Abfrageparameter dargestellt werden:
https://geocode.googleapis.com/v4/geocode/address?STRUCTURED_ADDRESS
Normalerweise verwenden Sie das strukturierte Format, wenn Sie Adresskomponenten verarbeiten, die in einem HTML-Formular erfasst wurden.
Alle anderen Parameter werden als URL-Parameter oder, bei Parametern wie dem API-Schlüssel und der Feldmaske, in Headern als Teil der GET-Anfrage übergeben.
Unstrukturierten Adressstring übergeben
Eine unstrukturierte Adresse ist eine Adresse, die als String oder Plus Code formatiert ist. Beim Geocoding von Adressen werden keine Breiten- und Längengradkoordinaten oder andere unstrukturierte Strings aufgelöst, die keine Adresse oder keinen Plus Code darstellen. Anfragen mit solchen Strings werden nicht unterstützt und können zu Fehlerantworten oder nicht spezifiziertem Verhalten führen. Beispiele für nicht unterstützte Abfragen:
| Abfragetyp | Beispiel |
|---|---|
| Breiten- und Längengradkoordinaten. Verwenden Sie stattdessen die umgekehrte Geocodierung. | "37.422131,-122.084801" |
| Zu viele Konzepte oder Einschränkungen, z. B. die Namen mehrerer Orte, Straßen oder Städte in einer einzelnen Anfrage | „Market Street San Francisco San Jose Airport“ |
| Postadressenelemente, die nicht in Google Maps dargestellt werden |
„C/O John Smith 123 Main Street“ „P.O. Box 13 San Francisco“ |
| Namen von Unternehmen, Ketten oder Kategorien in Kombination mit Standorten, an denen diese Entitäten nicht verfügbar sind | „Tesco in der Nähe von Dallas, Texas“ |
| Mehrdeutige Anfragen mit mehreren Interpretationen | „Ladegerät abgeben“ |
| Historische Namen, die nicht mehr verwendet werden | "Middlesex United Kingdom" |
| Nicht standortbezogene Elemente oder Intentionen | „Wie viele Boote gibt es im Hafen von Ventura?“ |
| Inoffizielle oder Eitelkeitsnamen |
„The Jenga“ „The Helter Skelter“ |
Im folgenden Beispiel wird der URL-codierte Adressstring „1600 Amphitheatre Parkway, Mountain View, CA“ übergeben:
https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA?key=API_KEY
Das „+“-Zeichen in der URL wird in ein Leerzeichen umgewandelt.
Sie können die Anfrage auch mit einem curl-Befehl stellen:
curl -H "X-Goog-Api-Key: API_KEY" \ "https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"
Adressen können viele Arten von Sonderzeichen enthalten. Beispiel: „/“ wie in „7/1 King St, Concord West“. Codieren Sie „/“ als %2F:
https://geocode.googleapis.com/v4/geocode/address/7%2F1+King+St,+Concord+West?key=API_KEY
Ein weiteres häufiges Beispiel ist das Zeichen „#“, wie in „9500 W Bryn Mawr Ave #650, Rosemont“. Codieren Sie das „#“ als %2FE:
https://geocode.googleapis.com/v4/geocode/address/9500+W+Bryn+Mawr+Ave+%23650,+Rosemont?key=API_KEY
Im nächsten Beispiel geben Sie einen unstrukturierten Adressstring als Plus-Code 849VCWC8+R4 an. Achten Sie darauf, dass Sie das Zeichen „+“ als %2B URL-codieren:
https://geocode.googleapis.com/v4/geocode/address/849VCWC8%2BR4?key=API_KEY
Strukturierte Adresse übergeben
Geben Sie eine strukturierte Adresse mit dem Abfrageparameter address vom Typ PostalAddress an.
Mit dem PostalAddress-Objekt können Sie einige oder alle Adresskomponenten in der Anfrage als einzelne Abfrageparameter angeben.
Wenn Sie beispielsweise nur die Postleitzahl der Adresse angeben möchten, verwenden Sie PostalAddress.postalCode:
https://geocode.googleapis.com/v4/geocode/address?address.postalCode=01062&key=API_KEY
Wenn Sie mehrere Adresskomponenten angeben möchten, z. B. für Adresskomponenten, die in einem HTML-Formular erfasst werden, verwenden Sie mehrere Abfrageparameter:
https://geocode.googleapis.com/v4/geocode/address?address.addressLines=1600+Amphithreater+Pkwy&address.locality=Mountain+View &address.administrativeArea=CA &key=API_KEY
OAuth zum Stellen einer Anfrage verwenden
Die Geocoding API v4 unterstützt OAuth 2.0 für die Authentifizierung. Wenn Sie OAuth mit der Geocoding API verwenden möchten, muss dem OAuth-Token der richtige Bereich zugewiesen sein. Die Geocoding API unterstützt die folgenden Bereiche für die Verwendung mit der Vorwärtsgeocodierung:
https://www.googleapis.com/auth/maps-platform.geocode– Kann mit allen Geocoding API-Methoden verwendet werden.https://www.googleapis.com/auth/maps-platform.geocode.address– Nur mitGeocodeAddressfür die Vorwärtsgeocodierung verwenden.
Außerdem können Sie den allgemeinen https://www.googleapis.com/auth/cloud-platform-Bereich für alle Geocoding API-Methoden verwenden. Dieser Bereich ist während der Entwicklung nützlich, aber nicht in der Produktion, da er ein allgemeiner Bereich ist, der den Zugriff auf alle Methoden ermöglicht.
Weitere Informationen und Beispiele finden Sie unter OAuth verwenden.
Geocode-Antwort
Beim Geocoding wird ein GeocodeAddressResponse-Objekt zurückgegeben, das das results-Array von GeocodeResult-Objekten enthält. Jedes GeocodeResult-Objekt stellt einen einzelnen Ort dar.
Die Antworten der Geocoding API enthalten types-Arrays an zwei Hauptstellen innerhalb von GeocodeResult:
GeocodeResult.types: Dieses Array gibt den/die Gesamttyp(en) des Ergebnisses an. Die möglichen Werte stammen aus Tabelle A und Tabelle B auf der Seite „Ortstypen (Neu)“.GeocodeResult.addressComponents[].types: Jede Adresskomponente hat eintypes-Array, das den Typ dieses bestimmten Teils der Adresse angibt. Diese Werte stammen aus der Tabelle Typen von Adressen und Adresskomponenten auf der Seite „Ortstypen (neu)“.
Das vollständige JSON-Objekt hat das folgende Format:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJF4Yf2Ry7j4AR__1AkytDyAE", "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "location": { "latitude": 37.422010799999995, "longitude": -122.08474779999999 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.420656719708511, "longitude": -122.08547523029148 }, "high": { "latitude": 37.4233546802915, "longitude": -122.0827772697085 } }, "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1600 Amphitheatre Pkwy" ] }, "addressComponents": [ { "longText": "1600", "shortText": "1600", "types": [ "street_number" ] }, { "longText": "Amphitheatre Parkway", "shortText": "Amphitheatre Pkwy", "types": [ "route" ], "languageCode": "en" }, ... ], "types": [ "street_address" ], "plusCode": { "globalCode": "849VCWC8+R4", "compoundCode": "CWC8+R4 Mountain View, CA, USA" } } ] }
Erforderliche Parameter
address: die Adresse oder der Plus Code, die bzw. den Sie geocodieren möchten. Hinweis:Beim Geocoding von Adressen werden keine Breiten- und Längengradkoordinaten oder andere unstrukturierte Strings aufgelöst, die keine Adresse oder keinen Plus Code darstellen. Weitere Informationen und Beispiele für nicht unterstützte Anfragen finden Sie unter Unstrukturierte Adressstrings übergeben. Geben Sie Adressen in dem Format an, das vom Postdienst des entsprechenden Landes verwendet wird. Zusätzliche Adresselemente wie Firmennamen und Wohnungs-, Büro- oder Etagennummern sollten vermieden werden. Die Elemente der Adresse sollten durch Leerzeichen getrennt und URL-codiert sein (%20). Übergeben Sie beispielsweise die Adresse „24 Sussex Drive Ottawa ON“ so: Formatieren Sie Plus Codes wie unten gezeigt. Pluszeichen werden in der URL als24%20Sussex%20Drive%20Ottawa%20ON
%2Bdargestellt, Leerzeichen als%20:- Ein Global Code besteht aus einem vierstelligen Code für das Gebiet und einem mindestens sechsstelligen lokalen Code. Beispiel: „849VCWC8+R9“ wird als
849VCWC8%2BR9codiert. - Ein Compound Code ist ein mindestens sechsstelliger lokaler Code mit einem expliziten Ort. Codieren Sie beispielsweise „CWC8+R9 Mountain View, CA, USA“ als
CWC8%2BR9%20Mountain%20View%20CA%20USA.
- Ein Global Code besteht aus einem vierstelligen Code für das Gebiet und einem mindestens sechsstelligen lokalen Code. Beispiel: „849VCWC8+R9“ wird als
Optionale Parameter
locationBias
Gibt einen Bereich für die Suche als
Viewportan. Dieser Ort dient als Gewichtung. Das bedeutet, dass Ergebnisse in der Nähe des angegebenen Ortes zurückgegeben werden können, auch wenn sie sich nicht im angegebenen Bereich befinden.Geben Sie die Region als rechteckigen Darstellungsbereich an. Ein Rechteck ist ein Darstellungsbereich für Breiten- und Längengrad, der durch zwei diagonal gegenüberliegende niedrige und hohe Punkte dargestellt wird. Der Tiefpunkt markiert die südwestliche Ecke des Rechtecks und der Hochpunkt die nordöstliche Ecke.
Ein Darstellungsbereich gilt als geschlossener Bereich, d. h., er umfasst auch seine Grenzen. Die Grenzen für den Breitengrad müssen zwischen -90 und 90 Grad liegen (einschließlich), und die Grenzen für den Längengrad müssen zwischen -180 und 180 Grad liegen (einschließlich):
- Wenn
low=highist, besteht der Darstellungsbereich aus diesem einzelnen Punkt. - Wenn
low.longitude>high.longitude, wird der Längengradbereich umgekehrt (der Darstellungsbereich überschreitet die 180-Grad-Längengradlinie). - Wenn
low.longitude= -180 Grad undhigh.longitude= 180 Grad ist, umfasst der Darstellungsbereich alle Längengrade. - Wenn
low.longitude= 180 Grad undhigh.longitude= -180 Grad ist, ist der Längengradbereich leer. - Wenn
low.latitude>high.latitude, ist der Breitengradbereich leer.
Sowohl „Niedrig“ als auch „Hoch“ müssen ausgefüllt sein und das dargestellte Rechteck darf nicht leer sein. Ein leerer Viewport führt zu einem Fehler.
Mit diesem Abfragestring wird beispielsweise ein Viewport definiert, der New York City vollständig umschließt:
?locationBias.rectangle.low.latitude=40.477398
&locationBias.rectangle.low.longitude=-74.259087 &locationBias.rectangle.high.latitude=40.91618 &locationBias.rectangle.high.longitude=-73.70018 - Wenn
languageCode
Die Sprache, in der die Ergebnisse zurückgegeben werden sollen.
- Hier finden Sie eine Liste der unterstützten Sprachen. Die unterstützten Sprachen werden regelmäßig von Google aktualisiert. Diese Liste ist daher möglicherweise nicht vollständig.
-
Wenn
languageCodenicht angegeben ist, wird standardmäßigenverwendet. Wenn Sie einen ungültigen Sprachcode angeben, gibt die API den FehlerINVALID_ARGUMENTzurück. - Die API versucht, eine Straßenadresse bereitzustellen, die sowohl für den Nutzer als auch für Ortsansässige lesbar ist. Dazu werden Straßenadressen in der lokalen Sprache zurückgegeben, die bei Bedarf in ein für den Nutzer lesbares Schriftsystem transliteriert werden. Dabei wird die bevorzugte Sprache berücksichtigt. Alle anderen Adressen werden in der bevorzugten Sprache zurückgegeben. Alle Adresskomponenten werden in derselben Sprache zurückgegeben, die anhand der ersten Komponente ausgewählt wird.
- Wenn ein Name in der bevorzugten Sprache nicht verfügbar ist, wird die nächstgelegene Übereinstimmung verwendet.
- Die bevorzugte Sprache hat einen geringen Einfluss auf die Ergebnisse, die von der API zurückgegeben werden, und auf die Reihenfolge, in der sie zurückgegeben werden. Der Geocoder interpretiert Abkürzungen je nach Sprache unterschiedlich, z. B. die Abkürzungen für Straßentypen oder Synonyme, die in einer Sprache gültig sein können, in einer anderen jedoch nicht.
regionCode
Der Regionscode als zweistelliger CLDR-Code. Es gibt keinen Standardwert. Die meisten CLDR-Codes sind mit den ISO 3166-1-Codes identisch.
Beim Geocoding einer Adresse (Forward Geocoding) kann dieser Parameter die Ergebnisse des Dienstes für die angegebene Region beeinflussen, aber nicht vollständig einschränken. Wenn Sie einen Ort oder einen Standort geocodieren (umgekehrte Geocodierung oder Orts-Geocodierung), kann dieser Parameter verwendet werden, um die Adresse zu formatieren. In allen Fällen kann sich dieser Parameter aufgrund des anwendbaren Rechts auf die Ergebnisse auswirken.
-
FieldMask
Erstellen Sie eine Feldmaske für die Antwort, um die Felder anzugeben, die in der Antwort zurückgegeben werden sollen. Übergeben Sie die Maske für das Antwortfeld an die Methode, indem Sie den URL-Parameter
$fieldsoderfieldsoder den HTTP-HeaderX-Goog-FieldMaskverwenden. Mit der folgenden Anfrage wird beispielsweise nur das FeldplaceIDder Antwort zurückgegeben. Die Antwort lautet:curl -X GET -H 'Content-Type: application/json' \ -H 'X-Goog-FieldMask: results.placeId' \ -H "X-Goog-Api-Key: API_KEY" \ https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA
{ "results": [ { "placeId": "ChIJiSSC8QK6j4AR98Thup8mqTc" } ] }
Weitere Informationen finden Sie unter Zurückzugebende Felder auswählen.
Standortgewichtung
Mit dem locationBias-Parameter können Sie den Geocoding-Dienst so einrichten, dass Ergebnisse innerhalb eines bestimmten Darstellungsbereichs (ausgedrückt als Begrenzungsrahmen) bevorzugt werden.
Der Parameter locationBias definiert die Breiten- und Längengradkoordinaten der Südwest- und Nordostecken dieses Begrenzungsrahmens.
Bei einer Geocode-Anfrage für die Adresse „Washington“ können beispielsweise Ergebnisse für Washington, D.C. und für den US-Bundesstaat Washington zurückgegeben werden:
https://geocode.googleapis.com/v4/geocode/address/Washington?key=API_KEY
Die Antwort hat folgendes Format:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJW-T2Wt7Gt4kRKl2I1CJFUsI", "placeId": "ChIJW-T2Wt7Gt4kRKl2I1CJFUsI", "location": { "latitude": 38.9071923, "longitude": -77.0368707 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 38.7916449, "longitude": -77.119759 }, "high": { "latitude": 38.9958641, "longitude": -76.909393 } }, "bounds": { "low": { "latitude": 38.7916449, "longitude": -77.119759 }, "high": { "latitude": 38.9958641, "longitude": -76.909393 } }, "formattedAddress": "Washington, DC, USA", "addressComponents": [ { "longText": "Washington", "shortText": "Washington", "types": [ "locality", "political" ], "languageCode": "en" }, ... ], "types": [ "locality", "political" ] }, { "place": "//places.googleapis.com/places/ChIJ-bDD5__lhVQRuvNfbGh4QpQ", "placeId": "ChIJ-bDD5__lhVQRuvNfbGh4QpQ", "location": { "latitude": 47.7510741, "longitude": -120.7401386 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 45.543541, "longitude": -124.84897389999999 }, "high": { "latitude": 49.0024945, "longitude": -116.91607109999998 } }, "bounds": { "low": { "latitude": 45.543541, "longitude": -124.84897389999999 }, "high": { "latitude": 49.0024442, "longitude": -116.91607109999998 } }, "formattedAddress": "Washington, USA", "addressComponents": [ { "longText": "Washington", "shortText": "WA", "types": [ "administrative_area_level_1", "political" ], "languageCode": "en" }, ... ], "types": [ "administrative_area_level_1", "political" ] } ] }
Wenn jedoch ein locationBias-Parameter hinzugefügt wird, der einen Begrenzungsrahmen für den Nordosten der USA definiert, wird als Ergebnis des Geocodings nur die Stadt Washington, D.C. zurückgegeben:
https://geocode.googleapis.com/v4/geocode/address/Washington?locationBias.rectangle.low.latitude=36.47&locationBias.rectangle.low.longitude=-84.72 &locationBias.rectangle.high.latitude=43.39 &locationBias.rectangle.high.longitude=-65.90 &key=API_KEY
Regionsgewichtung
In einer Geocoding-Anfrage können Sie den Geocoding-Dienst mit dem Parameter regionCode anweisen, Ergebnisse zurückzugeben, die nach einer bestimmten Region gewichtet sind. Dieser Parameter akzeptiert einen
zweistelligen CLDR-Code, der die regionale Gewichtung angibt. Die meisten CLDR-Codes sind mit ISO 3166-1-Codes identisch.
Es gibt keinen Standardwert für regionCode. Bei der Geocodierung von „Toledo“ erhalten Sie z. B. Ergebnisse für die USA und für Spanien:
https://geocode.googleapis.com/v4/geocode/address/Toledo?key=API_KEY
Antwort:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJeU4e_C2HO4gRRcM6RZ_IPHw", "placeId": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw", "location": { "latitude": 41.652805199999996, "longitude": -83.5378674 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 41.579513, "longitude": -83.6944089 }, "high": { "latitude": 41.733036, "longitude": -83.4493851 } }, "bounds": { "low": { "latitude": 41.579513, "longitude": -83.6944089 }, "high": { "latitude": 41.733036, "longitude": -83.4493851 } }, "formattedAddress": "Toledo, OH, USA", "addressComponents": [ { "longText": "Toledo", "shortText": "Toledo", "types": [ "locality", "political" ], "languageCode": "en" }, ... ], "types": [ "locality", "political" ] }, { "place": "//places.googleapis.com/places/ChIJkwyrlqwLag0RiQIn2fdIshM", "placeId": "ChIJkwyrlqwLag0RiQIn2fdIshM", "location": { "latitude": 39.8628296, "longitude": -4.0273067 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 39.8116682, "longitude": -4.179933 }, "high": { "latitude": 39.9251319, "longitude": -3.8148935 } }, "bounds": { "low": { "latitude": 39.8116682, "longitude": -4.179933 }, "high": { "latitude": 39.9251319, "longitude": -3.8148935 } }, "formattedAddress": "Toledo, España", "addressComponents": [ { "longText": "Toledo", "shortText": "Toledo", "types": [ "administrative_area_level_4", "political" ], "languageCode": "es" }, ... ], "types": [ "administrative_area_level_4", "political" ] }, ... ] }
Bei einer Geocodierungsanfrage für „Toledo“ mit regionCode=es (Spanien) werden nur Ergebnisse aus Spanien zurückgegeben:
https://geocode.googleapis.com/v4/geocode/address/Toledo?regionCode=es&key=API_KEY