Calculer une matrice de routes

Utilisez l'API Routes pour calculer la distance et la durée d'un itinéraire pour plusieurs points de départ et de destination en appelant la méthode computeRouteMatrix (REST) ou la méthode de streaming ComputeRouteMatrix (gRPC).

À l'aide d'une liste de points de départ et de destinations, la méthode calcule la distance et la durée d'un itinéraire entre chaque point de départ et chaque destination.

Limites de requêtes

Les méthodes de la matrice de routes de calcul appliquent les limites suivantes:

  • Le nombre d'éléments (nombre d'origines × nombre de destinations) ne peut pas dépasser 625.

  • Si vous spécifiez TRAFFIC_AWARE_OPTIMAL, le nombre d'éléments ne peut pas dépasser 100. Pour en savoir plus sur TRAFFIC_AWARE_OPTIMAL, consultez Configurer la qualité et la latence.

  • Le nombre maximal de points de cheminement (points de départ + destinations) que vous pouvez spécifier à l'aide d'un ID de lieu est de 50.

Erreurs de réponse

Les méthodes de la matrice de routes de calcul permettent de renvoyer les erreurs pour l'intégralité de la réponse ou pour des éléments de réponse individuels. Par exemple, la réponse entière contient une erreur si le format de la requête est incorrect (par exemple, si elle n'a aucune origine).

Toutefois, si une erreur s'applique à un sous-ensemble d'éléments de la réponse (par exemple, une route ne peut pas être calculée pour une combinaison origine et destination), seuls les éléments affectés par l'erreur renvoient un code d'erreur.

Diffuser les résultats

La méthode gRPC ComputeRouteMatrix utilise une liste de points de départ et de destinations, et renvoie un flux contenant des informations sur les routes pour chaque combinaison point de départ et destination. Les résultats étant renvoyés sous forme de flux, vous n'avez pas à attendre que toutes les combinaisons d'itinéraires possibles soient calculées avant de commencer à traiter les résultats.

Il n'est pas garanti que les éléments renvoyés par le flux soient renvoyés dans n'importe quel ordre. Chaque élément de réponse contient donc une origin_index et un destination_index. Pour les points de départ et de destination spécifiés par la requête, le point de départ de l'itinéraire est équivalent à origins[origin_index] pour un élément donné et la destination de l'itinéraire à destinations[destination_index]. Ces tableaux sont indexés par zéro. Il est important de stocker les commandes de la liste d'origine et de destination.

Exemples de calcul d'une route

Utilisez la méthode computeRouteMatrix dans une requête HTTP pour calculer une matrice de routage.

Exemple HTTP

L'exemple suivant montre une requête HTTP computeRouteMatrix. Dans cet exemple:

  • Spécifiez un tableau avec deux points de cheminement de départ et de destination. La méthode calcule un itinéraire entre chaque point de départ et chaque destination, de sorte que la réponse contient quatre routes.

    Dans le tableau, le premier élément a l'indice 0, le deuxième l'indice 1, et ainsi de suite.

  • Incluez un masque de champ de réponse pour spécifier les champs de la réponse (REST) ou de ComputeRoutesResponse (gRPC) à renvoyer. Dans cet exemple, configurez la requête de sorte qu'elle renvoie originIndex, destinationIndex, duration, distanceMeters, status et condition pour chaque itinéraire. Pour en savoir plus, consultez la section Sélectionner les champs à renvoyer.

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 réponse contient les quatre routes possibles pour la combinaison de tous les points de cheminement de départ et de destination.

Identifiez chaque itinéraire dans la réponse à l'aide des champs de réponse originIndex et destinationIndex. Par exemple, un originIndex (1) dans la réponse correspond à un itinéraire calculé à partir du point de cheminement à l'indice 1 du tableau origins dans la requête.

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

Exemples gRPC

Pour obtenir des exemples de requêtes gRPC, consultez les exemples de exemples de requêtes gRPC. L'exemple Java de cette page appelle à la fois les routes Compute et la matrice de routes de Compute.