本常见问题解答涵盖特定于 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 或经纬度)查询 Directions API 或 Distance Matrix API 时,它们会使用与 Geocoding API 相同的后端,将该地址转换为地点 ID,然后再计算路线。地点自动补全速度比地址地理编码更快。对于在极易受到延迟影响的情况下(例如响应用户输入)的应用使用 Directions API 或 Distance Matrix API,我们建议您使用地点自动补全功能获取与这些地址对应的地点 ID,然后将地点 ID 传递给 Directions API 或 Distance Matrix API。 这种方法可显著缩短延迟时间。请参阅我们的文档,查看 有关如何使用地点自动补全功能获取路线的示例。
- 如何报告地理编码器中的 bug?
- 对于我的使用情形,地理编码器未能获得满意的结果。我可以获得哪些帮助?
-
请使用我们公开的 问题跟踪器告知我们,并分享一些具体查询,以便我们进行调查,了解是否有任何 bug 或系统问题会导致结果质量问题,或者我们可以对最佳做法指南做出任何更改,以帮助开发者获得更好的结果。
- 如何在地理编码器中使用组成部分过滤功能获得最佳效果?
-
在地理编码器中, 组成部分过滤仅强制执行
postal_code
和country
限制。以下示例说明了如何根据所需结果最有效地使用组成部分过滤。在示例请求网址中,请务必将“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)
使用地点自动补全功能,并使用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
- 对
- 如需将邮政编码限定于特定国家,请务必使用 ISO 3166-2 国家/地区代码指定国家/地区限制。例如: