计算路线的通行费

计算路线或路线矩阵时,您可能需要考虑路线上的所有通行费。对于部分城市,您可以使用相应币种计算路线的预估通行费。

如需获取路线矩阵的通行费,请参阅计算路线矩阵的通行费

如需查看支持的收费位置列表,请参阅收费通行证的参考文档

通行费计算方式

Routes API 计算估算的通行费,会考虑适用于驾驶员或车辆的所有通行费折扣或卡券,以及最方便的付款方式。如果指定路线没有可用的通行费,Routes API 会指明存在费用未知的收费站。

为了准确计算通行费信息,Routes API 提供了指定以下内容的选项:

  • 路线所用车辆的排放类型 (VehicleEmissionType)。如果未提供排放类型,则返回汽油燃料车辆的通行费。
  • 驾驶员或车辆适用的任何通行卡 (TollPass)。如果未指定通行卡,则 API 会返回现金价格。
  • avoidTolls 设为 RouteModifier,以避开收费路段。

使用通行卡时计算通行费

在某些地区,持有通行卡的驾驶员或车辆支付的通行费与没有通行证的驾驶员或车辆支付的通行费不同。例如,如果您在美国华盛顿州西雅图有 Good To Go! 通行卡,那么相比没有通行证,您的通行费会更低。

有些地区(如印度尼西亚)的有些道路需要通行收费卡。如果没有为需要通行卡的路线指定通行卡,则不会返回价格。

如果您在请求中指定通行费,该 API 会尝试返回卡券价格:

  • 如果您指定的通行卡无效,系统会忽略该通行证。

  • 您可以通过数组指定多张通行卡。API 会尝试计算每张卡券的路线的卡券价格。

计算路线的通行费

下例使用 computeRoutes 方法返回通行卡信息及预估价格。在此示例中,您执行以下操作:

  • extraComputations 数组字段设置为 TOLLS 以启用收费信息计算。

  • 请使用请求的 routeModifiers 字段指定车辆类型和通行卡类型。返回的通行费基于指定的车辆类型和卡券所用的定价。如果指定了多个卡券,则返回价格最低的价格。

  • 使用响应字段掩码将方法配置为在响应中返回收费信息。在此示例中,请求在响应字段掩码中包含以下属性:

    • routes.travelAdvisory.tollInfo 字段返回整个路线的信息。

    • routes.legs.travelAdvisory.tollInfo 返回每条路程的信息。

请求收费信息

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "extraComputations": ["TOLLS"],
  "routeModifiers":{
    "vehicleInfo":{
      "emissionType": "GASOLINE"
    },
    "tollPasses": [
      "US_MA_EZPASSMA",
      "US_WA_GOOD_TO_GO"
    ]
  }
}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.travelAdvisory.tollInfo,routes.legs.travelAdvisory.tollInfo' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

包含收费信息的响应

响应包含 TollInfo (REST) 或 TollInfo (gRPC) 对象中的收费信息。在此示例中,您将返回整个路线和该路线的每段路程的收费信息。

{
  "routes": [
    {
      "legs": [
        {
          "travelAdvisory": {
            "tollInfo": {
              "estimatedPrice": [
                {
                  "currencyCode": "USD",
                  "units": "4",
                  "nanos": 400000000
                }
              ]
            }
          }
        }
      ],
      "distanceMeters": 150338,
      "duration": "6650s",
      "travelAdvisory": {
        "tollInfo": {
          "estimatedPrice": [
            {
              "currencyCode": "USD",
              "units": "4",
              "nanos": 400000000
            }
          ]
        }
      }
    }
  ]
}