Recupero di una matrice di route

Sviluppatori dello Spazio economico europeo (SEE)

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

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

Recuperare una matrice di itinerari del trasporto pubblico

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

Limiti per le richieste

I metodi Compute Route Matrix applicano i seguenti limiti di richieste 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 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 un TRANSIT percorso, 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 origini o destinazioni utilizzando l'indirizzo o l'ID luogo, puoi specificarne 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 è formattata correttamente (ad esempio, ha zero origini).

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

gRPC Stream results

Il metodo gRPC ComputeRouteMatrix accetta un elenco di origini e destinazioni e restituisce un flusso contenente informazioni sul percorso 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 itinerari prima di poter iniziare a elaborare i risultati.

Non è garantito che gli elementi restituiti dal flusso 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 dell'itinerario equivale a origins[origin_index] per un determinato elemento e la destinazione dell'itinerario equivale a destinations[destination_index]. Questi array sono indicizzati su base zero. È importante memorizzare gli ordini degli elenchi di origine e destinazione.

Esempi di calcolo di una matrice di itinerari

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

Esempio HTTP

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

  • Specifica un array di due waypoint di partenza e due di destinazione. Il metodo calcola una route da ogni origine a ogni destinazione, quindi la risposta contiene quattro route.

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

  • Includi una maschera del campo di 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 saperne di più, vedi 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 possibili itinerari per la combinazione di tutti i waypoint di origine e destinazione.

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

Per le richieste gRPC, ad esempio, consulta gli esempi in Richiesta gRPC di esempio. L'esempio Java in quella pagina chiama sia Compute Routes che Compute Routes Matrix.