Recupero di una matrice di route

Utilizza l'API Routes per calcolare la distanza e la durata di un itinerario per più origini e destinazioni chiamando il metodo computeRouteMatrix (REST) o il metodo ComputeRouteMatrix (gRPC) in streaming.

Dato un elenco di origini e destinazioni, il metodo calcola la distanza e la durata di un percorso che parte da ogni origine e termina in ogni destinazione.

Ottenere una matrice di percorsi di trasporto pubblico

Puoi anche calcolare una matrice di percorsi per il trasporto pubblico. Per un esempio, consulta Ottenere una matrice di percorsi per il trasporto pubblico.

Limiti per le richieste

I metodi ComputeRouteMatrix applicano i seguenti limiti di richiesta per i waypoint che utilizzano indirizzi o ID luogo e per gli elementi. Gli elementi sono i percorsi tra ogni origine e destinazione in una matrice di percorsi, pertanto 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 un percorso TRANSIT, il numero di elementi non può superare 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, puoi specificare fino a 50 in totale in questo modo.

Errori di risposta

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

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

Risultati dello stream gRPC

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

Non è garantito che gli elementi restituiti dallo stream vengano restituiti in un ordine specifico. Pertanto, ogni elemento di risposta contiene un origin_index e un destination_index. Per le origini e le destinazioni specificate dalla richiesta, l'origine del percorso è equivalente a origins[origin_index] per un determinato elemento e la destinazione del percorso è equivalente a destinations[destination_index]. Questi array sono indicizzati da zero. È importante memorizzare gli ordini degli elenchi di origine e destinazione.

Esempi di calcolo di una matrice di percorsi

Utilizza il metodo computeRouteMatrix in una richiesta HTTP per calcolare una matrice di percorsi.

Esempio HTTP

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

  • Specifica un array di due waypoint di partenza e due di destinazione. Il metodo calcola un percorso da ogni origine a ogni destinazione, pertanto la risposta contiene quattro percorsi.

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

  • Includi una maschera di campo della risposta per specificare quali campi della 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 percorso. Per ulteriori informazioni, consulta 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 i quattro percorsi possibili per la combinazione di tutti i waypoint di partenza e di destinazione.

Identifica ogni percorso nella risposta utilizzando i campi di risposta originIndex e destinationIndex. Ad esempio, un valore originIndex pari a 1 nella risposta corrisponde a un percorso calcolato 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

Ad esempio, per le richieste gRPC, consulta gli esempi in Richiesta gRPC di esempio. L'esempio Java su quella pagina chiama sia Compute Routes sia Compute Route Matrix.