【问题标题】:Google geocode API can't find address returned by the place APIGoogle 地理编码 API 找不到地点 API 返回的地址
【发布时间】:2016-12-28 22:11:15
【问题描述】:

我无法让谷歌的地理编码 api 识别地址:

广场 12
Am Flughafen
60549 法兰克福
德国

Squaire 是法兰克福机场的一座建筑。它似乎没有正常的街道地址,但 The Squaire 的许多企业都有像“The Squaire NUMBER”这样的地址。例如:

但无论我做什么,我都无法在以下位置获得 google geocode api 识别的地址:

令人抓狂的是,当我在机场附近搜索“squaire”时,places API 会找到我正在寻找的地方:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=XYZ&location=50.0509194,8.5684084&radius=1000&keyword=squaire

匹配结果有:place_id: ChIJY9ZMLL4KvUcRxZhQ3e-7ask。当我查询详细信息端点时:

https://maps.googleapis.com/maps/api/place/details/json?key=XYZ&placeid=ChIJY9ZMLL4KvUcRxZhQ3e-7ask

我收到了formatted_address: "THE Squaire 12, Am Flughafen, 60549 Frankfurt am Main, Germany",但这正是地理编码 api 中无法使用的地址。

当我使用带有 place_id 的反向地理编码 api 时:

https://maps.googleapis.com/maps/api/geocode/json?key=XYZ&place_id=ChIJY9ZMLL4KvUcRxZhQ3e-7ask

我收到formatted_address: "plug and work Frankfurt, THE SQUAIRE Conference Center, THE Squaire 12, Am Flughafen, 60549 Frankfurt am Main, Germany"。在正向地理编码 api 中仍然不起作用:

https://maps.googleapis.com/maps/api/geocode/json?address=plug%20and%20work%20Frankfurt,%20THE%20SQUAIRE%20Conference%20Center,%20THE%20Squaire%2012,%20Am%20Flughafen,%2060549%20Frankfurt%20am%20Main,%20Germany

【问题讨论】:

  • 为什么是-1?否决的选民可以发表评论,以便我可以更好地提出问题吗?
  • @miguev 这个问题先开放
  • 是的,确实,但另一个问题有当前正确的答案。这里的答案以前是正确的,但现在不再正确,因为问题 10585 已修复。研究这个问题的开发人员将从研究另一个问题中受益匪浅。如果有更好的方法来鼓励这种“转发”,我不知道,请告诉我们。
  • @miguev 另一个问题具有当前正确答案的唯一原因是因为您在那里回答了它。如果您在此处输入相同的答案,我将在此处将其标记为正确(如果不是,我可以自行回答)。对于其他提出这个问题的人,正确的问题是11031

标签: google-maps google-api google-places-api google-geocoder google-geocoding-api


【解决方案1】:

这是地理编码 API 中的一个问题:Issue 11031

已在 1 月下旬修复,因此 Geocoding API 将始终返回与 Google Maps 相同的结果:

这实际上是Issue 11031 修复方式的副作用,与地理编码 API 的原始行为背道而驰。 xomena 的回答在他回答时是有效的,Google Maps API 文档的官方建议确实是使用 Places API 文本搜索。如果您重新阅读New Forward Geocoder FAQ,您会注意到这种情况更长。

【讨论】:

  • 我还应该补充一点,我能够在 google mapmaker 中将通往“The Squaire”建筑的高速公路出口匝道更改为“The Squaire”(正如@xomena 建议的那样)所以甚至在引用的问题得到解决之前,这个特定的地址就可以通过地理编码 API 解析。
【解决方案2】:

Google Geocoding API 服务不适用于商家信息。您应该使用 Places API search 服务而不是 Geocoding API 来搜索商家。

您可以按照最佳实践文章中的建议将 Places API 自动完成功能与 Geocoding API 结合使用。在这种情况下,您可以从自动完成获取地点 ID 并在 Geocoding API 中使用它。

请查看地理编码最佳做法: https://developers.google.com/maps/documentation/geocoding/best-practices

希望对你有帮助!

【讨论】:

  • 文档说,“明确的查询,例如完整的邮政地址字符串(例如,“48 Pirrama Rd, Pyrmont, NSW, Australia”)最好由 Geocoding API Web 服务处理。”我相信我有一个明确的邮政地址字符串。如果地址是用于企业或现在,这似乎不是问题。
  • 如果地址字符串只能在商家信息中找到,Geocoding API forward geocoding 会将其过滤掉。如果您在 Geocoding API 中需要此地址,则应在地址创建期间通过 Map Maker 设置“地址”类别添加它。在您的示例地点 ID ChIJY9ZMLL4KvUcRxZhQ3e-7ask 具有“建立”、“point_of_interest”类型,没有“street_address”类型。这就是为什么它不能使用正向地理编码搜索的原因。
  • 啊。好的,通过地图制作界面我找到了列表,我去编辑它的地址,发现它确实缺少街道和号码。但是我只能选择一条已有的街道作为名称,并且没有一个建议是正确的。我试图将名称“The Squaire”添加到通向建筑物的现有未命名坡道上,但该编辑被拒绝。至少我明白为什么现在不能通过 geocode api 使用它,而这只是一个政治问题,让改变发生。
猜你喜欢
  • 2015-04-25
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2010-12-24
  • 2012-04-29
  • 2014-05-18
相关资源
最近更新 更多