掉头

在取货和送货对象的 `ShipmentModel.Shipment` 中,存在掉头规避。

避免掉头是一项路线优化功能,可防止车辆在行程的特定上门取货或送货地点掉头。通过设置掉头规避,您可以指定车辆在到达和离开访问位置时应朝向同一方向。

掉头规避功能的运作方式如下:

  1. 您可以在特定行程中设置掉头避让属性。
  2. 该 API 会考虑双向道路上的两个行驶方向,并选择最理想的路线。
  3. 该 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。

sideOfRoad 属性在 Waypoint 对象中定义。

与其他功能的互动

U 形转弯规避功能与其他路线规划功能之间的互动方式如下:

  • 道路一侧:将 avoidUTurns 和 sideOfRoad 都设置为 true 会略微增加避免掉头的几率,同时将车辆路线规划到最靠近到访地点的道路一侧。不过,这样做会带来与避开掉头相关的额外复杂性。对于大多数到访地点,只需设置其中一个属性即可避免掉头。
  • 注入的解决方案:使用掉头规避功能时,API 响应会在生成的 ShipmentRoute.Visit 内包含 injectedSolutionLocationToken,以记录它选择了道路的哪一侧。如果您日后在请求中将此访问会话重新用作注入的解决方案,则必须将此令牌传递回 API。

限制

避开掉头路段是一项尽力而为的功能。在以下情况下,API 仍可能会在生成的路线中包含掉头:

  • 出行模式设置为 DRIVING 以外的模式。
  • 特定到访地点的到达和出发地点不同。在这种情况下,API 会返回错误。
  • 到访地点位于死胡同,需要掉头才能离开。
  • 掉头发生在路线沿途,而不是实际到访地点。
  • 该操作是急转弯到另一条道路,API 不会将其归类为掉头。