Routenmatrix abrufen

Eine Routenmatrix ist ein zweidimensionales Array mit Routeninformationen, wobei die Zeilen den Startorten und die Spalten den Zielorten entsprechen. Anhand einer Liste von Ausgangs- und Zielorten berechnet die Klasse „Route Matrix“ die Entfernung und Dauer einer Route, die an jedem Ausgangsort beginnt und an jedem Zielort endet. Mit der Klasse „Route Matrix“ können Sie die Entfernung und Dauer einer Route für mehrere Start- und Zielorte berechnen.

Anfragelimits

Für die Methode RouteMatrix.computeRouteMatrix() gelten die folgenden Anfragebeschränkungen für Wegpunkte mit Adress- oder Ortsinstanzen sowie für Elemente. Elemente sind die Routen zwischen den einzelnen Start- und Zielorten in einer Routenmatrix. Die Anzahl der Elemente entspricht also der Anzahl der Startorte multipliziert mit der Anzahl der Zielorte. Wenn Sie beispielsweise 10 Quellorte und 10 Ziele haben, sind das 100 Elemente:

  • Die Anzahl der Elemente darf bei Routen, die keine TRANSIT-Routen sind, 625 nicht überschreiten.
  • Wenn Sie eine TRANSIT-Route angeben, darf die Anzahl der Elemente 100 nicht überschreiten.
  • Wenn Sie TRAFFIC_AWARE_OPTIMAL angeben, darf die Anzahl der Artikel 100 nicht überschreiten.
  • Wenn Sie Start- oder Zielorte mit Adressen oder Place-Instanzen angeben, können Sie auf diese Weise insgesamt bis zu 50 angeben.

Beispiel für eine Anfrage für eine Routenmatrix

Das folgende Beispiel zeigt eine ComputeRouteMatrixRequest. In diesem Beispiel wird Folgendes ausgeführt:

  • Hier wird gezeigt, wie ein Array mit zwei Start- und zwei Zielwegpunkten angegeben wird. Die Methode berechnet eine Route von jedem Start- zu jedem Zielort. Die Antwort enthält also vier Routen.
    Im Array befindet sich das erste Element an Index 0, das zweite an Index 1 usw.
  • Geben Sie die Felder an, die zurückgegeben werden sollen. Konfigurieren Sie in diesem Beispiel die Anfrage so, dass für jede Route durationMillis, distanceMeters und condition zurückgegeben werden.
const request = {
  origins: [origin1, origin2],
  destinations: [destinationA, destinationB],
  travelMode: google.maps.TravelMode.DRIVING,
  units: google.maps.UnitSystem.METRIC,
  fields: ['durationMillis', 'distanceMeters', 'condition'], 
};
    

Die Antwort enthält die vier möglichen Routen für die Kombination aller Start- und Ziel-Wegpunkte, wie im folgenden Beispiel gezeigt:

"matrix": {
  "rows": [
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 202587,
          "durationMillis": 10040000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 252734,
          "durationMillis": 12240000
        }
      ]
    },
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 166135,
          "durationMillis": 6596000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 216282,
          "durationMillis": 8797000
        }
      ]
    }
  ]
}
    

Identifizieren Sie jede Route im Ergebnis anhand des Start- und Zielindex, um die entsprechende RouteMatrixItem im 2D-Array zu finden. Beispielsweise wäre die RouteMatrixItem, die die Route vom Startort mit dem Index 1 und dem Zielort mit dem Index 0 in der Anfrage beschreibt, das zweite Element des RouteMatrix.rows-Arrays und das erste Element des RouteMatrixRow.items-Arrays.

Das folgende Code-Snippet zeigt, wie Sie die RouteMatrixItem identifizieren, um die Route für einen bestimmten Start- und Zielort zu finden:

// Find the route for origin 'x' and destination 'y'.
const {matrix} = await RouteMatrix.computeRouteMatrix(request);
const myRouteMatrixItem = matrix.rows[x].items[y];
    

Felder für die Rückgabe auswählen

Wenn Sie eine Routenmatrix anfordern, müssen Sie mit einer Feldmaske angeben, welche Informationen in der Antwort zurückgegeben werden sollen.

Wenn Sie eine Feldmaske verwenden, wird außerdem verhindert, dass unnötige Daten angefordert werden. Das trägt dazu bei, die Antwortlatenz zu verringern und Informationen zu vermeiden, die Ihr System nicht benötigt.

Geben Sie die Liste der benötigten Felder an, indem Sie die Property ComputeRoutesMatrixRequest.fields festlegen, wie im folgenden Snippet gezeigt:

fields: ['durationMillis', 'distanceMeters', 'condition'],
    

Zu verwendende Feldmasken festlegen

So können Sie festlegen, welche Felder Sie verwenden möchten, und die entsprechenden Feldmasken erstellen:

  1. Alle Felder anfordern mit der Feldmaske ['*'].
  2. Hierarchie der Felder in der Klasse RouteMatrixItem für die gewünschten Felder ansehen.
  3. Erstellen Sie Ihre Feldmasken anhand der Hierarchie der Felder aus dem vorherigen Schritt in diesem Format:

    topLevelField[.secondLevelField][.thirdLevelField][...]

Beispiel: RouteMatrixItem

  "travelAdvisory": {
    "fuelConsumptionMicroliters": 0,
    "tollInfo": {
      "estimatedPrices": [
        {
          "currencyCode": "USD",
          "units": 4,
          "nanos": 400000000
        }
      ]
    }
  },
    

Wenn Sie nur das Feld tollInfo für RouteMatrixItem zurückgeben möchten, sieht Ihre Feldmaske so aus:

fields: ['travelAdvisory.tollInfo']

Wenn Sie stattdessen den geschätzten Kraftstoffverbrauch anfordern möchten, sieht die Feldmaske so aus:

fields: ['travelAdvisory.fuelConsumptionMicroliters']

Wenn Sie beides anfordern möchten, sieht Ihre Feldmaske so aus:

fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']

Wenn Sie alle Reisehinweise anfordern möchten, sieht Ihre Feldmaske so aus:

fields: ['travelAdvisory']