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ć skierowany 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 w przypadku konkretnej wizyty.
- Interfejs API uwzględnia oba kierunki ruchu na drogach dwukierunkowych i wybiera optymalną ścieżkę.
- 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 | Jeśli wartość tego pola to true, interfejs API uniemożliwia pojazdowi zawrócenie w tej lokalizacji. Pojazd przyjedzie i odjedzie w tym samym kierunku. |
Przykłady
W tej sekcji znajdziesz 2 rodzaje przykładów:
- Przykłady kodu ilustrujące strukturę unikania zawracania.
- Przykładowe żądanie, które zawiera tę funkcję.
Przykładowe fragmenty kodu
Poniższy przykład pokazuje strukturę elementu 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:
- Przesyłka z odbiorem i dostawą w obiekcie
model. - Właściwość
avoidUTurnsjest ustawiona natruezarówno w miejscu odbioru, jak 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 dzięki sideOfRoad
sideOfRoad to osobna funkcja, ale jest ściśle powiązana z unikaniem zawracania, ponieważ zapobiega wielu zawracaniom, kierując pojazd na stronę drogi najbliższą miejsca docelowego. Wymusza to dojazd pojazdu do lokalizacji wizyty z określonego kierunku, co eliminuje konieczność zawracania.
W praktyce unikaj zawracania, gdy bezpiecznie jest przejść przez ulicę, aby dotrzeć do miejsca wizyty. Jeśli przejście przez ulicę jest odradzane lub niemożliwe, rozważ ustawienie parametru 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 ten sposób:
- Pobocze: ustawienie zarówno
avoidUTurns, jak isideOfRoadnatruenieznacznie zwiększa szansę uniknięcia zawracania podczas wyznaczania trasy do pobocza najbliższego miejsca wizyty. Wiąże się to jednak z dodatkowymi komplikacjami związanymi 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. - Wstrzyknięte rozwiązania: gdy używasz unikania zawracania, odpowiedź interfejsu API zawiera element
injectedSolutionLocationTokenw wygenerowanym elemencieShipmentRoute.Visit, aby zapisać, którą stronę drogi wybrano. Jeśli w przyszłości użyjesz tej wizyty jako wstrzykniętego rozwiązania w żądaniu, musisz przekazać ten token z powrotem do interfejsu API.
Ograniczenia
Unikanie zawracania jest funkcją, która działa w miarę możliwości. Interfejs API może nadal uwzględniać zawracanie na wygenerowanej trasie w tych przypadkach:
- Tryb podróży 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.
- Miejsce wizyty znajduje się na ślepej ulicy, więc aby z niej wyjechać, trzeba zawrócić.
- 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.