Unikanie zawracania to funkcja optymalizacji trasy, która uniemożliwia pojazdom zawracanie w określonym miejscu odbioru lub dostawy podczas wizyty. Ustawiając unikanie zawracania, określasz, że pojazd powinien być skierowany w tym samym kierunku, gdy przyjeżdża do miejsca wizyty i gdy je opuszcza.
Unikanie zawracania działa w ten sposób:
- Ustawiasz właściwość unikania zawracania w przypadku konkretnej wizyty.
- Interfejs API uwzględnia oba kierunki jazdy na drogach dwukierunkowych i wybiera optymalną trasę.
- Interfejs API generuje trasę, na której pojazd przyjeżdża i odjeżdża bez zawracania w miejscu wizyty. Kierowca może być zmuszony do przejechania przez drogę, aby dotrzeć do tego miejsca.
Ta właściwość jest idealna w sytuacjach, gdy zawracanie jest trudne lub niemożliwe ze względu na rozmiar pojazdu, znaki drogowe lub ruch taki jak zwykle.
Właściwości
Właściwość unikania zawracania jest zdefiniowana w obiekcie VisitRequest.
Ten obiekt jest używany w tablicach pickups i deliveries przesyłki.
| Właściwość | Typ | Opis |
|---|---|---|
avoidUTurns |
Wartość logiczna | Gdy ta właściwość jest ustawiona na true, interfejs API uniemożliwia pojazdowi zawracanie w tym miejscu wizyty. Pojazd przyjedzie i odjedzie w tym samym kierunku. |
Przykłady
W tej sekcji znajdziesz 2 rodzaje przykładów:
- Przykłady kodu, które ilustrują strukturę unikania zawracania.
- Przykładowe żądanie, które zawiera tę funkcję.
Przykłady kodu
Poniższy przykład pokazuje strukturę avoidUTurns w przypadku odbioru
i dostawy:
"pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ]
Przykładowe żądanie
Poniższy przykład pokazuje podstawowe optimizeTours żądanie, które
obejmuje unikanie zawracania. To żądanie zawiera te elementy:
- Przesyłka z odbiorem i dostawą w obiekcie
model. - Właściwość
avoidUTurnsustawiona natruew miejscach odbioru i dostawy, aby uniemożliwić pojazdowi zmianę kierunku w tych miejscach.
{ "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 } ] } }
Unikanie zawracania za pomocą sideOfRoad
Chociaż sideOfRoad to osobna funkcja, jest ona ściśle powiązana z unikaniem zawracania
, ponieważ zapobiega wielu zawracaniom, kierując pojazd na stronę drogi
najbliższą miejsca docelowego. Zmusza to pojazd do zbliżania się do miejsca wizyty z określonego kierunku, co eliminuje konieczność zawracania.
W praktyce należy używać unikania zawracania, gdy bezpiecznie można przejść przez drogę, aby dotrzeć do miejsca wizyty. Jeśli przechodzenie przez drogę jest
odradzane lub niemożliwe, rozważ ustawienie sideOfRoad na true
zamiast.
Właściwość sideOfRoad jest zdefiniowana w obiekcie Waypoint.
Interakcja z innymi funkcjami
Unikanie zawracania współdziała z innymi funkcjami wyznaczania tras w następujący sposób:
- Strona drogi: ustawienie zarówno
avoidUTurns, jak isideOfRoadnatruenieznacznie zwiększa szanse na uniknięcie zawracania podczas kierowania pojazdu na stronę drogi najbliższą miejsca wizyty. Wprowadza to jednak dodatkowe komplikacje związane z ograniczeniami unikania zawracania. W przypadku większości miejsc wizyt wystarczy ustawić tylko jedną z tych właściwości, aby uniknąć zawracania. - Wstrzyknięte rozwiązania: gdy używasz unikania zawracania, odpowiedź interfejsu API
zawiera
injectedSolutionLocationTokenw wygenerowanymShipmentRoute.Visit, aby zapisać, którą stronę drogi wybrano. Jeśli kiedykolwiek użyjesz tej wizyty jako wstrzykniętego rozwiązania w przyszłym żądaniu, musisz przekazać ten token z powrotem do interfejsu API.
Ograniczenia
Unikanie zawracania to funkcja, która działa najlepiej, jak to możliwe. Interfejs API może nadal uwzględniać zawracanie w wygenerowanej trasie w tych przypadkach:
- Tryb podróży jest ustawiony na inny tryb niż
DRIVING. - Miejsca przyjazdu i odjazdu w przypadku konkretnego miejsca wizyty są różne. W takim przypadku interfejs API zwraca błąd.
- Wizyta znajduje się na drodze bez przejazdu, co wymaga zawrócenia, aby z niej wyjechać.
- Zawracanie następuje na trasie, a nie w rzeczywistym miejscu wizyty.
- Manewr to bardzo ostry skręt na inną drogę, którego interfejs API nie klasyfikuje jako zawracania.