2016-04-21 58 views
2

我正在使用google maps api在地圖上反轉地理編碼的緯度和經度。我想以下面的格式返回地址:[街道號碼] [路線],[城鎮],[州],括號已刪除。我不確定如何將地址組件鏈接到類型。現在這是我的解決方案,但它並不總是返回格式正確的地址。我怎樣才能按類型搜索?其他解決方案已經使用了一個循環,但我不確定if語句會是什麼樣子?使用google python的街道城市反向地理編碼

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'])

回答

1

可以在反向地理編碼使用的字段formatted_address

formatted_address是一個字符串,包含此位置的人類可讀地址。通常這個地址相當於「郵政地址」,有時每個國家都不相同。 (請注意,由於許可限制,一些國家(如英國)不允許分發真正的郵政地址。)此地址通常由一個或多個地址組件組成。例如,地址「紐約州紐約市第八大街111號」包含「111」(街道號,「第8大道」(路線),「紐約」(城市)和「紐約州」)的單獨地址組件美國各州)。

這是由該查詢返回formatted_address值的完整列表的例子。

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", 

欲瞭解更多信息,請檢查該documentation

也試着檢查這個SO question

+0

感謝您的回覆。我發現格式化的地址和第一個選項幾乎符合我的需求(我現在正在使用它),但理想情況下,我希望返回不帶拉鍊的地址,也沒有國家/地區。 –

+0

我強烈建議您繼續使用'formatted_address'─提出自己的地址格式既不容易也不可能是一個好主意。如果您只關心少數幾個國家,則可以使用正則表達式刪除郵政編碼和國家(刪除與特定模式匹配的部分)。儘管它是對地址進行反格式化,但它比格式化更容易,並且從長遠來看更有可能繼續工作。 – miguev

相關問題