计算路线或路线矩阵时,您可能需要考虑路线上的所有过路费。对于部分城市,您可以使用相应货币计算路线的估算通行费。
如需获取路线矩阵的过路费,请参阅计算路线矩阵的过路费。
如需查看支持的过路费收费位置列表,请参阅 TollPass 参考文档。
如何计算通行费
Routes API 会考虑驾驶员或车辆可用的所有收费折扣或卡券,以及最方便的付款方式,计算出预计的过路费。如果给定路线没有可用的过路费,Routes API 会指明存在收费的过路点,但费用未知。
为了获得准确的过路费估算金额,请务必在请求中提供以下信息:
- 用于行驶相应路线的车辆的排放类型 (
VehicleEmissionType
)。如果未提供排放类型,系统会返回汽油车的过路费。 - 车辆和驾驶员拥有的所有过路费卡(使用
TollPass
)。该 API 使用过路费卡来确定准确的过路费,并在请求中的过路费卡不是路线本地过路费卡时返回现金价格。 - 根据需要指定避开收费站。如果您想尽可能避开收费道路,请将
avoidTolls
添加为RouteModifier
。
使用过路卡计算过路费
如需使用过路卡计算过路费,您可以在请求中指定任何过路卡。然后,该 API 会返回卡券价格。
如果您指定的过路卡无效,系统会忽略该过路卡。
如果以数组的形式指定多个通行卡,API 会尝试计算每张卡券的价格。
过路卡的运作方式可能会因地区而异。
使用通行卡时费率可能会更低:在某些地区,使用通行卡的驾驶员或车辆支付的通行费与不使用通行卡的驾驶员或车辆支付的通行费不同。例如,如果您在美国华盛顿州西雅图拥有 Good To Go! 过路费卡,则与没有过路费卡相比,您需要支付的过路费会更低。
部分道路可能需要使用过路费卡:在印度尼西亚等一些地区,部分道路需要使用过路费卡。如果您未为需要使用过路费卡的路线指定过路费卡,则该 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 } ] } } } ] }