我目前正在构建一个基于位置的应用程序,该应用程序依赖于lat和long设备正确转换为文本位置 .
我目前的问题如下(以lat / long -37.8047079,144.9641467为例):
都
Places API
https://maps.googleapis.com/maps/api/place/textsearch/json?query=-37.8047079,144.9641467&key
和
Geocode API
https://maps.googleapis.com/maps/api/geocode/json?address=-37.8047079,144.96414677&key
返回: "8-14 Little Queensberry St, Carlton VIC 3053, Australia"
但是出于某种原因,当 same lat long 被输入谷歌 Map 本身时,它会产生位置 135 Queensberry St, Carlton VIC 3053
由于 routes API returning that same later address 导致两个服务之间不匹配,这对我来说是一个主要问题
我做错了什么,如果我不是,有没有办法绕过它?
请注意,第二个地址是我认为的那个"correct"
提前致谢 !
1 回答
执行reverse geocoding时,应使用
latlng
参数而不是address
参数 . 所以查询https://maps.googleapis.com/maps/api/geocode/json?latlng=-37.8047079%2C144.96414677&key=MY_API_KEY
返回几个项目 . 第一个是类型 Build 的
Shop2/143 Queensberry St, Carlton VIC 3053
,餐厅,第二个是street_address类型的135 Queensberry St, Carlton VIC 3053, Australia
.您可以在Geocoder工具中看到这些结果:
https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3D-37.804708%252C144.964147
看起来餐馆更接近您提供的坐标 . 但是,如果您打算回到街道地址,只需按街道地址类型过滤反向地理编码结果 .
https://maps.googleapis.com/maps/api/geocode/json?latlng=-37.8047079%2C144.96414677&result_type=street_address&key=YOUR_API_KEY
此请求将返回预期结果 .
我希望这有帮助!