错误
如果发生错误,系统会返回标准格式的错误响应正文,并将 HTTP 状态代码设置为错误状态。
响应包含一个对象,该对象包含一个 error 对象,其中包含以下键:
code:与响应的 HTTP 状态相同。message:对错误的简短说明。status:一个状态代码,用于指明错误的性质。
例如,发送无效的 placeId 参数会返回以下错误:
{ "error": { "code": 400, "message": "\"placeId\" value is malformed: \"aChIJqaknMTeuEmsRUYCD5Wd9ARM\"", "status": "INVALID_ARGUMENT" } }
可能的错误包括:
| 代码 | 状态 | 消息 | 问题排查 |
|---|---|---|---|
| 400 | INVALID_ARGUMENT |
您提供的密钥无效。 | 您的 API 密钥无效或未包含在请求中。 请确保您已包含整个密钥,并且已为此密钥 启用 API。 |
| 400 | INVALID_ARGUMENT |
“path”参数包含无效值:☃ | 您的请求包含无效的实参。此错误最可能的原因包括:
如果为不再存在的道路或非道路地点传递 |
| 403 | PERMISSION_DENIED |
未注册的请求已被屏蔽。请使用 Google Developers Console 注册。 | 请求被拒绝,原因如下:
为了使用 Google Maps Platform 产品,必须为 账号启用结算功能,并且所有请求都必须包含有效的 API 密钥。如需解决此问题, 请按以下步骤操作:
|
| 404 | NOT_FOUND |
此服务需要 HTTPS。 | 请确保您向
https://roads.googleapis.com/ 而不是
http://roads.googleapis.com/ 发送请求。 |
| 429 | RESOURCE_EXHAUSTED |
由于达到了项目请求限制,请求受到限制。 | 您已超出在 Google Cloud Platform Console 中配置的请求限制。此限制通常设置为每日请求数 、每 100 秒请求数和每位用户每 100 秒请求数。 应配置此限制,以防止单个用户或一小部分 用户耗尽您的每日配额,同时仍允许所有用户进行合理 访问。如需配置这些限制,请参阅限制 API 用量 。 |
指数退避算法
如果请求失败,您应确保使用指数退避算法重试请求。例如,如果请求失败一次,请在一秒后重试;如果再次失败,请在两秒后重试,然后是四秒,依此类推。这样可以确保,当许多客户端尝试快速重试请求时,损坏的请求或大规模故障不会使 Google 的服务器过载。
有关问题排查的常见问题解答
实施问题
- 我应该以什么频率对车辆位置进行采样?
- 建议每 1-10 秒采样一次,以获得高质量的贴合道路结果。
- 每个查询可以发送的点数是否有限制?
- 是,一个查询最多可以包含 100 个点。
- 我应该使用什么精度来存储贴合的纬度/经度对?
- 为了确保贴合的路径在所有缩放级别(即使在最大缩放级别)都遵循道路,您应以 7 位小数的精度存储贴合的纬度/经度对。
- 我可以使用编码折线来显示贴合的路径吗?
- 编码折线仅指定为 5 位小数的精度,这会导致大约 2 米的误差。因此,如果您希望贴合的路径在高缩放级别遵循道路,则不适合使用编码折线。
常见问题
- 某些点未贴合,或者贴合的路径中存在间隙。如何更正此问题?
- 为什么我在放大时,贴合的路径会呈锯齿状或与道路略有偏差?
-
- 您是否在显示贴合的纬度/经度对之前截断了其精度?如果存储贴合的纬度/经度对的精度小于 7 位小数,则在地图上显示贴合的路径时会导致精度错误。
- 您是否使用了编码折线?编码折线会将纬度/经度对截断为 5 位小数,这会引入几米的误差,导致在高缩放级别下,线条呈锯齿状或与道路略有偏差。
如果上述两种情况都不是,则可能是地图图块最近已更新,导致它们与用于贴合的道路索引不同步。如果只有少数查询受到影响,则很可能是此原因。由于 Google 地图会定期更新,因此这种情况可能会偶尔发生,如果您经常查看地图上的旧路径(例如几周前贴合的路径),则这种情况可能会更频繁地发生。为了获得最佳的可视化效果,您应在地图上显示旧路径之前重新贴合这些路径,以尽量减少地图图块与用于贴合的道路索引之间的不一致性。
- 什么原因会导致道路 X 的限速信息显示不正确?
- 限速信息来自多个来源,这些来源的准确性和覆盖范围各不相同。如果您发现某种模式(例如,特定道路类型或特定区域的限速信息始终错误),请按照以下步骤告知我们:
- 在桌面设备上打开 Google 地图,或在 Android 设备上打开 Google 地图应用。
- 打开左侧边菜单。
- 选择发送反馈 。注意:系统可能会提示您登录。
- 选择修改地图 。
- 选择要修改的路段。
- 选择下一步 。
- 在“其他”字段中,指明该道路的限速信息有误。
- 选择提交 。
- 为什么贴合的路径会切角,而不是沿着道路行驶?
-
如需更正此问题,请检查以下内容:
- 确保
interpolate参数设置为true。 - 检查原始数据点的采样间隔是否足够小(每 1-10 秒)。
- 确保
- 为什么对于限速信息没有变化的道路,贴合的路径中会返回很多路段?
- 当
interpolate参数设置为true时,沿实际道路查询会返回一条多段线,该多段线会沿着道路绕过拐角、弯道和环形交叉路口。如果道路弯曲,即使限速信息没有变化,也会返回多个路段,以便创建一条紧密贴合道路几何形状的折线。