迴轉避開

取貨和送貨物件的 `ShipmentModel.Shipment` 中會顯示迴轉迴避。

迴轉迴避功能是路線最佳化功能,可避免車輛在拜訪行程的特定取貨或送貨地點迴轉。設定迴轉迴避後,車輛抵達和離開拜訪地點時,就會朝向相同方向。

迴轉迴避功能的運作方式如下:

  1. 您可以在特定行程中設定迴轉迴避屬性。
  2. API 會考量雙向道路的兩個行車方向,並選擇最佳路徑。
  3. API 會產生車輛抵達和離開的路線,且車輛不會在拜訪地點迴轉。司機可能需要過馬路才能抵達這個地點。

如果車輛尺寸、交通標誌或一般路況導致難以或無法迴轉,這個屬性就非常適合。

屬性

迴轉迴避屬性是在 VisitRequest 物件中定義。 這個物件用於出貨內容的 pickupsdeliveries 陣列中。

屬性 類型 說明
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 物件中定義。

與其他功能的互動

迴轉迴避功能會透過下列方式與其他路線規劃功能互動:

  • 道路側:avoidUTurnssideOfRoad 都設為 true,可稍微提高避免迴轉的機率,同時將車輛導向最靠近造訪地點的道路側。不過,這樣做會導致迴轉迴避限制相關的額外複雜度。對於大多數造訪地點,只要設定其中一個屬性,就足以避免迴轉。
  • 插入的解決方案:使用迴轉迴避功能時,API 回應會在產生的 ShipmentRoute.Visit 中加入 injectedSolutionLocationToken,記錄所選道路的哪一側。如果日後要將這個造訪記錄做為注入的解決方案,用於後續要求,請務必將這個權杖傳回 API。

限制

迴轉迴避功能會盡可能運作,在下列情況下,API 產生的路線仍可能包含迴轉:

  • 旅行模式設為 DRIVING 以外的模式。
  • 特定造訪地點的抵達和出發地點不同。在這種情況下,API 會傳回錯誤。
  • 該地點位於死巷,因此需要迴轉才能離開。
  • 迴轉發生在路線上,而非實際拜訪地點。
  • 這項動作是指急轉彎到另一條道路,API 不會將其歸類為迴轉。