2016-04-21 37 views
2

Ich benutze die Google Maps API, um Geocode Breite und Längengrade auf der Karte umzukehren. Ich möchte die Adresse im folgenden Format zurückgeben: [Hausnummer] [Route], [Stadt], [Bundesland] mit entfernten Klammern.Street City Reverse Geocoding mit Google Python

Ich bin nicht sicher, wie die Adresskomponenten mit den Typen verknüpft werden. Im Moment ist dies meine Lösung, aber es gibt nicht immer die korrekt formatierte Adresse zurück. Wie kann ich nach Typ suchen? Andere Lösungen haben eine Schleife verwendet, aber ich bin mir nicht sicher, wie die if-Anweisungen aussehen würden.

address = '{} {}, {}, {}'.format(json['results'][0]['address_components'][0]['long_name'] , json['results'][0]['address_components'][1]['long_name'] , json['results'][0]['address_components'][3]['long_name'] , json['results'][0]['address_components'][5]['short_name'])

Antwort

1

können Sie die Felder formatted_address in Reverse-Geocoding verwenden.

formatted_address ist eine Zeichenfolge, die die lesbare Adresse dieses Ortes enthält. Oft entspricht diese Adresse der "Postanschrift", die sich manchmal von Land zu Land unterscheidet. (Beachten Sie, dass einige Länder, wie z. B. das Vereinigte Königreich, die Verteilung echter Postadressen aufgrund von Lizenzbeschränkungen nicht zulassen.) Diese Adresse besteht in der Regel aus einer oder mehreren Adresskomponenten. Zum Beispiel enthält die Adresse "111 8th Avenue, New York, NY" separate Adresskomponenten für "111" (die Hausnummer, "8th Avenue" (die Route), "New York" (die Stadt) und "NY" (die US-Staat).

Dies ist das Beispiel für vollständige Liste der formatted_address von dieser Abfrage zurückgegebenen Werte.

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY 
"formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA", 
"formatted_address" : "Grand St/Bedford Av, Brooklyn, NY 11211, USA", 
"formatted_address" : "Grand St/Bedford Av, Brooklyn, NY 11249, USA", 
"formatted_address" : "Bedford Av/Grand St, Brooklyn, NY 11211, USA", 
"formatted_address" : "Brooklyn, NY 11211, USA", 
"formatted_address" : "Williamsburg, Brooklyn, NY, USA", 
"formatted_address" : "Brooklyn, NY, USA", 
"formatted_address" : "New York, NY, USA", 
"formatted_address" : "New York, USA", 
"formatted_address" : "United States", 

weitere Informationen dieses documentation überprüfen.

Versuchen Sie auch, dies zu überprüfen SO question.

+0

Danke für die Antwort. Ich fand die formatierte Adresse und die erste Option fast meine Bedürfnisse (ich benutze es jetzt), aber im Idealfall möchte ich die Adresse ohne die zip und ohne das Land zurückgeben. –

+0

Ich empfehle dringend, die 'formatierte_Adresse' zu ​​verwenden. ─ Ihre eigene Adressformatierung zu erstellen ist weder einfach noch wahrscheinlich eine gute Idee. Wenn Sie sich nur für einige Länder interessieren, können Sie die Postleitzahl und das Land mit einem regulären Ausdruck entfernen (indem Sie Teile entfernen, die bestimmten Mustern entsprechen). Auch wenn es die Adresse deformiert, ist es einfacher als die Formatierung und wird wahrscheinlich auf lange Sicht weiter funktionieren. – miguev

Verwandte Themen