计算路线矩阵

您可以使用 Routes Preferred API 的 ComputeRouteMatrix 方法计算多个出发地和目的地的路线距离和时长。ComputeRouteMatrix 同时支持流式 gRPC 调用和 REST HTTP 调用。

给定一个出发地和目的地对的列表,ComputeRouteMatrix 会计算从每个出发地出发并到达每个目的地的路线的距离和时长。流的每个元素都对应于一条路线的信息。

与距离矩阵服务相比,ComputeRouteMatrix 方法具有以下几项优势:

  • 通过流式传输,可以在计算出整个矩阵之前返回元素,从而降低延迟时间。
  • ComputeRouteMatrix 具有精细的流量计算选项,可让您在质量与延迟之间做出权衡。
  • 请求在 Google 的基础设施中以更高的优先级运行,从而实现更高的可用性。
  • 您可以为途经点指定航向(行驶方向)和道路一侧信息。
  • 您可以请求返回路程和预计到达时间 (ETA),以及过路费信息。

启用 ComputeRouteMatrix 方法

您必须先启用 ComputeRouteMatrix 方法,然后才能在代码中使用该方法。如需详细了解如何启用 Routes Preferred API 方法,请参阅使用入门

使用 ComputeRouteMatrix 方法

ComputeRouteMatrix 方法可通过 Routes Preferred v1 端点使用。

如需了解详情,请参阅以下文档:

gRPC: https://developers.google.com/maps/documentation/routes_preferred/reference/rpc/google.maps.routes.v1

REST: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/v1/TopLevel/computeRouteMatrix

以下通用步骤介绍了如何使用 gRPC 调用 ComputeRouteMatrix 方法:

  1. 从 googleapis 代码库中检出必要的 protobuffer:

    https://github.com/googleapis/googleapis/tree/master/google/maps/routes

    请注意,某些 build 系统(例如 Go)可能会自动为您执行此操作。

  2. 使用您偏好的语言和一组构建工具,生成相关的 Protobuf 代码。

  3. 生成您的请求。必须随请求发送两项必需的元数据:

    • X-Goog-Api-Key 必须设置为您的 API 密钥。
    • X-Goog-Fieldmask 必须设置为以英文逗号分隔的字段列表,其中包含您需要从响应中获取的字段。例如,X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status。 您可以使用通配符 (*) 来表示所有字段,但不建议这样做。使用通配符来测试和了解 API 响应,但在生产代码中明确列出您要在字段掩码中使用的字段。

      如需详细了解如何构建字段掩码字符串,请参阅 https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/field_mask.proto。 请注意,停用不需要的字段可以减少延迟时间,因为这些字段可能需要进一步计算。如果您指定了所需的字段,并且之后添加了需要更多计算的新字段,延迟时间将保持稳定。

  4. 将请求发送到 routespreferred.googleapis.com:443。您必须使用 TLS 协议。

如需查看使用 ComputeRouteMatrix 方法的示例,请参阅计算路线矩阵(Beta 版)示例

ComputeRouteMatrix 方法的一个显著特点是,可以针对整个流或单个元素返回错误代码。例如,如果请求格式有误(例如,来源为零),则流连接会返回错误。不过,如果错误仅适用于信息流中的少数几个元素(例如,为来源设置了无效的地点 ID),则只有受错误影响的元素包含错误代码。

无法保证数据流返回的元素的顺序。因此,每个元素都包含一个 origin_index 和一个 destination_index。对于请求指定的出发地和目的地,给定元素的路线出发地相当于 origins[origin_index],路线目的地相当于 destinations[destination_index]。这些数组从零开始编制索引。请务必存储来源和目的地列表顺序。

计算通行费

如需了解如何计算过路费,请参阅计算过路费

如需查看计算过路费的示例,请参阅计算路线矩阵示例