Obtenir une matrice de routage

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 ComputeRouteMatrix (gRPC) en streaming.

À partir 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 commençant à chaque point de départ et se terminant à chaque destination.

Obtenir une matrice de lignes de transports en commun

Vous pouvez également calculer une matrice de trajets en transports en commun. Pour consulter un exemple, consultez Obtenir une matrice de trajets en transports en commun.

Limites de requêtes

Les méthodes Compute Route Matrix appliquent les limites de requête suivantes pour les points de cheminement utilisant des adresses ou des ID de lieu, et pour les éléments. Les éléments correspondent aux itinéraires entre chaque point de départ et chaque destination dans une matrice de calcul d'itinéraires. Le nombre d'éléments est donc égal au nombre de points de départ multiplié par le nombre de destinations. Par exemple, si vous avez 10 origines et 10 destinations, vous avez 100 éléments:

  • Le nombre d'éléments ne peut pas dépasser 625 pour les itinéraires qui ne sont pas des itinéraires TRANSIT.

  • Si vous spécifiez un parcours TRANSIT, le nombre d'éléments ne doit pas dépasser 100.

  • Si vous spécifiez TRAFFIC_AWARE_OPTIMAL, le nombre d'éléments ne doit pas dépasser 100. Pour en savoir plus sur TRAFFIC_AWARE_OPTIMAL, consultez Spécifier comment et si inclure des données sur le trafic.

  • Si vous spécifiez des points de départ ou d'arrivée à l'aide d'une adresse ou d'un ID de lieu, vous pouvez en spécifier jusqu'à 50 au total.

Erreurs de réponse

Une des caractéristiques des méthodes Compute Route Matrix est que des erreurs peuvent être renvoyées pour l'ensemble de la réponse ou pour des éléments de réponse individuels. Par exemple, la réponse entière contient une erreur si la requête est mal formée (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, un itinéraire ne peut pas être calculé pour une combinaison d'origine et de destination), seuls les éléments concernés par l'erreur renvoient un code d'erreur.

Résultats du streaming gRPC

La méthode gRPC ComputeRouteMatrix reçoit une liste d'origines et de destinations, puis renvoie un flux contenant des informations sur l'itinéraire pour chaque combinaison d'origine et de destination. Étant donné que les résultats sont renvoyés sous forme de flux, vous n'avez pas besoin d'attendre que toutes les combinaisons d'itinéraires possibles soient calculées avant de pouvoir commencer à traiter les résultats.

Il n'est pas garanti que les éléments renvoyés par le flux soient renvoyés dans un ordre donné. Par conséquent, chaque élément de réponse contient un origin_index et un destination_index. Pour les origines et les destinations spécifiées par la requête, l'origine de l'itinéraire est équivalente à origins[origin_index] pour un élément donné et la destination de l'itinéraire est équivalente à destinations[destination_index]. Ces tableaux sont indexés par zéro. Il est important de stocker l'ordre des listes d'origine et de destination.

Exemples de calcul d'une matrice de calcul d'itinéraires

Utilisez la méthode computeRouteMatrix dans une requête HTTP pour calculer une matrice de calcul d'itinéraires.

Exemple HTTP

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

  • Spécifiez un tableau de deux points de départ et de deux points de destination. La méthode calcule un itinéraire de chaque origine à chaque destination. La réponse contient donc quatre itinéraires.

    Dans le tableau, le premier élément se trouve à 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 la ComputeRoutesResponse (gRPC) à renvoyer. Dans cet exemple, configurez la requête pour qu'elle renvoie originIndex, destinationIndex, duration, distanceMeters, status et condition pour chaque itinéraire. Pour en savoir plus, consultez la section Choisir 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 itinéraires possibles pour la combinaison de tous les points de cheminement d'origine et de destination.

Identifiez chaque itinéraire dans la réponse à l'aide des champs de réponse originIndex et destinationIndex. Par exemple, une valeur originIndex de 1 dans la réponse correspond à un itinéraire calculé à partir du point d'intérêt à l'indice 1 du tableau origins de 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 les requêtes gRPC, consultez les exemples de la section Exemple de requête gRPC. L'exemple Java de cette page appelle à la fois Compute Routes et Compute Route Matrix.