Routenzusammenfassungen mit der Suche entlang der Route kombinieren

Sie können Berechnungen für die Routenzusammenfassung mit Suche entlang einer Route kombinieren. In diesem Fall gibt Text Search (New) die Reisedauer und Entfernung zu jedem Ort in der Antwort und dann von jedem Ort zum endgültigen Ziel der Route zurück.

So verwenden Sie die neue Textsuche, um die Routingzusammenfassung zusammen mit der Suche entlang einer Route zu berechnen:

  1. Mit der Routes API eine Route berechnen, für die in der Antwort eine Routenpolylinie zurückgegeben wird.

  2. Mit dem Parameter searchAlongRouteParameters.polyline.encodedPolyline können Sie die Routen-Polylinie an die neue Textsuche übergeben, um 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 routingSummaries in die Feldmaske ein, damit die Antwort das routingSummaries-Array enthält. Dieses Array enthält die Dauer und Entfernung vom Startort der Routenberechnung zu jedem Ort in der Antwort.

Mit dem APIs Explorer können Sie Liveanfragen stellen, um sich mit der API und den API-Optionen vertraut zu machen:

Standardmäßig wird bei der Textsuche (neu) die gesamte Route berücksichtigt:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food",
  "searchAlongRouteParameters": {
    "polyline": {
      "encodedPolyline": "ROUTE_POLYLINE"
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

Die Antwort enthält zwei Arrays: das places-Array mit den übereinstimmenden Orten und das routingSummaries-Array mit der Dauer und Entfernung für die Fahrt zu den einzelnen Orten:

{
  "places": [
    {
      "formattedAddress": "1199 El Camino Real, San Bruno, CA 94066, USA",
      "priceLevel": "PRICE_LEVEL_INEXPENSIVE",
      "displayName": {
        "text": "Vegan Mob - Vegan BBQ and Soul Food",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "839 Kearny St, San Francisco, CA 94108, USA",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Enjoy Vegetarian",
        "languageCode": "en"
      }
    },
   
],
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "285s",
          "distanceMeters": 1616
        },
        {
          "duration": "2466s",
          "distanceMeters": 58147
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808f87f9ede375f5:0xa37171fea1a16b28!1m0!3e0"
    },
    {
      "legs": [
        {
          "duration": "696s",
          "distanceMeters": 4704
        },
        {
          "duration": "2787s",
          "distanceMeters": 58901
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808580f4cebdb06f:0xd3af09e5742234f2!1m0!3e0"
    },
   
  ]
}

Für jeden Eintrag im legs-Array gibt die neue Textsuche eine zweiteilige Reisezeit zurück:

  • Der erste Abschnitt enthält die Reisedauer und die Entfernung vom Startort zum Ort. In diesem Beispiel beträgt die Dauer und Entfernung vom Ursprung zum ersten Ort in den Ergebnissen 285 Sekunden und 1.616 Meter.

  • Der zweite Abschnitt enthält die Reisedauer und die Entfernung vom Ort zum Zielort der Route. In diesem Beispiel sind das 2.466 Sekunden und 58.147 Meter.

Routingursprung, Mobilitätsform und Routenmodifikatoren angeben

Sie können die Berechnung der Zusammenfassung für Suche und Routenplanung ändern, indem Sie den Routenursprung, die Mobilitätsform, Routenmodifikatoren und Routeneinstellungen angeben. Die Verkehrsmittel und Routenmodifikatoren funktionieren genauso wie beim Berechnen von Routenzusammenfassungen ohne Angabe einer Route, wie im Thema Verkehrsmittel angeben beschrieben.

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

Im nächsten Beispiel geben Sie den Ursprung des Routings als die Koordinaten von San Mateo, Kalifornien, an, legen fest, dass Mautstraßen vermieden werden sollen, und legen die Anzahl der Ergebnisse auf 5 fest:

  curl -X POST -d '{
    "textQuery" : "Spicy Vegetarian Food",
    "maxResultCount": 5,
    "searchAlongRouteParameters": {
      "polyline": {
        "encodedPolyline": "ROUTE_POLYLINE"
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": 37.56617,
        "longitude": -122.30870
      },
      "travelMode":"DRIVE",
      "routeModifiers": {
        "avoidTolls": true
      }
    }
  }' \
  -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
  -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
  'https://places.googleapis.com/v1/places:searchText'

Das folgende Bild zeigt eine Karte mit der Routen-Polylinie, dem neuen Startpunkt (hellblaue Markierung) und den Orten in den Suchergebnissen (grüne Markierungen). Alle Ergebnisse liegen auf der Route, aber hinter San Mateo:

Suchergebnisse aus der Updatequelle.

Testen!

Mit dem APIs Explorer können Sie Beispielanfragen stellen, um sich mit der API und den API-Optionen vertraut zu machen.

  1. Wählen Sie rechts auf der Seite das API-Symbol api aus.

  2. Bearbeiten Sie optional die Anfrageparameter.

  3. Klicken Sie auf die Schaltfläche Ausführen. Wählen Sie im Dialogfeld das Konto aus, das Sie für die Anfrage verwenden möchten.

  4. Wählen Sie im Bereich „APIs Explorer“ das Symbol für den Vollbildmodus fullscreen aus, um das APIs Explorer-Fenster zu maximieren.