Recupero di una matrice di route

Utilizza l'API Routes per calcolare la distanza e la durata di una route per più origini e destinazioni chiamando il metodo computeRouteMatrix (REST) o il metodo di flusso ComputeRouteMatrix (gRPC).

Avendo un elenco di luoghi di partenza e di arrivo, il metodo calcola la distanza e la durata di un percorso che parte da ogni luogo di partenza e termina a ciascuna destinazione.

Ottieni una matrice dei percorsi con il trasporto pubblico

Puoi anche calcolare una matrice del percorso sui mezzi di trasporto pubblico. Per un esempio, consulta Ottenere una matrice del percorso sui trasporti pubblici.

Limiti per le richieste

I metodi Compute Route Matrix applicano i seguenti limiti per le richieste alle tappe che utilizzano indirizzi o PlaceID e agli elementi. Gli elementi sono le route tra ogni origine e destinazione in una matrice di route, quindi il numero di elementi corrisponde al numero di origini volte al numero di destinazioni. Ad esempio, se hai 10 origini e 10 destinazioni, hai 100 elementi:

  • Il numero di elementi non può essere superiore a 625 per le route che non sono di tipo TRANSIT.

  • Se specifichi una route TRANSIT, il numero di elementi non può essere maggiore di 100.

  • Se specifichi TRAFFIC_AWARE_OPTIMAL, il numero di elementi non può superare 100. Per maggiori informazioni su TRAFFIC_AWARE_OPTIMAL, consulta Specificare come e se includere i dati sul traffico.

  • Se specifichi le origini o le destinazioni utilizzando l'indirizzo o l'ID luogo, in questo modo puoi specificare fino a 50 in totale.

Errori di risposta

Una caratteristica dei metodi Compute Route Matrix è che gli errori possono essere restituiti per l'intera risposta o per singoli elementi di risposta. Ad esempio, l'intera risposta contiene un errore se la richiesta non è valida (ad esempio, ha zero origini).

Tuttavia, se un errore si applica a un sottoinsieme di elementi nella risposta (ad esempio, non è possibile calcolare una route per una combinazione di origine e destinazione), solo gli elementi interessati dall'errore restituiscono un codice di errore.

Risultati di flussi gRPC

Il metodo gRPC ComputeRouteMatrix prende un elenco di origini e destinazioni e restituisce un flusso contenente informazioni sulla route per ogni combinazione di origine e destinazione. Poiché i risultati vengono restituiti come flusso, non devi attendere che vengano calcolate tutte le possibili combinazioni di route prima di poter iniziare a elaborare i risultati.

Non è garantito che gli elementi restituiti dal flusso di dati vengano restituiti in qualsiasi ordine. Pertanto, ogni elemento di risposta contiene un origin_index e un destination_index. Per le origini e le destinazioni specificate nella richiesta, l'origine della route è equivalente a origins[origin_index] per un determinato elemento e la destinazione della route è equivalente a destinations[destination_index]. Questi array hanno indice zero. È importante archiviare gli ordini degli elenchi di origine e di destinazione.

Esempi di calcolo di una matrice di route

Usa il metodo computeRouteMatrix in una richiesta HTTP per calcolare una matrice di route.

Esempio HTTP

L'esempio seguente mostra una richiesta HTTP computeRouteMatrix. In questo esempio:

  • Specifica un array di due tappe di origine e due tappe di destinazione. Il metodo calcola una route da ogni origine a ogni destinazione in modo che la risposta contenga quattro route.

    Nell'array, il primo elemento ha un indice pari a 0, il secondo con indice 1 e così via.

  • Includi una maschera del campo di risposta per specificare quali campi di risposta (REST) o ComputeRoutesResponse (gRPC) restituire. In questo esempio, configura la richiesta in modo che restituisca originIndex, destinationIndex, duration, distanceMeters, status e condition per ogni route. Per ulteriori informazioni, consulta la sezione Scegliere i campi da restituire.

curl -X POST -d '{
  "origins": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420761,
            "longitude": -122.081356
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.403184,
            "longitude": -122.097371
          }
        }
      },
      "routeModifiers": { "avoid_ferries": true}
    }
  ],
  "destinations": [
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.420999,
            "longitude": -122.086894
          }
        }
      }
    },
    {
      "waypoint": {
        "location": {
          "latLng": {
            "latitude": 37.383047,
            "longitude": -122.044651
          }
        }
      }
    }
  ],
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \
'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'

La risposta contiene le quattro possibili route per la combinazione di tutte le tappe di origine e di destinazione.

Identifica ogni route nella risposta utilizzando i campi di risposta originIndex e destinationIndex. Ad esempio, un valore originIndex pari a 1 nella risposta corrisponde a una route calcolata dal waypoint all'indice 1 dell'array origins nella richiesta.

[
    {
        "originIndex": 0,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 822,
        "duration": "160s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 0,
        "status": {},
        "distanceMeters": 2919,
        "duration": "361s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 1,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 5598,
        "duration": "402s",
        "condition": "ROUTE_EXISTS"
    },
    {
        "originIndex": 0,
        "destinationIndex": 1,
        "status": {},
        "distanceMeters": 7259,
        "duration": "712s",
        "condition": "ROUTE_EXISTS"
    }
]

Esempi di gRPC

Per esempio per le richieste gRPC, vedi gli esempi nella richiesta gRPC di esempio. L'esempio Java in quella pagina chiama sia Compute Routes sia Compute Route Matrix.