2016-04-21 114 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

相关问题