避免掉头是一项路线优化功能,可防止车辆在特定上车或送货地点掉头。通过设置避免掉头,您可以指定车辆在到达和离开访问地点时应朝向同一方向。
避免掉头的工作方式如下:
- 您可以在特定访问地点设置避免掉头属性。
- API 会考虑双向道路上的两个行驶方向,并选择最佳路径。
- API 会生成一条路线,让车辆在到达和离开访问地点时无需掉头。驾驶员可能需要过马路才能到达此地点。
此属性非常适合因车辆尺寸、交通标志或通常的交通状况而难以或无法掉头的情况。
属性
避免掉头属性在 VisitRequest 对象中定义。
此对象在货件的 pickups 和 deliveries 数组中使用。
| 属性 | 类型 | 说明 |
|---|---|---|
avoidUTurns |
布尔值 | 设置为 true 后,API 会阻止车辆在此访问地点掉头。车辆到达和离开时将朝向同一方向。 |
示例
本部分涵盖两种类型的示例:
- 说明避免掉头结构的代码示例。
- 包含该功能的请求示例。
代码示例
以下示例展示了上车
和送货地点中 avoidUTurns 的结构:
"pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ]
请求示例
以下示例展示了一个基本的 optimizeTours 请求,其中
包含避免掉头功能。此请求包含以下元素:
- 一个货件,其
model对象内包含上车和送货地点。 - 上车和送货地点均将
avoidUTurns属性设置为true,以防止车辆在那些停靠点改变方向。
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
使用 sideOfRoad 避免掉头
虽然 sideOfRoad 是一项单独的功能,但它与避免掉头
功能密切相关,因为它可以将车辆路由到离目的地最近的路边
,从而避免许多掉头。这会强制车辆从特定方向接近访问地点,从而无需掉头。
在实践中,如果可以安全地步行过马路到达访问地点,则应使用避免掉头功能。如果过马路不安全或无法过马路,请考虑将 sideOfRoad 设置为 true instead.
sideOfRoad 属性在 Waypoint 对象中定义。
与其他功能的交互
避免掉头功能与其他路线规划功能的交互方式如下:
- 路边: 将
avoidUTurns和sideOfRoad都设置为true会略微增加避免掉头的可能性,同时将 车辆路由到离访问地点最近的路边。 不过,这样做会带来与避免掉头限制相关的额外复杂性。对于大多数访问地点,只需设置其中一个属性即可避免掉头。 - 注入的解决方案: 使用避免掉头功能时,API 响应
会在生成的
ShipmentRoute.Visit内包含injectedSolutionLocationToken,以记录它选择的路边。如果您日后在请求中将此访问地点重复用作注入的解决方案,则必须将此令牌传递回 API。
限制
避免掉头是一项尽力而为的功能。在以下情况下,API 仍可能会在生成的路线中包含掉头:
- 出行模式设置为
DRIVING以外的模式。 - 特定访问地点的到达和离开地点不同。在这种情况下,API 会返回错误。
- 访问地点位于死胡同,需要掉头才能离开。
- 掉头发生在路线沿途,而不是在实际访问地点。
- 该操作是急转弯到另一条道路,API 不将其归类为掉头。