Obtenir une matrice de routage

Une matrice de routes est un tableau bidimensionnel d'informations sur les routes, où les lignes correspondent aux origines et les colonnes aux destinations. À partir d'une liste d'origines et de destinations, la classe Route Matrix calcule la distance et la durée d'un itinéraire commençant à chaque origine et se terminant à chaque destination. Utilisez la classe Route Matrix pour calculer la distance et la durée d'un itinéraire pour plusieurs points de départ et destinations.

Limites de requêtes

La méthode RouteMatrix.computeRouteMatrix() applique les limites de requêtes suivantes pour les waypoints utilisant des instances d'adresse ou de lieu, et pour les éléments. Les éléments sont les itinéraires entre chaque origine et chaque destination d'une matrice d'itinéraire. Le nombre d'éléments correspond donc au nombre d'origines 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 itinéraire TRANSIT, le nombre d'éléments ne peut pas dépasser 100.
  • Si vous spécifiez TRAFFIC_AWARE_OPTIMAL, le nombre d'éléments ne peut pas dépasser 100.
  • Si vous spécifiez des origines ou des destinations à l'aide d'adresses ou d'instances Place, vous pouvez en spécifier jusqu'à 50 au total.

Exemple de requête de matrice de trajets

L'exemple suivant montre un ComputeRouteMatrixRequest. Cet exemple effectue les opérations suivantes :

  • Montre comment spécifier 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'index 0, le deuxième à l'index 1, et ainsi de suite.
  • Spécifiez les champs à renvoyer. Dans cet exemple, configurez la requête pour qu'elle renvoie durationMillis, distanceMeters et condition pour chaque itinéraire.
const request = {
  origins: [origin1, origin2],
  destinations: [destinationA, destinationB],
  travelMode: google.maps.TravelMode.DRIVING,
  units: google.maps.UnitSystem.METRIC,
  fields: ['durationMillis', 'distanceMeters', 'condition'], 
};
    

La réponse contient les quatre itinéraires possibles pour la combinaison de tous les points de cheminement d'origine et de destination, comme le montre l'exemple suivant :

"matrix": {
  "rows": [
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 202587,
          "durationMillis": 10040000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 252734,
          "durationMillis": 12240000
        }
      ]
    },
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 166135,
          "durationMillis": 6596000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 216282,
          "durationMillis": 8797000
        }
      ]
    }
  ]
}
    

Identifiez chaque itinéraire dans le résultat en utilisant l'index de point de départ et de destination pour trouver la RouteMatrixItem correspondante dans le tableau 2D. Par exemple, le RouteMatrixItem décrivant l'itinéraire calculé à partir de l'origine à l'index 1 et de la destination 0 dans la requête se trouverait dans le deuxième élément du tableau RouteMatrix.rows et dans le premier élément du tableau RouteMatrixRow.items.

L'extrait de code suivant montre comment identifier RouteMatrixItem pour trouver l'itinéraire d'une origine et d'une destination spécifiques :

// Find the route for origin 'x' and destination 'y'.
const {matrix} = await RouteMatrix.computeRouteMatrix(request);
const myRouteMatrixItem = matrix.rows[x].items[y];
    

Choisir les champs à renvoyer

Lorsque vous demandez une matrice de routes, vous devez utiliser un masque de champ pour spécifier les informations que la réponse doit renvoyer.

L'utilisation d'un masque de champ permet également de s'assurer de ne pas demander de données inutiles, ce qui contribue à réduire la latence des réponses et à éviter de renvoyer des informations dont votre système n'a pas besoin.

Spécifiez la liste des champs dont vous avez besoin en définissant la propriété ComputeRoutesMatrixRequest.fields, comme indiqué dans l'extrait de code suivant :

fields: ['durationMillis', 'distanceMeters', 'condition'],
    

Déterminer les masques de champ à utiliser

Voici comment déterminer les champs à utiliser et créer les masques de champ correspondants :

  1. Demandez tous les champs à l'aide d'un masque de champ ['*'].
  2. Examinez la hiérarchie des champs dans la classe RouteMatrixItem pour les champs souhaités.
  3. Créez vos masques de champ en utilisant la hiérarchie des champs affichée à l'étape précédente, au format suivant :

    topLevelField[.secondLevelField][.thirdLevelField][...]

Par exemple, pour ce RouteMatrixItem :

  "travelAdvisory": {
    "fuelConsumptionMicroliters": 0,
    "tollInfo": {
      "estimatedPrices": [
        {
          "currencyCode": "USD",
          "units": 4,
          "nanos": 400000000
        }
      ]
    }
  },
    

Si vous souhaitez renvoyer uniquement le champ tollInfo pour RouteMatrixItem, votre masque de champ se présente comme suit :

fields: ['travelAdvisory.tollInfo']

Si vous souhaitez plutôt demander la consommation de carburant estimée, votre masque de champ est le suivant :

fields: ['travelAdvisory.fuelConsumptionMicroliters']

Si vous souhaitez demander les deux, votre masque de champ est le suivant :

fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']

Si vous souhaitez demander l'ensemble complet des conseils aux voyageurs, votre masque de champ est le suivant :

fields: ['travelAdvisory']