Zusammenfassung des Routings berechnen
So berechnen Sie mit Text Search (New) oder Nearby Search (New) die Fahrtdauer und Entfernung zu jedem Ort in der Antwort:
-
Übergeben Sie den Parameter
RoutingParameters
in der Anfrage und verwenden SiesetOrigin()
, um die Breiten- und Längengradkoordinaten des Startpunkts der Route anzugeben. 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 wird die Fahrtdauer und die Entfernung zu jedem Ort in der Antwort von „Text Search (New)“ berechnet:
// 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 Klasse SearchByTextResponse
stellt die Antwort auf eine Suchanfrage dar.
Sie können SearchByTextResponse.getRoutingSummaries()
aufrufen, um eine Liste der Routingzusammenfassungen zurückzugeben.
Ein SearchByTextResponse
-Objekt enthält außerdem:
- Eine Liste von
Place
-Objekten, die alle übereinstimmenden Orte darstellen, mit einemPlace
-Objekt pro übereinstimmendem Ort. - Jedes
Place
-Objekt enthält nur die Felder, die durch die in der Anfrage übergebene Feldliste definiert sind.
Nearby Search verwenden
In diesem Beispiel berechnen Sie die Fahrtdauer und die Entfernung zu jedem Ort in der Antwort der Nearby Search. In diesem Beispiel wird nach Restaurants in Sydney, Australien, gesucht. Die Standortbeschränkung und der Startpunkt der Route 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 Klasse SearchNearbyResponse
stellt die Antwort auf eine Suchanfrage dar.
Sie können SearchNearbyResponse.getRoutingSummaries()
aufrufen, um eine Liste der Routingzusammenfassungen zurückzugeben.
Ein SearchNearbyResponse
-Objekt enthält außerdem:
- Eine Liste von
Place
-Objekten, die alle übereinstimmenden Orte darstellen, mit einemPlace
-Objekt pro übereinstimmendem Ort. - Jedes
Place
-Objekt enthält nur die Felder, die durch die in der Anfrage übergebene Feldliste definiert sind.
Sie müssen nicht dieselben Koordinaten für die Standortbeschränkung und den Routingursprung verwenden. Sie können die Standortbeschränkung beispielsweise auf den Mittelpunkt von Sydney festlegen, um die Suchergebnisse auf diesen Kreis einzugrenzen. Sie legen jedoch den Startpunkt der Routenführung auf die Koordinaten Ihres Hauses fest, also auf einen anderen Ort innerhalb des Suchkreises. Die Suchergebnisse werden dann auf den Kreis beschränkt und die Routenzusammenfassungen werden basierend auf dem Standort Ihres Zuhauses berechnet.
Mobilitätsoptionen angeben
Standardmäßig werden die Dauer und Entfernung für ein Auto berechnet. Sie können jedoch den Fahrzeugtyp und andere Optionen in der Suche festlegen.
-
Verwenden Sie
routingParameters.setTravelMode()
, um den Transportmodus aufDRIVE
,BICYCLE
,WALK
oderTWO_WHEELER
festzulegen. Weitere Informationen zu diesen Optionen finden Sie unter Verfügbare Fahrzeugtypen für Routen. -
Verwenden Sie
routingParameters.setRoutingPreference()
, um die Routing-Einstellung aufTRAFFIC_UNAWARE
(Standard),TRAFFIC_AWARE
oderTRAFFIC_AWARE_OPTIMAL
festzulegen. Jede Option hat unterschiedliche Datenqualität und Latenz. Weitere Informationen finden Sie unter Festlegen, wie und ob Besucherdaten einbezogen werden sollen. -
Verwenden Sie
routingParameters.setRouteModifiers()
, umavoidTolls
,avoidHighways
,avoidFerries
undavoidIndoor
anzugeben. Weitere Informationen zu diesen Optionen finden Sie unter Routenelemente angeben, die vermieden werden sollen.
Im folgenden Beispiel geben Sie den Verkehrsmitteltyp als DRIVE
und 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(); });