Gdy wybierasz najlepszą trasę w ramach wspólnych przejazdów, najszybsza trasa może nie być najlepszą opcją. Możesz dostosować trasę. Interfejs Routes Preferred API pozwala dostosować trasę przez określenie jej celu za pomocą metody ComputeCustomRoutes
.
Gdy tworzysz trasę niestandardową, interfejs Routes Preferred API generuje token trasy. Następnie możesz przekazać token do pakietu SDK nawigacji na Androida i pobrać trasę niestandardową.
Więcej informacji o tworzeniu tras niestandardowych znajdziesz w artykule o tworzeniu tras niestandardowych.
Pobieranie trasy niestandardowej
Możesz pobrać trasę niestandardową, przekazując token trasy do pakietu SDK nawigacji na Androida za pomocą metody Navigator.setDestinations
.
setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);
Trasa niestandardowa zastępuje wszystkie wcześniej ustawione miejsca docelowe. Uwzględnia lokalizację początkową kierowcy oraz warunki na drodze i natężenie ruchu.
Navigator.setDestinations
przyjmuje te parametry:
Parametr | Opis |
---|---|
miejsca docelowe | Nowa lista miejsc docelowych do ustawienia. |
customRoutesOptions | Opcje, które będą używane do pobrania wstępnie wyliczonej trasy na podstawie tokena zwróconego przez interfejs Routes Preferred API. |
displayOptions | Opcje, które zostaną użyte do wyświetlenia trasy. |
Metoda Navigator.setDestinations
zwraca stan żądania.
Jeśli zostanie znaleziona trasa z lokalizacji użytkownika do podanego miejsca docelowego, zwróci wartość RouteStatus.OK
.
Przykład
Poniższy przykładowy kod ilustruje, jak pobrać trasę niestandardową.
ArrayList <Waypoint> destinations = Lists.newArrayList();
Waypoint waypoint1 =
Waypoint.builder()
.setLatLng(10, 20)
.setTitle("title")
.setVehicleStopover(true)
.build();
destinations.add(waypoint1);
Waypoint waypoint2 =
Waypoint.builder()
.setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
.setTitle("title")
.setVehicleStopover(true)
.build()
destinations.add(waypoint2);
String routeToken = "route token returned by RoutesPreferred API";
CustomRoutesOptions customRoutesOptions =
CustomRoutesOptions.builder()
.setRouteToken(routeToken)
.setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
.build();
// Existing flow to get a Navigator.
NavigationApi.getNavigator(...);
// Existing flow for requesting routes.
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions);
// Or with display options.
DisplayOptions displayOptions = new DisplayOptions();
ListenableResultFuture<RouteStatus> routeStatusFuture =
navigator.setDestinations(destinations, customRoutesOptions, displayOptions);