包含"#
"(例如公寓号码(的地址经常给出不正确的位置结果,无论是使用ggmap::geocode还是使用Google地图,因此严格来说这不是R问题。在此示例中,在街道地址后添加"#3
"会将位置结果从伊利诺伊州更改为加利福尼亚州:
> test <- geocode('1200 Davis St, Evanston, IL 60202', source='google', output='more')
> test[, c('lon', 'lat', 'administrative_area_level_1')]
lon lat administrative_area_level_1
1 -87.68978 42.04627 Illinois
> testhash <- geocode('1200 Davis St #3, Evanston, IL 60202', source='google', output='more')
> testhash[, c('lon', 'lat', 'administrative_area_level_1')]
lon lat administrative_area_level_1
1 -122.1692 37.72169 California
如果您直接尝试使用谷歌地图,有时在地址中添加哈希值似乎会混淆查找,从而生成各种地理位置分散的结果。这并不总是发生,但根据我的经验,这种情况经常发生。它很容易修复(地理编码时不需要公寓号码(,但我想知道为什么会发生这种情况,以及输入地址是否有其他注意事项。
Google 提供了有关地理编码 API 中地址格式的建议。特别是,他们建议不要在请求中指定公寓号或楼层号等其他元素。
您可以在 Google 地图常见问题解答中查看完整的推荐列表:
https://developers.google.com/maps/faq#geocoder_queryformat
相关部分是
请勿指定未包含在相关国家/地区邮政服务定义的地址中的其他地址元素,例如公司名称、单元号、楼层号或套房号。这样做可能会导致响应ZERO_RESULTS。
我希望这有帮助!