问题排查

错误

如果发生错误,系统将返回标准格式的错误响应正文,并将 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 时,贴靠道路查询会返回一条多段线,该多段线沿着转角、弯道和环岛周围的道路。如果道路会弯曲,即使速度限制未变,系统也会返回多个路段,以便创建紧随道路几何形状的多段线。