地理编码常见问题解答

本常见问题解答仅涵盖关于 Geocoding API 的问题。 对于涉及整体 Google Maps Platform 的共性问题,请参阅 Google Maps Platform 常见问题解答。另请参阅对地址进行地理编码的最佳实践。

问题排查

问题排查

我发现,地理编码器返回 ZERO_RESULTS 的查询越来越多了。这是怎么回事?

在地理编码器中,模糊不清、不完整和格式错误的查询(例如拼写错误的地址或不存在的地址)很容易产生 ZERO_RESULTS。 如果找不到地址,最好返回 ZERO_RESULTS,而不是部分结果(例如,仅返回郊区,而不是地址)。

如果您的应用需要处理用户输入的地址,那么 Places API 中的地点自动补全功能可能会生成质量更优的结果。 地点自动补全功能可让用户根据自己输入的内容从一组结果中进行选择,从而让用户能够在名称相似的结果之间进行选择,并在拼错地址时调整查询。

如果您的应用需要处理模糊不清或不完整的查询,或者可能包含错误的查询,我们建议您使用 Places API 中的地点自动补全功能,而不是 Geocoding API 中提供的正向地理编码器。如需了解详情,请参阅 对地址进行地理编码的最佳实践和 Google 地图 API 中的地址地理编码博文。

我需要快速响应,但地理编码器对于我的应用来说太慢了。我可以使用什么来更快地获得回复?

对于响应用户输入的应用,由于其对延迟时间高度敏感,我们建议使用 Places API 中的地点自动补全功能(也可在 JavaScript、Android 或 iOS 中使用),而不是地址地理编码。 地点自动填充针对交互式用途进行了优化,因此延迟时间很短。

Geocoding API 中的地址地理编码功能经过优化,可用于完整、明确、格式正确的地址(例如在线表单中输入的配送地址),因此延迟时间比地点自动补全功能更长。正向地理编码器的覆盖范围更广,结果质量更高,但延迟时间略长。

如何缓解 Directions API(旧版)和 Distance Matrix API(旧版)的延迟问题?

请使用地点 ID 而不是地址来指定途经点、起点和目的地。地点 ID 最好从 Places API 中的地点自动补全功能或 Maps JavaScript API 中的地点库获取。另请参阅有关 placeIdOnly 选项的信息,该选项可用于降低地点自动补全的费用。

如果使用地址字符串(而非地点 ID 或经纬度)查询 Directions API(旧版)或 Distance Matrix API(旧版),它们会使用与 Geocoding API 相同的后端,先将该地址转换为地点 ID,然后再计算路线。地点自动补全功能比地址地理编码功能更快。对于在对延迟时间高度敏感的情况下(例如响应用户输入)使用 Directions API(旧版)或 Distance Matrix API(旧版)的应用,我们建议您使用地点自动补全功能获取与这些地址对应的地点 ID,并将这些地点 ID 传递给 Directions API(旧版)或 Distance Matrix API(旧版)。 这种方法可显著缩短延迟时间。如需查看 如何将地点自动补全功能与路线搭配使用的示例,请参阅我们的文档。

如何报告地理编码器中的 bug?

如果您有任何关于正向地理编码器服务的 bug 报告或 功能请求,请使用我们的公开 问题跟踪器告知我们。

地理编码器无法为我的使用情形生成理想的结果。有哪些帮助资源?

请通过我们的公开 问题跟踪器告知我们,并分享一些具体查询,以便我们进行调查,看看是否存在任何导致结果质量问题的 bug 或系统性问题,或者我们是否可以对最佳实践指南进行任何更改,以帮助开发者获得更好的结果。

如何通过使用组成部分过滤条件,让地理编码器返回最佳结果?

在地理编码器中, 组件过滤仅强制执行 postal_code 和 country 限制。以下示例说明了如何根据所需结果以最佳方式使用组件过滤。在示例请求网址中,请务必将 `YOUR_API_KEY` 替换为您的实际 API 密钥。

  • 如需将邮政编码限定在特定国家/地区,请务必使用 ISO 3166-2 国家/地区代码指定国家/地区限制。 例如: components=country:CH|postal_code:8000 返回“8000 Zürich, Switzerland”。
    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),因此允许任何国家/地区的结果,并且法兰克福的结果比法国的任何结果都更合适。
      https://maps.googleapis.com/maps/api/geocode/json?components=country:FRA%7Clocality:gallus&key=YOUR_API_KEY
  • 对于模糊不清的查询,Geocoding API 不一定会返回多个结果。地点自动补全功能可以更好地回答此类查询。

    示例:

    • 对 components=country:US|locality:madrid 进行地理编码会返回“Madrid, NM 87010, USA”,但不会返回美国境内名为“Madrid”的其他城市。
      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 指定视口以 对位置结果进行偏向处理,会生成一个响应,其中包含美国境内多个名为“马德里”的城市。
      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