Wenn Sie die beste Route für einen Mitfahrdienst ermitteln, ist die schnellste Route möglicherweise nicht immer die beste Option. Sie können Ihre Route anpassen. Mit der Routes Preferred API können Sie eine Route anpassen, indem Sie mit der Methode ComputeCustomRoutes
ein Routenziel angeben.
Wenn Sie eine benutzerdefinierte Route erstellen, generiert die Routes Preferred API ein Routentoken. Anschließend können Sie das Token an das Navigation SDK for Android übergeben und die benutzerdefinierte Route abrufen.
Weitere Informationen zum Erstellen einer benutzerdefinierten Route finden Sie unter Benutzerdefinierte Routen erstellen.
Benutzerdefinierte Route abrufen
Sie können eine benutzerdefinierte Route abrufen, indem Sie mit der Methode Navigator.setDestinations
ein Routentoken an das Navigation SDK for Android übergeben.
setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);
Die benutzerdefinierte Route überschreibt alle zuvor festgelegten Ziele. Dabei werden der entsprechende Startort des Fahrers sowie die Straßen- und Verkehrslage berücksichtigt.
Für Navigator.setDestinations
sind folgende Parameter erforderlich:
Parameter | Beschreibung |
---|---|
Ziele | Die neu festzulegende Zielliste. |
customRoutesOptions | Die Optionen, die zum Abrufen einer vorab berechneten Route verwendet werden, basierend auf einem Token, das von der Routes Preferred API zurückgegeben wird. |
displayOptions | Die Optionen, die zum Anzeigen der Route verwendet werden. |
Die Methode Navigator.setDestinations
gibt den Status der Anfrage zurück.
Wenn eine Route vom Standort des Nutzers zum angegebenen Ziel gefunden wird, wird RouteStatus.OK
zurückgegeben.
Beispiel
Im folgenden Codebeispiel wird gezeigt, wie eine benutzerdefinierte Route abgerufen wird.
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);