速度限制

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

Roads API 会返回给定路段的发布速度限制。如果路段具有可变速度限制,则返回该路段的默认速度限制。

无法保证 Roads API 返回的速度限制数据的准确性。所提供的速度限制数据并非实时数据,可能是预估、不准确、不完整和/或过时的数据。请参阅覆盖范围详细信息,了解提供速度限制数据的区域。

请求

速度限制请求必须通过 HTTPS 发送,并采用如下格式:

https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY

参数使用情况

必需参数

  • pathplaceId 参数。
    • path - 最多包含 100 个表示路径的纬度/经度对的列表。纬度值和经度值必须用英文逗号分隔。 纬度/经度对必须以竖线字符 ("|”) 分隔。当您提供 path 参数时,API 会先捕获车辆行驶过的最可能道路的路径(就像对 snapToRoads 请求所做的那样),然后确定相关路段的速度限制。如果您不希望 API 捕获路径,则必须传递 placeId 参数(如下所述)。以下示例展示了包含三个纬度/经度对的 path 参数:path=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796
    • placeId - 表示一个或多个路段的地点 ID。请确保每个地点 ID 都对应一个路段,而不是不同类型的地点。每个请求最多可以传递 100 个地点 ID。该 API 不会对提供的地点 ID 执行道路贴靠操作。响应包括请求中每个地点 ID 的速度限制。您可以发送 snapToRoadsnearestRoads 请求来查找相关的地点 ID,然后将其作为输入提供给 speedLimits 请求。以下示例展示了包含两个地点 ID 的 placeId 参数:placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
  • key - 您的应用的 API 密钥。您的应用必须在每次向 Roads API 发送请求时标识自身的身份,即在每个请求中包含 API 密钥。了解如何获取密钥

可选参数

  • units - 以公里/小时还是英里/小时为单位返回速度限制。此参数可设置为 KPHMPH。默认值为 KPH

响应

speedLimits 响应中可能包含以下元素:

  • speedLimits - 道路元数据的数组。每个元素均由以下字段组成:
    • placeId - 地点的唯一标识符。Roads API 返回的所有地点 ID 都将与路段相对应。
    • speedLimit - 该路段的速度限制。
    • units - 返回 KPHMPH
  • snappedPoints - 吸附点数组。仅当请求包含 path 参数时,此数组才会显示。每个点都包含以下字段:
    • location - 包含 latitudelongitude 值。
    • originalIndex - 一个整数,表示原始请求中的相应值。请求中的每个值都应映射到响应中贴靠的值。这些值会从 0 编入索引,因此 originalIndex4 的点将是传递给 path 参数的第 5 个纬度/经度的贴靠值。
    • placeId - 地点的唯一标识符。Roads API 返回的所有地点 ID 都将与路段对应。您可以在速度限制请求中传递 placeId 以确定该路段沿线的速度限制。
  • warning_message - 包含用户可见警告的字符串。

使用路径的示例请求

请求到达与葡萄牙里斯本的 Vasco da Gama 桥之间的路径中最接近指定纬度/经度对的每个路段的速度限制。

请求

https://roads.googleapis.com/v1/speedLimits?path=38.75807927603043,-9.03741754643809|38.6896537,-9.1770515|41.1399289,-8.6094075&key=YOUR_API_KEY

响应

{
  speedLimits:
  [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ],
  snappedPoints:
  [
    {
      location:
      {
        latitude: 38.75807927603043,
        longitude: -9.037417546438084
      },
      originalIndex: 0,
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE"
    },
    {
      location:
      {
        latitude: 38.689653701836896,
        longitude: -9.177051486847693
      },
      originalIndex: 1,
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU"
    },
    {
      location:
      {
        latitude: 41.13993011767777,
        longitude: -8.609400794783655
      },
      originalIndex: 2,
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M"
    }
  ],
  warningMessage: "Input path is too sparse. You should provide a path where consecutive points are closer to each other. Refer to the 'path' parameter in Google Roads API documentation."
}

请注意上述响应中的点稀疏性的警告消息。如果您在任意时间点请求最近的路段的速度限制,则必须调用 speedLimits 并改用从 nearestRoads 端点检索到的地点 ID。

使用地点 ID 的请求示例

您可以传递路段的地点 ID,而不是使用纬度/经度对。我们建议您使用 snapToRoadsnearestRoads 请求获取路段的地点 ID。当您传递地点 ID 时,该 API 会返回由每个地点 ID 表示的路段的速度限制。此 API 不会对所提供的地点 ID 应用任何道路贴靠效果。

以下示例展示了穿越葡萄牙里斯本的 Vasco da Gama 桥的一些路段的速度限制。

请求

https://roads.googleapis.com/v1/speedLimits?placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU&placeId=ChIJJ4vQRudkJA0RpednU70A-5M&key=YOUR_API_KEY

响应

{
  "speedLimits": [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ]
}

使用建议

为尽量减少调用“速度限制”服务的次数,我们建议您每隔 5 到 15 分钟对资源的位置进行采样(确切的值取决于资产的传输速度)。如果资产是静止的,单个位置样本就足够了(无需多次调用)。

为了尽可能缩短总体延迟时间,我们建议您在累积一些数据后再调用速度限制服务,而不是每次收到移动资产位置时都调用 API。

为什么缺少部分/所有速度限制?

缺失 speedLimits 的最常见原因是请求获取非路段地点的速度限制。

上面的示例使用 Vasco da Gama 桥来说明概念;该桥支持横跨里约热内卢的 E90 公路。迁移桥本身的地点 ID 为 ChIJUzt97ZEwGQ0RM1JzQfqoDtU。上述响应中的第一个路段是 E90 道路的一部分,并且地点 ID 为 ChIJX12duJAwGQ0Ra0d4Oi4jOGE。在示例请求中,如果将道路地点 ID 替换为桥梁的地点 ID,则响应中将只有 speedLimits 数组存在两个速度限制,因为桥梁的地点 ID 不会引用单个路段。此外,如果没有地点 ID 适用于道路路段,则响应将不包含任何速度限制。

使用地点 ID 发出速度限制请求时,请确保每个地点 ID 均引用一个路段,而不是不同类型的地点。最好使用 snapToRoadsnearestRoads 请求检索各个路段的地点 ID,这两个请求都可以从单次调用返回多个地点 ID。