Routenzusammenfassungen mit der Suche entlang der Route kombinieren

Sie können Berechnungen für Routenzusammenfassungen mit der Suche entlang einer Route kombinieren. In diesem Fall gibt die Text Search (New) in der Antwort die Reisedauer und ‑entfernung zu jedem Ort und von jedem Ort zum Zielort der Route zurück.

So verwenden Sie Text Search (neu), um die Routenzusammenfassung zusammen mit der Suche entlang einer Route zu berechnen:

  1. Verwenden Sie die Routes API, um eine Route zu berechnen, die in der Antwort eine Routenpolylinie zurückgibt.

  2. Verwenden Sie searchAlongRouteParameters.setPolyline(), um die Routenpolylinie an die Textsuche (neu) zu übergeben und die Suchergebnisse auf die Route auszurichten. Die Antwort enthält dann Orte, die den Suchkriterien entsprechen und sich in der Nähe der angegebenen Route befinden.

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

Standardmäßig führt die Textsuche (neu) die Suche entlang der gesamten Route durch:

// Define the route polyline object using the route string.
EncodedPolyline encodedPolyline = EncodedPolyline.newInstance("wblcFptchVIFOd@G@EVw@Ms@dHKR}ApNA`AF~@Hf@TjAb@bBb@~@n@p@^Rd@~@Vz@HVz@nDLt@?d@Kr@c@~@mD`G?`@aEfGkCnDuChDm`@bb@[`@{GhHeEdEciBnnBkC`DkC~DaClEuKjT_Z|l@Qb@iR~_@}EzJ_AdB_Und@kAfCaOjZkg@vcAqBzD_]rr@iBlEaBxEgArD}AlG}AhHsA`IeAnH{@dIq@dJgL~iBq@rHu@vGgAtHwArHaBhHkBzG_DpJ}Nbc@iBhGkA|EgC|LcIjb@oAhG_AvDgAdDkApC_BzCiBpCsFvGii@vn@scAxlAmLjNgSzUeRjT{TzWqExEmG|FuNlMmMhLaRvPqOlNmbAl}@mFlF{PlOmJfIoElE}LtMiSbU_H`I}}@jcAwl@vp@oAbBqA~BeAhCm@tBg@fCWrBQ~BI|DaB~rBO~D[bEa@`Dm@pDaAdE{@vC_BbEkB~Def@|z@sEzHKJeS~]}K`S{\\~l@cXpe@sBpDm@bAuCxDkBrBiC~BwCtByBnAcBx@}Bt@{Bn@gh@|LaOpDeFhAoDj@aE^kVrA_E^iEr@yD~@uBr@gMjF_EnAcCh@eFr@_DRsAD}@Jsu@xCWDqIV}BCeCOyDm@cBa@_DmA}JeE_CwAsBcBiBoBuAqBmOoX{CuEkB_CoDqDkVoUoD{CeE_DkEkC_FeCqB}@sDuAoDgAeCe@cCW}CK}BDaDTeOlBcuBrYaNlBq@Dyd@rGyFt@yBb@eBf@oCnAoBlAkIpGkAp@wBbAaCt@oFdAwKjBoGxA{FbByIjC_HfB_@KmNdDuC|@uFzBcH|C{@\\[?sBv@}@VaBVoA@y@EmAQcA[w@]aBkAeAkA}BuDUKs@uAqBsCwBcCgAiAiN_MyKsJsG{GkBaBiBuA{BwAwDkBcOaHiC_AiCg@}BQcCAcBHqBVkB`@qEjAu@LgCVgAHwG@sG?mABsH^eNr@mBXy@NqBt@uAt@aBlAkAlA}BtCyApBiAdB_BxB{A`B}@j@oAf@s@PeCVcIf@gAAkAQy@YiAo@_A{@_DgEgJqM_DeEaM}PoBiCzAsBw@kAdAGVk@f@q@z@C
");

// Specify the list of fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

// Define the search along route parameters object and pass the polyline object.
SearchAlongRouteParameters searchAlongRouteParameters = SearchAlongRouteParameters.builder()
    .setPolyline(encodedPolyline)
    .build();

// Use the builder to create a SearchByTextRequest object and pass the search along route parameters.
final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
    .setMaxResultCount(10)
    .setSearchAlongRouteParameters(searchAlongRouteParameters)
    .setRoutingSummariesIncluded(true)
    .build();

// Call PlacesClient.searchByText() to perform the search.
// Define a response handler to process the returned List of Place 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 Antwort enthält Objekte mit Listen der angeforderten Ortsfelder und Routing Zusammenfassungen mit der Dauer und Entfernung zu jedem Ort. Sie können SearchByTextResponse.getRoutingSummaries() aufrufen, um die Liste der Routenzusammenfassungen zurückzugeben.

Für jeden Eintrag im legs Array gibt Text Search (neu) eine Reisezeit für zwei Abschnitte Reisezeit zurück:

  • Der erste Abschnitt enthält die Reisedauer und ‑entfernung vom Startort zu dem Ort.

  • Der zweite Abschnitt enthält die Reisedauer und ‑entfernung vom Ort zum Zielort der Route.

Startort, Reisemodus und Routenmodifikatoren angeben

Sie können die Suche und die Berechnung der Routenzusammenfassung ändern, indem Sie den Startort, den Reisemodus, die Routenmodifikatoren und die Routingeinstellungen angeben. Der Reisemodus und die Routenmodifikatoren funktionieren genauso wie bei der Berechnung von Routing Zusammenfassungen ohne Angabe einer Route, wie im Thema Reiseoptionen angeben beschrieben.

Standardmäßig enthält der erste Abschnitt jedes Ergebnisses die Entfernung vom Startort, der durch die Polylinie definiert wird, zu jedem Ort. Sie können diese Standardeinstellung jedoch überschreiben, indem Sie in der Anfrage explizit einen Startort angeben. Wenn angegeben, werden im ersten Abschnitt aller Antworten die Entfernungen und die Dauer vom angegebenen Startort aus angegeben, wodurch der Startort aus der Polylinie überschrieben wird.

Im nächsten Beispiel geben Sie als Startort die Koordinaten von San Mateo, Kalifornien, an, legen fest, dass Mautgebühren vermieden werden sollen, und legen die Anzahl der Ergebnisse auf 5 fest:

// Define the route polyline object using the route string.
EncodedPolyline encodedPolyline = EncodedPolyline.newInstance("wblcFptchVIFOd@G@EVw@Ms@dHKR}ApNA`AF~@Hf@TjAb@bBb@~@n@p@^Rd@~@Vz@HVz@nDLt@?d@Kr@c@~@mD`G?`@aEfGkCnDuChDm`@bb@[`@{GhHeEdEciBnnBkC`DkC~DaClEuKjT_Z|l@Qb@iR~_@}EzJ_AdB_Und@kAfCaOjZkg@vcAqBzD_]rr@iBlEaBxEgArD}AlG}AhHsA`IeAnH{@dIq@dJgL~iBq@rHu@vGgAtHwArHaBhHkBzG_DpJ}Nbc@iBhGkA|EgC|LcIjb@oAhG_AvDgAdDkApC_BzCiBpCsFvGii@vn@scAxlAmLjNgSzUeRjT{TzWqExEmG|FuNlMmMhLaRvPqOlNmbAl}@mFlF{PlOmJfIoElE}LtMiSbU_H`I}}@jcAwl@vp@oAbBqA~BeAhCm@tBg@fCWrBQ~BI|DaB~rBO~D[bEa@`Dm@pDaAdE{@vC_BbEkB~Def@|z@sEzHKJeS~]}K`S{\\~l@cXpe@sBpDm@bAuCxDkBrBiC~BwCtByBnAcBx@}Bt@{Bn@gh@|LaOpDeFhAoDj@aE^kVrA_E^iEr@yD~@uBr@gMjF_EnAcCh@eFr@_DRsAD}@Jsu@xCWDqIV}BCeCOyDm@cBa@_DmA}JeE_CwAsBcBiBoBuAqBmOoX{CuEkB_CoDqDkVoUoD{CeE_DkEkC_FeCqB}@sDuAoDgAeCe@cCW}CK}BDaDTeOlBcuBrYaNlBq@Dyd@rGyFt@yBb@eBf@oCnAoBlAkIpGkAp@wBbAaCt@oFdAwKjBoGxA{FbByIjC_HfB_@KmNdDuC|@uFzBcH|C{@\\[?sBv@}@VaBVoA@y@EmAQcA[w@]aBkAeAkA}BuDUKs@uAqBsCwBcCgAiAiN_MyKsJsG{GkBaBiBuA{BwAwDkBcOaHiC_AiCg@}BQcCAcBHqBVkB`@qEjAu@LgCVgAHwG@sG?mABsH^eNr@mBXy@NqBt@uAt@aBlAkAlA}BtCyApBiAdB_BxB{A`B}@j@oAf@s@PeCVcIf@gAAkAQy@YiAo@_A{@_DgEgJqM_DeEaM}PoBiCzAsBw@kAdAGVk@f@q@z@C
");

// 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()
    .setAvoidTolls(true)
    .build();

// Define the routing parameters object and pass the routing origin.
// Set the travel mode to DRIVE.
// Pass the routeModifiers object.
RoutingParameters routingParameters = RoutingParameters.builder()
    .setOrigin(toLatLng("37.56617, -122.30870"))
    .setTravelMode(DRIVE)
    .setRouteModifiers(routeModifiers)
    .build();

// Define the search along route parameters object and pass the polyline object.
SearchAlongRouteParameters searchAlongRouteParameters = SearchAlongRouteParameters.builder()
    .setPolyline(encodedPolyline)
    .build();

// Use the builder to create a SearchByTextRequest object and pass the search along route parameters.
final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields)
    .setMaxResultCount(5)
    .setRoutingParameters(routingParameters)
    .setSearchAlongRouteParameters(searchAlongRouteParameters)
    .setRoutingSummariesIncluded(true)
    .build();

// Call PlacesClient.searchByText() to perform the search.
// Define a response handler to process the returned List of Place 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();
    });

Die folgende Abbildung zeigt eine Karte mit der Routenpolylinie, dem neuen Startort (hellblaue Markierung) und den Orten in den Suchergebnissen (grüne Markierungen). Beachten Sie, wie alle Ergebnisse entlang der Route, aber hinter San Mateo liegen:

Suchergebnisse aus der Update-Quelle.