Unikanie zawracania to funkcja optymalizacji trasy, która zapobiega zawracaniu pojazdów w określonym miejscu odbioru lub dostawy podczas wizyty. Ustawiając unikanie zawracania, określasz, że pojazd powinien być zwrócony w tym samym kierunku, gdy przyjeżdża do miejsca wizyty i gdy je opuszcza.
Unikanie zawracania działa w ten sposób:
- Właściwość unikania zawracania ustawiasz podczas konkretnej wizyty.
- Interfejs API uwzględnia oba kierunki ruchu 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 musieć przejść na drugą stronę drogi, 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 warunki na drodze.
Właściwości
Właściwość unikania zawracania jest zdefiniowana w obiekcie VisitRequest.
Ten obiekt jest używany w tablicach pickups i deliveries w przypadku przesyłki.
| Właściwość | Typ | Opis |
|---|---|---|
avoidUTurns |
Wartość logiczna | Gdy wartość tego parametru to true, interfejs API uniemożliwia pojazdowi zawrócenie w tej lokalizacji. Pojazd przyjedzie i odjedzie w tym samym kierunku. |
Przykłady
Ta sekcja zawiera 2 rodzaje przykładów:
- Przykłady kodu ilustrujące strukturę unikania zawracania.
- Przykład żądania, które zawiera tę funkcję.
Przykładowe fragmenty 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 żądanie optimizeTours, które uwzględnia unikanie zawracania. Prośba zawiera te elementy:
- Dostawa z odbiorem i dostarczeniem w obiekcie
model. - Właściwość
avoidUTurnsustawiona natruew przypadku lokalizacji odbioru i dostawy, aby zapobiec zmianie kierunku jazdy pojazdu na tych przystankach.
{ "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 } ] } }
Unikaj zawracania za pomocą sideOfRoad
sideOfRoad to osobna funkcja, ale jest ściśle powiązana z unikaniem zawracania, ponieważ zapobiega wielu zwrotom o 180 stopni, kierując pojazd na stronę drogi najbliższą miejsca docelowego. Wymusza to dojazd pojazdu do miejsca wizyty z określonego kierunku, co eliminuje konieczność zawracania.
W praktyce należy unikać zawracania, gdy bezpiecznie jest przejść przez drogę pieszo, aby dotrzeć do miejsca wizyty. Jeśli przejście przez drogę jest odradzane lub niemożliwe, rozważ ustawienie wartości sideOfRoad na true.
Właściwość sideOfRoad jest zdefiniowana w obiekcie Waypoint.
Interakcje z innymi funkcjami
Unikanie zawracania współdziała z innymi funkcjami wyznaczania trasy w następujący sposób:
- Pobocze: ustawienie zarówno
avoidUTurns, jak isideOfRoadnatruenieznacznie zwiększa szansę na uniknięcie zawracania podczas wyznaczania trasy do pobocza najbliższego miejsca wizyty. Wprowadza to jednak dodatkowe komplikacje związane z ograniczeniami dotyczącymi unikania zawracania. W przypadku większości lokalizacji wizyt wystarczy ustawić tylko jedną z tych właściwości, aby uniknąć zawracania. - Wstrzykiwane rozwiązania: gdy używasz unikania zawracania, odpowiedź interfejsu API zawiera element
injectedSolutionLocationTokenw wygenerowanym elemencieShipmentRoute.Visit, aby rejestrować, którą stronę drogi wybrano. Jeśli w przyszłości użyjesz tej wizyty jako wstrzykniętego rozwiązania w kolejnym żądaniu, musisz przekazać ten token z powrotem do interfejsu API.
Ograniczenia
Funkcja unikania zawracania jest dostępna w ramach zasady najlepszych starań. Interfejs API może nadal uwzględniać zawracanie na wygenerowanej trasie w tych sytuacjach:
- Środek transportu jest ustawiony na inny niż
DRIVING. - Lokalizacje przyjazdu i odjazdu w przypadku konkretnej lokalizacji wizyty są różne. W takim przypadku interfejs API zwraca błąd.
- Wizyta odbywa się na drodze bez przejazdu, co wymaga zawrócenia, aby z niej wyjechać.
- Zawracanie następuje na trasie, a nie w miejscu wizyty.
- Jest to bardzo ostry skręt na inną drogę, który interfejs API nie klasyfikuje jako zawracanie.