Routenzusammenfassung berechnen
So berechnen Sie mit Text Search (New) oder Nearby Search (New) die Reisedauer und ‑entfernung zu jedem Ort in der Antwort:
-
Übergeben Sie den Parameter
RoutingParametersin der Anfrage und geben Sie mitsetOrigin()die Breiten- und Längengradkoordinaten des Routen ursprungs an. Dieser Parameter ist erforderlich, um die Dauer und Entfernung zu jedem Ort in der Antwort zu berechnen. -
Fügen Sie beim Erstellen des Anfrageobjekts
.setRoutingSummariesIncluded(true)hinzu.
Text Search (New) verwenden
In der folgenden Anfrage berechnen Sie die Reisedauer und ‑entfernung zu jedem Ort in der Antwort von Text Search (New):
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
Die SearchByTextResponse Klasse stellt die Antwort auf eine Suchanfrage dar.
Sie können SearchByTextResponse.getRoutingSummaries() aufrufen, um die Liste der Routenzusammenfassungen zurückzugeben.
Ein SearchByTextResponse-Objekt enthält außerdem:
- Eine Liste von
Place-Objekten, die alle übereinstimmenden Orte darstellen. Für jeden übereinstimmenden Ort gibt es einPlace-Objekt. - Jedes
Place-Objekt enthält nur die Felder, die in der in der Anfrage übergebenen Feldliste definiert sind.
Nearby Search verwenden
In diesem Beispiel berechnen Sie die Reisedauer und ‑entfernung zu jedem Ort in der Antwort von Nearby Search. In diesem Beispiel wird nach Restaurants in Sydney, Australien, gesucht und die Standortbeschränkung sowie der Routenursprung werden auf dieselben Breiten- und Längengradkoordinaten festgelegt:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the search area as a 500 meter diameter circle in Sydney, Australia. LatLng center = new LatLng(-33.8688, 151.1957362); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 500); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchNearbyRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchNearby() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
Die SearchNearbyResponse Klasse stellt die Antwort auf eine Suchanfrage dar.
Sie können SearchNearbyResponse.getRoutingSummaries() aufrufen, um die Liste der Routenzusammenfassungen zurückzugeben.
Ein SearchNearbyResponse-Objekt enthält außerdem:
- Eine Liste von
Place-Objekten, die alle übereinstimmenden Orte darstellen. Für jeden übereinstimmenden Ort gibt es einPlace-Objekt. - Jedes
PlaceObjekt enthält nur die Felder, die in der in der Anfrage übergebenen Feldliste definiert sind.
Sie müssen nicht dieselben Koordinaten für die Standortbeschränkung und den Routenursprung verwenden. Sie können beispielsweise die Standortbeschränkung auf den Mittelpunkt von Sydney festlegen, um die Suchergebnisse auf diesen Kreis zu beschränken. Anschließend legen Sie den Routenursprung auf die Koordinaten Ihres Hauses fest, also auf einen anderen Ort innerhalb des Suchkreises. Die Anfrage beschränkt die Suchergebnisse dann auf den Kreis und berechnet die Routenzusammenfassungen basierend auf dem Standort Ihres Hauses.
Reiseoptionen angeben
Standardmäßig werden die Dauer- und Entfernungsberechnungen für ein Auto durchgeführt. Sie können jedoch den Fahrzeugtyp sowie andere Optionen in der Suche festlegen.
-
Verwenden Sie
routingParameters.setTravelMode(), um den Verkehrsmittelmodus aufDRIVE,BICYCLE,WALKoderTWO_WHEELERfestzulegen. Weitere Informationen zu diesen Optionen finden Sie unter Verfügbare Fahrzeugtypen für Routen. -
Verwenden Sie
routingParameters.setRoutingPreference(), um die Option für die Routenpräferenz aufTRAFFIC_UNAWARE(Standard),TRAFFIC_AWAREoderTRAFFIC_AWARE_OPTIMALfestzulegen. Jede Option hat unterschiedliche Stufen der Datenqualität und Latenz. Weitere Informationen finden Sie unter Festlegen, wie und ob Verkehrsdaten einbezogen werden sollen. -
Verwenden Sie
routingParameters.setRouteModifiers(), umavoidTolls,avoidHighways,avoidFerries, undavoidIndooranzugeben. Weitere Informationen zu diesen Optionen finden Sie unter Routenmerkmale angeben, die vermieden werden sollen.
Im nächsten Beispiel legen Sie den Reisemodus als DRIVE fest und geben an, dass Autobahnen vermieden werden sollen:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing modifiers object. RouteModifiers routeModifiers = RouteModifiers.builder() .setAvoidHighways(true) .build(); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .setTravelMode(DRIVE) .setRouteModifiers(routeModifiers) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = result.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });