错误
在发生错误的情况下,系统将返回标准格式的错误响应正文,并将 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 控制台中配置的请求限制。此限制通常设置为每天请求数、每 100 秒请求数和每个用户每 100 秒请求数。 此限制应配置为防止单个或一小部分用户耗尽您的每日配额,同时仍允许所有用户合理访问。如需配置这些限制,请参阅限制 API 用量。 |
指数退避算法
当请求失败时,您应确保通过指数退避算法重试请求。例如,如果请求失败一次,一秒后重试;如果再次失败,则两秒后重试;然后是四秒后重试;依此类推。这可确保中断的请求或大规模故障不会因很短时间内许多客户端试图重试请求而给 Google 的服务器造成冲击。
问题排查常见问题解答
实施问题
- 我应该以什么频率采样车辆位置信息?
- 建议每 1-10 秒更新一次,以获得高质量的路线贴合结果。
- 每次查询可以发送的点数是否有上限?
- 是的,一个查询最多可以包含 100 个点。
- 我应该使用什么精度来存储经过截断处理的纬度/经度对?
- 为了确保在所有缩放级别(即使在最大缩放级别)下,已吸附的路径都沿着道路延伸,您应将已吸附的纬度/经度对存储为小数 7 位精度。
- 我可以使用编码多段线显示已捕获的路径吗?
- 编码的多段线的精度仅指定为小数点后 5 位,这会导致误差约为 2 米。因此,如果您希望在高缩放级别下,已捕获的路径沿着道路,则编码多段线不适合。
常见问题
- 有些点未贴靠,或者贴靠路径之间存在间隙。如何更正此问题?
-
- 如果您按时间间隔采样点,请确保采样点的间隔时间较短(每 1-10 秒采样一次)。如果使用较长的间隔时间(例如 60 秒),路线贴合算法可能无法准确确定所经道路。
- 如果您手动点击地图来创建点,很容易创建点数较少或点状稀疏的路径,而这些路径会导致捕获算法无法正常处理。吸附算法对靠近的点最有效。试用“贴靠到道路”演示版,或使用道路检查器测试路径。
- 为什么我在放大时,已捕获的路径会锯齿状或与道路略有偏差?
-
- 您是否会在显示已对齐的纬度/经度对之前截断其精度?如果以小于 7 位小数的精度存储已修剪的纬度/经度对,则在地图上显示已修剪的路径时会导致精度误差。
- 您是否使用了编码多段线?编码多段线会将纬度/经度对截断到 5 位小数,这会带来几米的误差,从而导致在高缩放级别下,线条呈锯齿状或略微偏离道路。
如果不存在上述情况,则表明地图图块可能最近更新过,导致其与用于贴靠的道路索引不同步。如果只有少数查询受到影响,这可能就是原因。由于 Google 地图会定期更新,因此这种情况可能会偶尔发生。如果您经常查看地图上的旧路线(例如几周前创建的路线),这种情况可能会更频繁地发生。为了实现最佳可视化,您应该先重新截取旧路径,然后再将其显示在地图上,从而最大限度地减少地图图块与用于贴靠的道路索引之间的不一致。
- 什么原因会导致 X 路的限速显示不正确?
- 速度限制来自多个来源,这些来源的准确性和覆盖范围各不相同。如果您发现某种模式,例如特定道路类型的限速或特定区域的限速始终有误,请按照以下步骤告诉我们:
- 在桌面设备上打开 Google 地图,或在 Android 设备上打开 Google 地图应用。
- 打开左侧菜单。
- 选择发送反馈。注意:系统可能会提示您登录。
- 选择修改地图。
- 选择要修改的道路路段。
- 选择下一步。
- 在“其他”字段中,指明相应道路的限速有误。
- 选择提交。
- 为什么我的路径会沿着路边截断,而不是沿着道路?
-
如需解决此问题,请检查以下各项:
- 确保将
interpolate
参数设置为true
。 - 检查原始数据点的采样间隔时间是否足够接近(每 1-10 秒)。
- 确保将
- 为什么对于没有限速变化的道路,系统会在已修剪的路径中返回许多路段?
- 当
interpolate
参数设置为true
时,贴合道路查询会返回沿着拐角、弯道和环岛的道路返回的多段线。如果道路是弯曲的,则系统会返回多个路段,即使速度限制不变也是如此,以便创建紧贴道路几何图形的多段线。