地理编码是将地址(例如街道地址)转换为地理坐标(纬度和经度)的过程,您可以利用此类坐标在地图上放置标记,或在地图上定位。本文档重点介绍了对地址进行地理编码时需要考虑的事项。本文介绍了何时最适合使用 Geocoding API,以及何时使用 Places API 地点自动补全服务会带来好处。
一般来说,在对完整地址(例如“48 Pirrama Rd, Pyrmont, NSW, Australia”)进行地理编码时,请使用 Geocoding API。在对不明确(不完整)的地址进行地理编码时,或者对于延迟时间敏感型应用(例如在响应用户输入时),请使用 Places API 地点自动补全服务。
用例和 API 建议
| 用例和 API 建议 | |
|---|---|
| 实时响应用户输入(包括用户输入的模糊、不完整、格式不规范或拼写错误的地址) | 使用 Places API 地点自动补全服务获取地点 ID,然后使用 Geocoding API 将地点 ID 地理编码为 latlng。 |
| 自动化系统处理完整、明确的邮寄地址(例如“48 Pirrama Rd, Pyrmont, NSW, Australia”) | 使用 Geocoding API 网络服务。 |
| 处理模糊查询的自动化系统(例如,不完整、格式不规范或拼写错误的地址) | 建议自动化系统使用 Geocoding API 网络服务。不过,如果自动化系统从用户输入中获取的模糊、不完整或拼写错误的查询的比例较高,则可以考虑添加交互式地点自动补全 widget,以便用户选择结果,从而避免拼写错误的地址。 |
| 使用 Directions API(旧版)或 Distance Matrix API(旧版)时出现延迟时间问题,且出发地、目的地或途经点指定为地址字符串 | 使用 Places API 地点自动补全服务获取地点 ID,然后将地点 ID 传递给 Directions API(旧版)或 Distance Matrix API(旧版),从而缩短地理编码延迟时间。 |
响应用户输入
实时响应用户输入的应用有两个主要考虑因素会影响 API 的选择:
- 用户输入通常涉及逐步输入地址(例如“123 Main Street”),因此能够对不完整、不明确的地址进行地理编码非常有用,因为这样可以帮助用户更快地获得结果。
- 响应用户输入的应用极易受到延迟时间的影响。
这两点考虑因素使得 Places API 中的地点自动补全服务非常适合用于响应用户输入。地点自动补全功能旨在返回多个可能的选项,并允许用户在这些选项之间进行选择。您可以限制 Places API 仅搜索地理编码或地址,同时排除商家。此外,自动补全查找功能可以偏向于返回特定位置的结果。Places API 会返回一个地点 ID,该 ID 可作为完全消除歧义的位置传递给 Geocoding API 网络服务,然后该服务会返回完整的地址详细信息,并将该地址地理编码为 latlng。地点 ID 还可以传递给其他 API,例如 Directions API(旧版)和 Distance Matrix API(旧版)(请参阅缩短延迟时间)。
Geocoding API 中的地址地理编码延迟时间要长得多,并且对于不完整或模棱两可的查询,生成的搜索结果也不太准确,因此不建议用于必须实时响应用户输入的应用。
详细了解适用于 Android、iOS、JavaScript 和 Places API 的地点自动补全服务。
自动化系统
自动化系统处理完整、明确的邮政地址:明确的查询(例如完整的邮政地址字符串,如“48 Pirrama Rd, Pyrmont, NSW, Australia”)最好由 Geocoding API Web 服务处理。地址地理编码后端可提供更广泛的全球地址覆盖范围,并针对这些类型的完整、明确的查询进行了优化,可提供高质量的结果。
自动化系统处理不明确的查询: 不明确的查询是指包含格式不规范的地址、不完整的地址或拼写错误的地址的查询。对于自动化系统,我们建议使用 Geocoding API 网络服务。不过,Geocoding API 并非旨在处理模糊不清的查询,因此在响应模糊不清的查询时,可能会生成不太准确的结果或零结果。如果您的自动化系统处理了大量从用户输入内容中派生的模糊查询,那么您可能会受益于使用 Places API 中的地点自动补全服务向应用添加互动元素,因为该服务旨在返回多个可能的选项,并允许用户在这些选项之间进行选择。Places API 会返回一个地点 ID,该 ID 可作为完全消除歧义的位置传递给 Geocoding API 网络服务,然后该服务会返回完整的地址详细信息,并将地址地理编码为经纬度。 详细了解适用于 Android、iOS、JavaScript 和 Places API 的地点自动补全服务。
缩短 Directions API(旧版)和 Distance Matrix API(旧版)的延迟时间
如果起点、终点或航点指定为地址字符串,Directions API(旧版)和 Distance Matrix API(旧版)会使用与 Geocoding API 相同的后端,在计算路线之前对这些地址进行地理编码。与将相同位置指定为 latlng 或地点 ID 相比,这会显著增加延迟时间。
如果您的应用在对延迟时间要求较高的场景(例如响应用户输入)中使用 Directions API(旧版)或 Distance Matrix API(旧版),并且您的起点、目的地或途经点最初指定为地址字符串,我们建议您使用 Places API 的地点自动补全服务将地址字符串转换为地点 ID,然后将地点 ID 传递给 Directions API(旧版)或 Distance Matrix API(旧版),从而最大限度地缩短延迟时间。详细了解适用于 Android、iOS、JavaScript 和 Places API 的地点自动补全服务。 另请参阅 地点自动补全和路线的 JavaScript 示例。
总结
根据您的应用场景,您可以单独使用 Geocoding API,也可以将其与地点自动补全服务结合使用。这样,您就可以构建提供准确地理编码结果并缩短延迟时间的应用。
管理错误和重试
如果您收到 UNKNOWN_ERROR 响应,则表示发生了暂时性错误,最好在短暂延迟后重试。我们建议您使用 Google Maps Platform 网络服务
客户端库,这些库包含重试逻辑并支持 Google Maps Platform 专业版方案身份验证。
适用于 Google 地图服务的 Java 客户端、Python 客户端、Go 客户端和 Node.js 客户端是由社区支持的客户端库,可在 GitHub 上下载并贡献代码,您还可以在 GitHub 上找到安装说明和示例代码。
如果您收到 OVER_QUERY_LIMIT 状态代码响应,则表示您已超出相应 API 的用量限额。我们建议您尝试这些
使用情况优化策略。