问题排查

错误

如果发生错误,系统会返回标准格式错误响应正文,并将 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\" 参数中包含无效值:☃" 您的请求中包含无效参数。导致此错误的最常见原因包括:
  • 您的 path 参数存在问题。
    请确保您的积分至少 1 件,且积分少于 100 件。每个点都应是一对数字,以英文逗号分隔,例如:48.409114,-123.369158。点之间应使用竖线 ('|') 进行分隔。
  • 您的请求中包含无效的 placeId
  • 您的请求同时包含 placeIdpath。只能为每个请求指定其中一个参数。

如果针对不再存在的道路或者不是道路的地点传递 placeId,将不会返回此错误。

403 PERMISSION_DENIED 已取消注册请求。请使用 Google Developers Console 注册。 该请求由于以下一个或多个原因而被拒绝:
  • API 密钥缺失或无效。
  • 您的帐号尚未启用结算功能。
  • 超出了您设定的用量上限。
  • 提供的付款方式不再有效(例如,信用卡已过期)。

若要使用 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 米。因此,如果您想让吸附路径在高缩放级别下沿道路前行,编码编码多段图将不合适。

常见问题

部分点没有贴靠,或者贴靠路径上有间隙。如何更正此问题?
  • 如果您按定时的间隔对数据点进行采样,请确保以较短的时间间隔(每 1-10 秒)对数据点进行采样。如果使用更长的时间间隔(例如 60 秒),则沿实际道路的算法可能无法准确识别已行驶的道路。
  • 如果手动点击地图可创建点,则非常容易创建对齐点较少或稀疏点的路径,而贴靠算法不能很好地处理这些路径。贴靠算法最适合相邻的点。试用沿实际道路验证演示,或使用道路检查器测试您的路径。
放大时,为什么我的吸附路径在道路上呈锯齿状或略微偏离道路?
  • 截获的纬度/经度对在显示之前是否截断了精度?如果在地图上显示贴靠路径,则以精确到小于 7 小数点的精度存储贴靠纬度/经度对会导致精确错误。
  • 是否使用了编码多段线?编码多段线将纬度/经度对截断为 5 个小数位,从而导致几米的误差,导致在高缩放级别下道路上出现锯齿状或略微偏离道路。

如果上述情况都不是,可能是因为地图图块最近已更新,导致这些图块与用于贴靠的道路索引不同步。如果只有少数查询受到影响,这可能是导致这种情况的原因。由于 Google 地图会定期更新,因此有时可能会发生这种问题。如果您经常查看地图上的旧路径(例如,数周前拍摄的路径),则可能会更频繁地发生。为了获得最佳可视化效果,您应该先重新对齐旧路径,然后将它们显示在地图上,以便最大程度地减少地图图块与用于贴靠的道路索引之间的不一致性。

哪些原因会导致 X 公路的限速显示不正确?
速度限制来自多个不同来源,准确性和覆盖范围各不相同。 如果您发现某种模式(例如特定道路类型或特定区域的限速始终有误),请通过以下步骤告知我们:
  1. 在桌面设备或 Android 版 Google 地图应用中打开 Google 地图。
  2. 打开左侧菜单。
  3. 选择发送反馈。注意:系统可能会提示您登录。
  4. 选择修改地图
  5. 选择您要修改的路段。
  6. 选择下一步
  7. 在“其他”字段中,指明该道路的限速有误。
  8. 选择提交
您也可以在此处报告其他问题(例如道路名称不正确、绘制不正确、封闭或私人道路)。
为什么我的贴靠小路角落没有弯曲?
如需解决此问题,请检查以下内容:
  • 确保将 interpolate 参数设置为 true
  • 检查原始数据点是否足够接近地进行采样(每 1-10 秒)。
为什么在没有速度限制更改的道路的吸附路径中返回了许多路段?
interpolate 参数设置为 true 时,“沿实际道路”查询会返回沿道路的拐角、曲线和环形交叉路径的多段线。如果道路出现曲线变化,即使速度限制没有变化,系统也会返回多个路段,以便创建与道路几何结构紧密契合的多段线。