使用谷歌python的街道城市反向地理编码

时间:2016-04-21 15:17:22

标签: python google-maps google-maps-api-3 reverse-geocoding

我正在使用谷歌地图api来反转地图上的地理编码纬度和经度。我想以下列格式返回地址:[街道号] [路线],[镇],[州]删除括号。

我不确定如何将地址组件链接到类型。现在这是我的解决方案,但它并不总是返回正确格式的地址。我该如何按类型搜索?其他解决方案使用了循环,但我不确定if语句会是什么样的?

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 个答案:

答案 0 :(得分:1)

您可以在反向地理编码中使用字段formatted_address

formatted_address是一个包含此位置的人类可读地址的字符串。这个地址通常等同于“邮政地址”,有时因国家而异。 (请注意,由于许可限制,某些国家/地区(例如英国)不允许分发真实的邮政地址。)此地址通常由一个或多个地址组件组成。例如,地址“111 8th Avenue,New York,NY”包含单独的地址组件“111”(街道号码,“8th Avenue”(路线),“纽约”(城市)和“NY”(美国)。

这是此查询返回的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