地理编码常见问题解答

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

问题排查

问题排查

我发现越来越多的查询在使用地理编码器时会返回 ZERO_RESULTS。这是怎么回事?

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

如果您的应用处理用户输入的地址,Places API 中的地点自动补全功能可能会提供质量更高的结果。 借助地点自动补全功能,用户可以根据自己输入的内容从一组结果中进行选择,从而从名称相似的结果中进行选择,并在拼错地址时调整查询。

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

我需要快速响应,而地理编码器速度太慢,不适合我的应用。我可以使用哪些工具来更快地获得回复?

对于响应用户输入且对延迟时间非常敏感的应用,我们建议使用 Places API 中的地点自动补全功能(也适用于 JavaScriptAndroidiOS),而不是地址地理编码。 地点自动填充针对交互式用途进行了优化,因此延迟时间很短。

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

如何减少 Directions API 和 Distance Matrix API 的延迟时间?

使用地点 ID 指定航点、起点和终点,而不是地址。最好通过 Places API 中的地点自动补全功能或 Maps JavaScript API 中的地点库获取地点 ID。另请参阅 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_codecountry 限制。以下示例展示了如何根据您需要的结果,最有效地使用组件过滤。在示例请求网址中,请务必将“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 子行政区。这是因为系统不支持法国的 3 个字母国家/地区代码 (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 进行地理编码会返回“美国新墨西哥州马德里 87010”,但美国没有任何其他名为“马德里”的城市。
      https://maps.googleapis.com/maps/api/geocode/json?components=country:US%7Clocality:madrid&key=YOUR_API_KEY
    • 针对 input=madrid&components=country:us&types=(regions) 使用地点自动补全功能,并使用 locationradius 指定视口以 偏向位置结果,会生成一个响应,其中包含美国多个名为“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