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。响应会针对请求中的每个地点 ID 提供限速。API 不会对提供的地点 ID 执行道路贴靠。 您可以发送
snapToRoads或nearestRoads请求 来查找相关地点 ID,然后将这些 ID 作为speedLimits请求的输入提供。以下示例展示了placeId参数,其中包含两个地点 ID:placeId=ChIJs5ydyTiuEmsR0fRSlU0C7k0&placeId=ChIJW__r4ERXzpQRgkeRL6P0m3Y
key:应用的 API 密钥。您的 应用每次向 Roads API发送请求时,都必须通过在每个请求中添加 API 密钥来标识自己。 了解如何获取密钥。
可选参数
units:是否以公里/小时或英里/小时为单位返回限速。此参数可以设置为KPH或MPH。默认值为KPH。
响应
speedLimits 响应中可能包含以下元素:
speedLimits:道路元数据数组。每个元素都包含以下字段:placeId:地点的唯一标识符。Roads API 返回的所有地点 ID 都将对应于路段。Roads APIspeedLimit:该路段的限速。units:返回KPH或MPH。
snappedPoints:贴靠点数组。仅当请求包含path参数时,此数组才会显示。每个点都包含以下字段:location:包含latitude和longitude值。originalIndex:一个整数,表示原始请求中的相应值。请求中的每个值都应映射到响应中的贴靠值。这些值从0开始编制索引,因此originalIndex为4的点将是传递给path参数的第 5 个纬度/经度的贴靠值。placeId:地点的唯一标识符。Roads API 返回的所有地点 ID 都将对应于路段。Roads API您可以在限速请求中传递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."
}请注意上述响应中有关点稀疏的警告消息 。如果您要请求任意点附近路段的限速,则必须使用从
nearestRoads端点检索到的地点 ID 调用speedLimits。
使用地点 ID 的请求示例
除了使用纬度/经度对,您还可以传递路段的地点 ID。我们建议您使用 snapToRoads 或 nearestRoads 请求获取路段的地点 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 道路跨越 Rio Tejo。大桥本身的地点 ID 为 ChIJUzt97ZEwGQ0RM1JzQfqoDtU。上述响应中的第一个路段是 E90 道路的一部分,地点 ID 为 ChIJX12duJAwGQ0Ra0d4Oi4jOGE。在示例请求中,如果您将道路地点 ID 替换为大桥的地点 ID,则在响应中,speedLimits 数组中将只有两个限速,因为大桥的地点 ID 不引用单个路段。此外,如果所有地点 ID 都不是路段的地点 ID,则响应将不包含任何限速。
使用地点 ID 发出限速请求时,请确保每个地点 ID 都引用一个路段,而不是其他类型的地点。最好使用 snapToRoads 或 nearestRoads 请求检索单个路段的地点 ID,这两种请求都可以通过一次调用返回多个地点 ID。
如果路段针对汽车和卡车公布了不同的限速,该怎么办?
Roads API 仅返回汽车公布的最高限速。