你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Route - Get Route Matrix
用于获取路线矩阵,其中显示了出发地和目的地列表中所有可能对的行程时间和距离。
Get Route Matrix
API 是一个 HTTP GET
请求,用于计算出发地和目的地列表中所有可能对的行程时间和距离。 与 获取路线方向 API 不同,此 API 通过提供从每个源到每个目的地的路由成本(行程时间和距离)来注重效率。 有关详细信息,请参阅 azure Maps 路线服务
对于每个给定源,服务将计算从该源路由到每个给定目标的成本。 可以将源集和目标集视为表的列和行标题,表中每个单元格都包含从源路由到该单元格的目标的成本。 例如,假设一家食品送货公司有 20 名司机,他们需要找到最接近的司机从餐厅拿起送货。 若要解决此用例,可以调用矩阵路由 API。
对于每个路线,将返回行程时间和距离。 可以使用计算成本来确定使用路线方向 API 计算哪些详细路由。
异步请求矩阵的最大大小为 700,对于同步请求,100(源数乘以目标数)。
提交同步路由矩阵请求
如果你的方案需要同步请求,并且矩阵的最大大小小于或等于 100,则可能需要发出同步请求。 此 API 的矩阵的最大大小为 100(原点数乘以目标数)。 考虑到该约束,可能的矩阵维度的示例包括:10x10、6x8、9x8(不需要正方形)。
GET https://atlas.microsoft.com/route/matrix/sync/json?api-version=1.0&subscription-key={subscription-key}
提交异步路由矩阵请求
异步 API 适用于处理大量相对复杂的路由请求。 使用异步请求发出请求时,默认情况下,服务会返回响应标头的“位置”字段中的重定向 URL 的 202 响应代码。 应定期检查此 URL,直到响应数据或错误信息可用。 如果请求中的 waitForResults
参数设置为 true,则如果在 120 秒内完成请求,用户将收到 200 响应。
此 API 的矩阵的最大大小 700(原点数乘以目标数)。 考虑到该约束,可能的矩阵维度的示例包括:50x10、10x10、28x25。 10x70 (不需要正方形)。
异步响应的存储时间为 24 小时
GET https://atlas.microsoft.com/route/matrix/json?api-version=1.0&subscription-key={subscription-key}
下面是一系列典型的异步操作:
客户端向 Azure Maps 发送路由矩阵 GET 请求
服务器将使用以下项之一进行响应:
HTTP
202 Accepted
- 已接受路由矩阵请求。HTTP
Error
- 处理路由矩阵请求时出错。 这可能是 400 错误请求或任何其他错误状态代码。如果已成功接受矩阵路由请求,则响应中的 Location 标头包含用于下载请求结果的 URL。 此状态 URI 如下所示:
GET https://atlas.microsoft.com/route/matrix/{matrixId}?api-version=1.0?subscription-key={subscription-key}
- 客户端在步骤 3 中获取的下载 URL 上发出 GET 请求以下载结果
下载同步结果
为路由矩阵同步 API 发出 GET 请求时,服务将返回 200 响应代码以获取成功的请求和响应数组。 响应正文将包含数据,并且以后无法检索结果。
下载异步结果
当请求发出 202 Accepted
响应时,将使用异步管道处理请求。 系统会提供一个 URL,用于在响应的位置标头中检查异步请求的进度。 此状态 URI 如下所示:
GET https://atlas.microsoft.com/route/matrix/{matrixId}?api-version=1.0?subscription-key={subscription-key}
当发出 GET
请求时,位置标头提供的 URL 将返回以下响应。
HTTP
202 Accepted
- 已接受矩阵请求,但仍正在处理。 请在一段时间后重试。
HTTP
200 OK
- 已成功处理矩阵请求。 响应正文包含所有结果。
GET https://atlas.microsoft.com/route/matrix/{format}?api-version=1.0
URI 参数
名称 | 在 | 必需 | 类型 | 说明 |
---|---|---|---|---|
format
|
path | True |
string |
成功接受矩阵路由请求后收到的矩阵 ID。 |
api-version
|
query | True |
string |
Azure Maps API 的版本号。 |
请求头
名称 | 必需 | 类型 | 说明 |
---|---|---|---|
x-ms-client-id |
string |
指定哪个帐户与 Microsoft Entra ID 安全模型结合使用。 它表示 Azure Maps 帐户的唯一 ID,可以从 Azure Maps 管理平面帐户 API 检索。 若要在 Azure Maps 中使用 Microsoft Entra ID 安全性,请参阅以下 文章 以获取指导。 |
响应
名称 | 类型 | 说明 |
---|---|---|
200 OK |
矩阵请求已成功处理。 响应正文包含所有结果。 |
|
202 Accepted |
仅支持异步请求。 已接受请求:已接受请求进行处理。 请使用位置标头中的 URL 重试或访问结果。 标头 Location: string |
|
Other Status Codes |
发生意外错误。 |
安全性
AADToken
这些 Microsoft Entra OAuth 2.0 流。 与 Azure 基于角色的访问配对时, 控制它可用于控制对 Azure Maps REST API 的访问。 Azure 基于角色的访问控制用于指定对一个或多个 Azure Maps 资源帐户或子资源的访问。 任何用户、组或服务主体都可以通过内置角色或由一个或多个对 Azure Maps REST API 的权限组成的自定义角色授予访问权限。
若要实现方案,建议查看
笔记
- 此安全定义 要求 使用
x-ms-client-id
标头来指示应用程序请求访问的 Azure Maps 资源。 这可以从 地图管理 API获取。
Authorization URL
特定于 Azure 公有云实例。 主权云具有唯一的授权 URL,Microsoft Entra ID 配置。
* Azure 基于角色的访问控制是通过 Azure 门户、PowerShell、CLI、Azure SDK 或 REST API 从 Azure 管理平面 配置的。
* 使用 azure Maps Web SDK
- 有关Microsoft标识平台的详细信息,请参阅 Microsoft标识平台概述。
类型:
oauth2
流向:
implicit
授权 URL:
https://login.microsoftonline.com/common/oauth2/authorize
作用域
名称 | 说明 |
---|---|
https://atlas.microsoft.com/.default | https://atlas.microsoft.com/.default |
subscription-key
这是在 Azure 门户中或使用 PowerShell、CLI、Azure SDK 或 REST API 创建 Azure Maps 帐户 时预配的共享密钥。
使用此密钥,任何应用程序都可以访问所有 REST API。 换句话说,此密钥可用作颁发密钥的帐户中的主密钥。
对于公开的应用程序,我们建议使用 机密客户端应用程序 方法来访问 Azure Maps REST API,以便安全地存储密钥。
类型:
apiKey
在:
query
SAS Token
这是一个共享访问签名令牌,它通过 Azure 门户、PowerShell、CLI、Azure SDK 或 REST API 通过 Azure 管理平面在 azure Maps 资源
使用此令牌,任何应用程序都有权使用 Azure 基于角色的访问控制进行访问,并精细控制特定令牌的过期、速率和区域。 换句话说,SAS 令牌可用于允许应用程序以比共享密钥更安全的方式控制访问。
对于公开的应用程序,建议在 映射帐户资源 上配置允许的源的特定列表,以限制呈现滥用并定期续订 SAS 令牌。
类型:
apiKey
在:
header
示例
Successfully retrieve the status for a route matrix request
示例请求
GET https://atlas.microsoft.com/route/matrix/11111111-2222-3333-4444-555555555555?api-version=1.0
示例响应
{
"formatVersion": "0.0.1",
"matrix": [
[
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 495,
"travelTimeInSeconds": 134,
"trafficDelayInSeconds": 0,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-27T22:57:43+00:00"
}
}
},
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 647651,
"travelTimeInSeconds": 26835,
"trafficDelayInSeconds": 489,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-28T06:22:44+00:00"
}
}
}
],
[
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 338,
"travelTimeInSeconds": 104,
"trafficDelayInSeconds": 0,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-27T22:57:13+00:00"
}
}
},
{
"statusCode": 200,
"response": {
"routeSummary": {
"lengthInMeters": 647494,
"travelTimeInSeconds": 26763,
"trafficDelayInSeconds": 469,
"departureTime": "2018-07-27T22:55:29+00:00",
"arrivalTime": "2018-07-28T06:21:32+00:00"
}
}
}
]
],
"summary": {
"successfulRoutes": 4,
"totalRoutes": 4
}
}
定义
名称 | 说明 |
---|---|
Error |
资源管理错误附加信息。 |
Error |
错误详细信息。 |
Error |
错误响应 |
Route |
路由节的摘要对象。 |
Route |
矩阵结果对象 |
Route |
此对象是从成功的路由矩阵调用返回的。 例如,如果提供了 2 个源和 3 个目标,则每个数组有 3 个元素。 每个元素的内容取决于查询中提供的选项。 |
Route |
输入矩阵中当前单元格的响应对象。 |
Route |
Summary 对象 |
ErrorAdditionalInfo
资源管理错误附加信息。
名称 | 类型 | 说明 |
---|---|---|
info |
object |
其他信息。 |
type |
string |
其他信息类型。 |
ErrorDetail
错误详细信息。
名称 | 类型 | 说明 |
---|---|---|
additionalInfo |
错误附加信息。 |
|
code |
string |
错误代码。 |
details |
错误详细信息。 |
|
message |
string |
错误消息。 |
target |
string |
错误目标。 |
ErrorResponse
错误响应
名称 | 类型 | 说明 |
---|---|---|
error |
错误对象。 |
RouteLegSummary
路由节的摘要对象。
名称 | 类型 | 说明 |
---|---|---|
arrivalTime |
string |
路线或腿部的估计到达时间。 时间采用 UTC 格式。 |
batteryConsumptionInkWh |
number |
使用电耗模型估计的电耗以千瓦时(千瓦时为单位)。 如果 vehicleEngineType 设置为电动,并且指定 constantSpeedConsumptionInkWhPerHundredkm,则包含该类型。 batteryConsumptionInkWh 的值包括回收的电力,因此可以是负数(这表示获得能量)。 如果同时指定 maxChargeInkWh 和 currentChargeInkWh,则回收将被封顶,以确保电池电量永远不会超过 maxChargeInkWh。 如果未指定 maxChargeInkWh 和 currentChargeInkWh,则会在消耗计算中假定不受约束的回收。 |
departureTime |
string |
路线或腿部的估计出发时间。 时间采用 UTC 格式。 |
fuelConsumptionInLiters |
number |
使用燃烧消耗模型估计升的燃油消耗量。 如果 vehicleEngineType 设置为 燃烧 且指定 constantSpeedConsumptionInLitersPerHundredkm,则包含该类型。 该值将为非负值。 |
historicTrafficTravelTimeInSeconds |
integer |
使用依赖于时间的历史交通数据计算的估计行程时间。 仅当 computeTravelTimeFor = 所有在查询中使用时才包含。 |
lengthInMeters |
integer |
Length In Meters 属性 |
liveTrafficIncidentsTravelTimeInSeconds |
integer |
使用实时速度数据计算的估计行程时间。 仅当 computeTravelTimeFor = 所有在查询中使用时才包含。 |
noTrafficTravelTimeInSeconds |
integer |
估计的行程时间计算为由于交通状况(例如拥堵)而没有延误路线。 仅当 computeTravelTimeFor = 所有在查询中使用时才包含。 |
trafficDelayInSeconds |
integer |
根据交通信息,由实时事件造成的估计延迟(秒)。 对于计划在将来出发时间的航线,延误始终为 0。 若要使用不同类型的交通信息返回其他旅行时间,需要添加参数 computeTravelTimeFor=all。 |
travelTimeInSeconds |
integer |
估计的行程时间(以秒为单位)属性,其中包括由于实时流量导致的延迟。 请注意,即使 traffic=false travelTimeInSeconds 仍包含由于流量导致的延迟。 如果 TravelAt 在将来,则使用依赖于时间的历史交通数据计算行程时间。 |
RouteMatrix
矩阵结果对象
名称 | 类型 | 说明 |
---|---|---|
response |
输入矩阵中当前单元格的响应对象。 |
|
statusCode |
integer |
输入矩阵中当前单元格的 StatusCode 属性。 |
RouteMatrixResult
此对象是从成功的路由矩阵调用返回的。 例如,如果提供了 2 个源和 3 个目标,则每个数组有 3 个元素。 每个元素的内容取决于查询中提供的选项。
名称 | 类型 | 说明 |
---|---|---|
formatVersion |
string |
Format Version 属性 |
matrix |
结果为路由摘要的 2 维数组。 |
|
summary |
Summary 对象 |
RouteMatrixResultResponse
输入矩阵中当前单元格的响应对象。
名称 | 类型 | 说明 |
---|---|---|
routeSummary |
路由节的摘要对象。 |
RouteMatrixSummary
Summary 对象
名称 | 类型 | 说明 |
---|---|---|
successfulRoutes |
integer |
响应中成功的路由数。 |
totalRoutes |
integer |
请求的路由总数。 输入矩阵中的单元格数。 |