你当前正在访问 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 (它不需要是方形) 。
异步响应将存储 14 天。 如果过期后使用重定向 URL,则返回 404 响应。
GET https://atlas.microsoft.com/route/matrix/json?api-version=1.0&subscription-key={subscription-key}
下面是典型的异步操作序列:
客户端将路由矩阵 GET 请求发送到 Azure Maps
服务器将使用以下项之一进行响应:
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 的一个或多个权限组成的自定义角色授予任何用户、组或服务主体的访问权限。
若要实现方案,建议查看 身份验证概念。 总之,此安全定义提供了一个解决方案,用于通过能够对特定 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 资源 上的列出 SAS 操作创建的共享访问签名令牌。
使用此令牌,任何应用程序都有权使用 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 个目标,则会有 2 个数组,每个数组包含 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 设置为 electric 且指定 constantSpeedConsumptionInkWhPerHundredkm,则包含该属性。 batteryConsumptionInkWh 的值包括回收的电量,因此可以是负 (这表示) 获得能量。 如果同时指定 maxChargeInkWh 和 currentChargeInkWh,将限制恢复,以确保电池充电水平永远不会超过 maxChargeInkWh。 如果未指定 maxChargeInkWh 和 currentChargeInkWh,则消耗计算中假定无约束的回收。 |
departureTime |
string |
路线或航段的预计出发时间。 时间采用 UTC。 |
fuelConsumptionInLiters |
number |
使用燃烧消耗模型估计的油耗(以升为单位)。 如果 vehicleEngineType 设置为 燃烧 ,并且指定 constantSpeedConsumptionInLitersPerHundredkm,则包括 。 该值将为非负值。 |
historicTrafficTravelTimeInSeconds |
integer |
使用与时间相关的历史交通数据计算的估计行程时间。 仅在查询中使用 computeTravelTimeFor = all 时才包含。 |
lengthInMeters |
integer |
Length In Meters 属性 |
liveTrafficIncidentsTravelTimeInSeconds |
integer |
使用实时速度数据计算的估计行程时间。 仅在查询中使用 computeTravelTimeFor = all 时才包含。 |
noTrafficTravelTimeInSeconds |
integer |
由于交通状况 (例如拥堵) ,估计行程时间的计算方式与路线没有延误一样。 仅在查询中使用 computeTravelTimeFor = all 时才包含。 |
trafficDelayInSeconds |
integer |
实时事件造成的估计延迟 (根据交通信息) 。 对于计划在未来出发时间的路线,延误始终为 0。 若要使用不同类型的交通信息返回其他行程时间,需要添加参数 computeTravelTimeFor=all。 |
travelTimeInSeconds |
integer |
估计行程时间(以秒为单位)属性,包括由于实时流量导致的延迟。 请注意,即使 traffic=false travelTimeInSeconds 仍包含由于流量导致的延迟。 如果将来是 DepartAt,则使用与时间相关的历史交通数据计算旅行时间。 |
RouteMatrix
矩阵结果对象
名称 | 类型 | 说明 |
---|---|---|
response |
输入矩阵中当前单元格的响应对象。 |
|
statusCode |
integer |
输入矩阵中当前单元格的 StatusCode 属性。 |
RouteMatrixResult
此对象是从成功的路由矩阵调用返回的。 例如,如果提供了 2 个原点和 3 个目标,则会有 2 个数组,每个数组包含 3 个元素。 每个元素的内容取决于查询中提供的选项。
名称 | 类型 | 说明 |
---|---|---|
formatVersion |
string |
Format Version 属性 |
matrix |
结果为路由摘要的 2 维数组。 |
|
summary |
Summary 对象 |
RouteMatrixResultResponse
输入矩阵中当前单元格的响应对象。
名称 | 类型 | 说明 |
---|---|---|
routeSummary |
路由节的摘要对象。 |
RouteMatrixSummary
Summary 对象
名称 | 类型 | 说明 |
---|---|---|
successfulRoutes |
integer |
响应中成功的路由数。 |
totalRoutes |
integer |
请求的路由总数。 输入矩阵中的单元格数。 |