Obliczenia trasy (w tym zmiana trasy) zwracają jako domyślną najlepszą trasę trasę, której trasa zajmuje najmniej czasu. Możesz jednak zmienić strategię routingu, tak aby zamiast niej zwracana była krótsza trasa.
Termin krótsza oznacza trasę, która jest najkrótsza wśród optymalnych tras w naszym domyślnym modelu kosztów. Krótsza trasa może nie być absolutnie najkrótsza, ponieważ ta opcja może być kiepska. Przykład: jeśli najkrótsza trasa ma długość 10 km, a nawigacja trwa 50 minut, a inna trasa trwa 15 km, ale nawigacja zajmuje tylko 20 minut, optymalnym rozwiązaniem jest drugi wybór, ponieważ poświęcenie 30 minut na zmniejszenie o 5 km nie jest dobrym rozwiązaniem.
Gdy ustawisz strategię wyznaczania trasy, nie zmieni się ona, dopóki podróż się nie zakończy. Aby zmienić strategię wyznaczania trasy w przypadku istniejącej już podróży, musisz wyczyścić miejsca docelowe i zresetować je ponownie z użyciem nowej strategii.
Pobieram szczegóły trasy
Aby określić, która strategia trasy jest optymalnym wyborem dla danego punktu pośredniego, wywołaj getRouteInfo()
, aby uzyskać szczegóły zarówno domyślnej najlepszej trasy, jak i absolutnie krótszej trasy. Szczegóły obejmują czas trwania
i odległość do docelowego punktu pośredniego.
Te dane pochodzą z RouteInfo
i są zwracane w ListenableResultFuture
.
Przykład
Poniższy przykładowy kod pokazuje, jak uzyskać szczegóły trasy dla każdej z dwóch strategii routingu.
ListenableResultFuture<RouteInfo> routeInfoFuture =
navigator.getRouteInfo(waypoint, routingOptions);
Konfigurowanie strategii routingu
Strategię routingu możesz skonfigurować, ustawiając RoutingOptions.routingStrategy
przy wywołaniu funkcji setDestinations()
.
Funkcja RoutingOptions.routingStrategy
przyjmuje jedną z tych wartości wyliczeniowych:
Wartość wyliczenia | Opis |
---|---|
RoutingStrategy.DEFAULT_BEST | Ranking tras według domyślnego modelu kosztów pakietu Navigation SDK. To jest domyślna strategia routingu. |
RoutingStrategy.SHORTER | Ranking tras według odległości. Trasa o najwyższym rankingu jest najkrótsza z zwróconych. |
Przykład
Poniższy przykładowy kod pokazuje, jak ustawić krótszą trasę.
RoutingOptions routingOptions = new RoutingOptions();
routingOptions.routingStrategy(RoutingStrategy.SHORTER);
navigator.setDestinations(destinations, routingOptions, displayOptions);
Trasy obejmujące promy
Domyślnie pakiet NavSDK wyklucza trasy obejmujące promy. Jeśli wolisz uwzględnić opcje promów w ramach swoich tras, możesz zmienić to ustawienie, aby umożliwić podróż do fragmentów promów, ustawiając avoidFerries
na false
.
Przykład
RoutingOptions routingOptions = new RoutingOptions().avoidFerries(true);
// Add additional routing preferences
navigator.setDestination(destination, routingOptions);
Format objaśnienia trasy
W przypadku ustawienia krótszej trasy objaśnienia wzdłuż trasy wyświetlają szczegółowe informacje o odległości. Zamiast nich możesz używać objaśnień z szacowanym czasem dotarcia na miejsce.
Konfigurowanie formatu objaśnienia trasy
Możesz zmienić format objaśnienia trasy, wywołując funkcję setRouteCalloutInfoFormat
w NavigationView
(lub w NavigationFragment
). Funkcja setRouteCalloutInfoFormat
przyjmuje jedną z tych wartości wyliczeniowych:
Wartość wyliczenia | Opis |
---|---|
RouteCalloutInfoFormat.DEFAULT | Wyświetla czas pozostały, gdy używana jest domyślna najlepsza strategia routingu trasy. Wyświetla odległość pozostałą podczas korzystania ze strategii wyznaczania krótszej trasy. |
RouteCalloutInfoFormat.TIME | Wyświetla pozostały czas. |
RouteCalloutInfoFormat.DISTANCE | Wyświetla pozostałą odległość. |
Przykład
Poniższy przykładowy kod pokazuje, jak skonfigurować format objaśnienia trasy.
mNavFragment.setRouteCalloutInfoFormat(RouteCalloutInfoFormat.TIME);