Recupero di una matrice di route

Una matrice delle rotte è un array bidimensionale di informazioni sulle rotte, in cui le righe corrispondono alle origini e le colonne alle destinazioni. Data una lista di origini e destinazioni, la classe Route Matrix calcola la distanza e la durata di un percorso che inizia in ogni origine e termina in ogni destinazione. Utilizza la classe Route Matrix per calcolare la distanza e la durata di un percorso per più origini e destinazioni.

Limiti per le richieste

Il metodo RouteMatrix.computeRouteMatrix() applica i seguenti limiti delle richieste per i waypoint che utilizzano istanze di indirizzi o luoghi e per gli elementi. Gli elementi sono i percorsi tra ogni origine e destinazione in una matrice di itinerari, quindi il numero di elementi è il numero di origini moltiplicato per il numero di destinazioni. Ad esempio, se hai 10 origini e 10 destinazioni, hai 100 elementi:

  • Il numero di elementi non può superare 625 per i percorsi che non sono percorsi TRANSIT.
  • Se specifichi una TRANSIT, il numero di elementi non può superare 100.
  • Se specifichi TRAFFIC_AWARE_OPTIMAL, il numero di elementi non può superare 100.
  • Se specifichi origini o destinazioni utilizzando indirizzi o istanze di Place, puoi specificarne fino a 50 in totale.

Esempio di richiesta della matrice delle route

L'esempio seguente mostra un ComputeRouteMatrixRequest. Questo esempio esegue le seguenti operazioni:

  • Mostra la specifica di un array di due waypoint di partenza e due di destinazione. Il metodo calcola un percorso da ogni origine a ogni destinazione, quindi la risposta contiene quattro percorsi.
    Nell'array, il primo elemento si trova all'indice 0, il secondo all'indice 1 e così via.
  • Specifica i campi da restituire. In questo esempio, configura la richiesta in modo che restituisca durationMillis, distanceMeters e condition per ogni percorso.
const request = {
  origins: [origin1, origin2],
  destinations: [destinationA, destinationB],
  travelMode: google.maps.TravelMode.DRIVING,
  units: google.maps.UnitSystem.METRIC,
  fields: ['durationMillis', 'distanceMeters', 'condition'], 
};
    

La risposta contiene i quattro itinerari possibili per la combinazione di tutti i waypoint di origine e destinazione, come mostrato nell'esempio seguente:

"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
        }
      ]
    }
  ]
}
    

Identifica ogni percorso nel risultato utilizzando l'indice di partenza e destinazione per trovare il RouteMatrixItem corrispondente nell'array bidimensionale. Ad esempio, l'elemento RouteMatrixItem che descrive l'itinerario calcolato dall'origine all'indice 1 e dalla destinazione 0 nella richiesta si troverebbe nel secondo elemento dell'array RouteMatrix.rows e nel primo elemento dell'array RouteMatrixRow.items.

Il seguente snippet di codice mostra come identificare RouteMatrixItem per trovare il percorso per un'origine e una destinazione specifiche:

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

Scegli i campi da restituire

Quando richiedi una matrice di itinerari, devi utilizzare una maschera di campo per specificare le informazioni che la risposta deve restituire.

L'utilizzo di una maschera di campo garantisce inoltre di non richiedere dati non necessari, il che a sua volta contribuisce a ridurre la latenza della risposta ed evita di restituire informazioni che il sistema non richiede.

Specifica l'elenco dei campi di cui hai bisogno impostando la proprietà ComputeRoutesMatrixRequest.fields, come mostrato nel seguente snippet:

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

Determinare quali maschere di campo utilizzare

Ecco come puoi determinare quali campi vuoi utilizzare e creare le maschere dei campi per questi campi:

  1. Richiedi tutti i campi utilizzando una maschera di campo ['*'].
  2. Esamina la gerarchia dei campi nella classe RouteMatrixItem per i campi che ti interessano.
  3. Crea le maschere dei campi utilizzando la gerarchia dei campi mostrata nel passaggio precedente, utilizzando questo formato:

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

Ad esempio, per questo RouteMatrixItem:

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

Se vuoi restituire solo il campo tollInfo per RouteMatrixItem, la maschera del campo è la seguente:

fields: ['travelAdvisory.tollInfo']

Se invece vuoi richiedere il consumo di carburante stimato, la maschera del campo è la seguente:

fields: ['travelAdvisory.fuelConsumptionMicroliters']

Se vuoi richiedere entrambi, la maschera di campo è la seguente:

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

Se vuoi richiedere il set completo di avvisi di viaggio, la maschera del campo è la seguente:

fields: ['travelAdvisory']