Zusammenfassung der Routenberechnung

So berechnen Sie mit Text Search (New) oder Nearby Search (New) die Fahrtdauer und Entfernung zu jedem Ort in der Antwort:

  1. Übergeben Sie den Parameter RoutingParameters in der Anfrage und verwenden Sie setOrigin(), um die Breiten- und Längengradkoordinaten des Routenursprungs anzugeben. Dieser Parameter ist erforderlich, um die Dauer und Entfernung zu jedem Ort in der Antwort zu berechnen.

  2. Fügen Sie beim Erstellen des Anfrageobjekts .setRoutingSummariesIncluded(true) hinzu.

In der folgenden Anfrage berechnen Sie die Reisezeit 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 Klasse SearchByTextResponse stellt die Antwort auf eine Suchanfrage dar. Sie können SearchByTextResponse.getRoutingSummaries() aufrufen, um die Liste der Routing-Zusammenfassungen 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 ein Place-Objekt.
  • Jedes Place-Objekt enthält nur die Felder, die durch die in der Anfrage übergebene Feldliste definiert werden.

In diesem Beispiel berechnen Sie die Fahrtdauer und Entfernung zu jedem Ort in der Antwort auf die Nearby Search-Anfrage. In diesem Beispiel wird nach Restaurants in Sydney, Australien, gesucht und die Standortbeschränkung und 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 Klasse SearchNearbyResponse stellt die Antwort auf eine Suchanfrage dar. Sie können SearchNearbyResponse.getRoutingSummaries() aufrufen, um die Liste der Routing-Zusammenfassungen 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 ein Place-Objekt.
  • Jedes Place-Objekt enthält nur die Felder, die durch die in der Anfrage übergebene Feldliste definiert werden.

Sie müssen nicht dieselben Koordinaten für die Standortbeschränkung und den Routenursprung verwenden. Wenn Sie beispielsweise die Standortbeschränkung auf den Mittelpunkt von Sydney festlegen, werden die Suchergebnisse auf diesen Kreis beschränkt. Sie legen dann den Routingursprung 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 Zusammenfassungen für das Routing werden auf Grundlage des Standorts Ihres Hauses berechnet.

Reiseoptionen angeben

Standardmäßig werden die Berechnungen für Dauer und Entfernung für ein Auto durchgeführt. Sie können jedoch den Fahrzeugtyp sowie andere Optionen in der Suche festlegen.

  • Verwenden Sie routingParameters.setTravelMode(), um das Transportmittel auf DRIVE, BICYCLE, WALK oder TWO_WHEELER festzulegen. Weitere Informationen zu diesen Optionen finden Sie unter Verfügbare Fahrzeugtypen für Routen.

  • Mit routingParameters.setRoutingPreference() können Sie die Option für die Routing-Einstellungen auf TRAFFIC_UNAWARE (Standard), TRAFFIC_AWARE oder TRAFFIC_AWARE_OPTIMAL festlegen. Jede Option hat unterschiedliche Datenqualitäts- und Latenzwerte. Weitere Informationen finden Sie unter Trafficdaten einbeziehen.
  • Verwenden Sie routingParameters.setRouteModifiers(), um avoidTolls, avoidHighways, avoidFerries und avoidIndoor anzugeben. Weitere Informationen zu diesen Optionen finden Sie unter Zu vermeidende Routenmerkmale angeben.

Im nächsten Beispiel geben Sie den Fahrmodus als DRIVE an und legen fest, 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();
    });