本常见问题解答涵盖特定于 Geocoding API 的问题。 有关所有 Google Maps Platform 的常见问题,请参阅 Google Maps Platform 常见问题解答。另请参阅对地址进行地理编码的最佳做法。
问题排查
- 通过地理编码器返回 ZERO_RESULTS 的查询增加。这是怎么回事?
- 我需要快速响应,地理编码器对于我的应用来说太慢了。我可以使用什么来加快响应速度?
- 如何缩短 Directions API 和 Distance Matrix API 的延迟时间?
- 我是高级计划客户,而且 Places API 成本太高。我该如何降低费用?
- 如何在地理编码器中报告 bug?
- 地理编码器没有针对我的用例产生良好的结果。有哪些帮助?
- 如何使用地理编码器通过组成部分过滤获得最佳结果?
问题排查
- 我使用地理编码器获得了更多返回 ZERO_RESULTS 的查询。这是怎么回事?
-
在地理编码器中,模糊、不完整和格式有误的查询(例如,拼写错误或不存在的地址)很容易产生 ZERO_RESULTS。如果找不到相应地址,则 ZERO_RESULTS 比部分结果更好(例如,仅返回郊区而不是地址)。
如果您的应用需要处理用户输入的地址,则 Places API 中的地点自动补全功能可能会提供更好的质量结果。 地点自动补全功能可让用户根据自己输入的内容从一组结果中进行选择,以便用户在名称相似的结果中进行选择,并在地址拼写错误时调整查询。
如果您的应用需要处理模糊或不完整的查询,或者可能包含错误的查询,我们建议您使用 Places API 中的地点自动补全功能,而不是使用 Geocoding API 中提供的正向地理编码器。如需了解详情,请参阅对地址进行地理编码的最佳做法和 Google Maps API 博文中的地址地理编码。
- 我需要快速响应,并且地理编码器对于我的应用来说太慢了。我可以使用什么来加快响应速度?
-
我们建议响应用户输入(因此对延迟极为敏感)的应用使用 Places API 中的地点自动补全功能(同样适用于 JavaScript、Android 或 iOS),而不是地址地理编码。 地点自动填充针对交互式用途进行了优化,因此延迟时间很短。
Geocoding API 中的地址地理编码经过专门优化,适合处理完整、不模糊、格式正确的地址(例如输入到在线表单中的递送地址),因此延迟时间长于地点自动补全。正向地理编码器覆盖范围更大、结果质量更好,但延迟时间略长。
- 如何缩短 Directions API 和 Distance Matrix API 的延迟时间?
-
您可以使用地点 ID 来指定航点、出发地和目的地,而不是地址。最好通过 Places API 的地点自动补全功能或 Maps JavaScript API 中的地点库获取地点 ID。另请参阅有关
placeIdOnly
选项的信息,该选项可用于降低地点自动补全的费用。使用地址字符串(而非地点 ID 或 latlng)查询 Directions API 或 Distance Matrix API 时,它们会使用与 Geocoding API 相同的后端将该地址转换为地点 ID,然后再计算路线。地点自动补全的速度比地址地理编码更快。对于在高度敏感情况下(例如响应用户输入)使用 Directions API 或 Distance Matrix API 的应用,我们建议您使用地点自动补全功能获取与这些地址对应的地点 ID,并将地点 ID 传递给 Directions API 或 Distance Matrix API。 此方法可显著缩短延迟时间。请参阅我们的文档,了解如何使用地点自动补全和路线示例。
- 如何在地理编码器中报告错误?
- 地理编码器没有针对我的用例产生良好的结果。您可以获得哪些帮助?
-
请通过我们的公开问题跟踪器告知我们,我们会分享一些特定的查询,以便我们调查是否存在任何会导致结果质量问题的 bug 或系统性问题,或者我们可以对最佳做法指南做出任何更改,以帮助开发者获得更好的结果。
- 如何使用地理编码器通过组成部分过滤获得最佳结果?
-
在地理编码器中,组成部分过滤仅强制执行
postal_code
和country
限制。以下示例说明了如何根据所需结果最有效地利用组件过滤。在示例请求网址中,请务必将“YOUR_API_KEY”替换为您的实际 API 密钥。- 如需将邮政编码限制为特定国家/地区,请务必使用 ISO 3166-2 国家/地区代码指定国家/地区限制。例如:
components=country:CH|postal_code:8000
会返回“8000 苏黎世(瑞士)”。https://maps.googleapis.com/maps/api/geocode/json?components=country:CH%7Cpostal_code:8000&key=YOUR_API_KEY
- 若要将查询限制在特定国家/地区,请务必使用 ISO 3166-2 国家/地区代码指定国家/地区限制。我们不保证国家/地区名称和其他缩写会产生与国家/地区代码相同的结果。
示例:
- 对
components=country:FRA|locality:gallus
的地理编码返回德国美因河畔法兰克福的 Gallus 的子地区。这是因为法国 (FRA) 不支持由 3 个字母组成的国家/地区代码,因此允许在任何国家/地区显示,并且法兰克福的结果比法国的任何内容更合适。https://maps.googleapis.com/maps/api/geocode/json?components=country:FRA%7Clocality:gallus&key=YOUR_API_KEY
- 对
- 对于模糊查询,Google Geocoding API 不一定会返回多个结果。地点自动补全功能可以更好地解答此类查询。
示例:
- 对
components=country:US|locality:madrid
的地理编码会返回“Madrid, NM 87010, USA”,但美国的其他任何城市均命名为“马德里”。https://maps.googleapis.com/maps/api/geocode/json?components=country:US%7Clocality:madrid&key=YOUR_API_KEY
- 对
input=madrid&components=country:us&types=(regions)
使用地点自动补全功能,同时使用location
和radius
指定视口来偏向位置结果时,会生成对美国几个城市(名为“Madrid”)的响应。https://maps.googleapis.com/maps/api/place/autocomplete/json?location=37.386052,-122.083851&radius=10000&input=madrid&components=country:us&types=(regions)&key=YOUR_API_KEY
- 对
- 如需将邮政编码限制为特定国家/地区,请务必使用 ISO 3166-2 国家/地区代码指定国家/地区限制。例如: