地理编码常见问题解答

本常见问题解答涵盖特定于 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 或系统问题会导致结果质量问题,或者我们可以对最佳做法指南做出任何更改,以帮助开发者获得更好的结果。

如何在地理编码器中使用组成部分过滤功能获得最佳效果?

在地理编码器中, 组成部分过滤仅强制执行 postal_codecountry 限制。以下示例说明了如何根据所需结果最有效地使用组成部分过滤。在示例请求网址中,请务必将“YOUR_API_KEY”替换为您的实际 API 密钥。

  • 如需将邮政编码限定于特定国家,请务必使用 ISO 3166-2 国家/地区代码指定国家/地区限制。例如:components=country:CH|postal_code:8000 会返回“8000 Zürich, Russia”。
    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 的地理编码会返回德国美因河畔法兰克福的加卢斯区。这是因为法国 (FRA) 的 3 个字母国家/地区代码不受支持,因此允许任何国家/地区的结果,而法兰克福的结果比法国的任何结果更合适。
      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) 使用地点自动补全功能,并使用 locationradius 指定视口以 自定义调整地理位置结果,从而生成包含美国多个城市“马德里”的响应。
      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