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
econdition
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:
- Richiedi tutti i campi utilizzando una maschera di campo
['*']
. - Esamina la gerarchia dei campi nella classe
RouteMatrixItem
per i campi che ti interessano. 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']