Roads API 会返回指定道路公布的限速信息 细分。如果路段具有可变速度限制,则默认 将返回路段的速度限制。
Roads API 返回的速度限制数据的准确性 。所提供的速度限制数据并非实时数据, 估计、不准确、不完整和/或已过时。请参阅覆盖范围详细信息 查看提供限速数据的区域。
请求
速度限制请求必须通过 HTTPS 发送,并采用以下格式:
https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY
参数用法
必需参数
path
或placeId
参数。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 的速度限制。 您可以发送snapToRoads
或nearestRoads
请求 以查找相关的地点 ID,然后将其作为输入内容提供给speedLimits
请求。以下示例展示了placeId
参数,有两个地点 ID:placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
key
- 您的应用的 API 密钥。您的 因此,应用必须在每次向 Roads API,方法是在每个请求中添加 API 密钥。 了解如何获取密钥。
可选参数
units
- 返回速度限制值(以公里/英里为单位) 小时。此字段可以设置为KPH
或MPH
。默认设置为KPH
。
响应
speedLimits
响应中可能存在以下元素:
speedLimits
- 一组道路元数据。每个元素都包含 以下字段:placeId
- 地点的唯一标识符。返回所有地点 ID Roads API 将对应于路段。speedLimit
- 该路段的速度限制。units
- 返回KPH
或MPH
。
snappedPoints
- 贴靠点数组。此数组存在 仅当请求包含path
参数时。每个点都包含 以下字段:location
- 包含latitude
和longitude
值。originalIndex
- 表示相应值的整数 原始请求中。请求中的每个值都应映射到 贴靠值。这些值是从0
开始编入索引的,因此originalIndex
为4
的点将作为第 5 个点的贴靠值 传递给path
参数的纬度/经度。placeId
- 地点的唯一标识符。返回所有地点 ID Roads API 将对应于路段。 您可以在速度限制请求中传递placeId
,以确定 限速。
warning_message
- 包含用户可见警告的字符串。
使用路径的示例请求
此请求会获取最靠近 穿越瓦斯科达伽马的路径中的指定纬度/经度对 的桥梁。
请求
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 的请求示例
除了使用纬度/经度对,您还可以传递
路段。我们建议您使用
snapToRoads
或 nearestRoads
请求。当您传递地点 ID 时,API 会
用于返回每个地点 ID 所表示路段的速度限制。通过
API 不会对所提供的地点 ID 应用任何道路贴靠。
以下示例请求的是部分路段的速度限制 横跨葡萄牙里斯本瓦斯科达伽马大桥的桥梁
请求
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
的最常见原因是请求速度限制
代表某个非路段地点。
上面的例子使用瓦斯科-达伽马桥梁来解释概念;
这条桥支撑着横跨里约特霍的 E90 公路。桥梁
自身的地点 ID 为 ChIJUzt97ZEwGQ0RM1JzQfqoDtU。第一个路段
属于 E90 公路的一部分,地点 ID 为
ChIJX12duJAwGQ0Ra0d4Oi4jOGE。在示例请求中,如果您将道路
将地点 ID 与桥梁的地点 ID 相关联,那么响应中将只有
speedLimits
数组中的两个速度限制,因为大桥的地点 ID
不是指具体的路段。此外,如果没有
则响应将不包含
速度限制。
使用地点 ID 发出速度限制请求时,请确保每个地点 ID
指的是路段,而不是不同类型的地点。以下对象的地点 ID:
最好使用 snapToRoads
来检索各个路段
或 nearestRoads
请求,其中任何一个均可从
进行一次调用。