问题排查

错误

如果出现错误,系统将返回标准格式的错误响应正文,并将 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. 在桌面计算机上打开 Google 地图,或打开 Android 版 Google 地图应用。
  2. 打开左侧菜单。
  3. 选择发送反馈。注意:系统可能会提示您登录。
  4. 选择修改地图
  5. 选择要修改的路段。
  6. 选择下一步
  7. 在“其他”字段中,指明相应道路的限速有误。
  8. 选择提交
您还可以通过此页面报告其他问题(例如道路名称不正确、绘制不正确、已关闭或为私有道路)。
为什么我的贴合路径会抄近路,而不是沿着道路行驶?
如需纠正此问题,请检查以下各项:
  • 确保 interpolate 参数设置为 true
  • 检查原始数据点的采样间隔是否足够短(每 1-10 秒)。
为什么在没有限速变化的道路上,贴合路径中返回了许多路段?
如果将 interpolate 参数设置为 true,贴合道路查询会返回一条折线,该折线沿着道路绕过拐角、弯道和环岛。如果道路弯曲,即使限速没有变化,也会返回多个路段,以便创建一条紧贴道路几何形状的折线。