Obtenir un itinéraire en transports en commun

Un itinéraire en transports en commun fournit des instructions de navigation à l'aide des options de transports en commun disponibles dans la région. Les options de transport peuvent inclure le bus, le métro et le train, entre autres. Un itinéraire en transports en commun comprend également généralement des instructions pour marcher vers, depuis et entre les stations de transports en commun. Étant donné qu'un itinéraire en transports en commun nécessite généralement plusieurs modes de transport, la manière dont vous demandez l'itinéraire et certaines parties de la réponse sont différentes.

Différences entre les itinéraires en transports en commun et les autres itinéraires

Les itinéraires en transports en commun, que vous demandez en définissant le mode de transport de TRANSIT, diffèrent des itinéraires utilisant différentes options de transport en commun. Vous ne pouvez pas demander les mêmes objets et options, et la réponse renvoie des champs différents par rapport à d'autres routes.

Dans l'API Routes, les étapes constituent une seule instruction de navigation pour tous les types de trajets. Chaque instruction de navigation correspond donc à une étape. Une réponse d'itinéraire en transports en commun est très semblable à des itinéraires avec d'autres modes de transport, à quelques différences près:

Différences entre les requêtes Différences entre les réponses
Vous ne pouvez pas spécifier de points de cheminement intermédiaires. Inclut des informations sur les transports en commun.
Impossible d'obtenir des itinéraires économes en carburant Comprend des métadonnées pour chaque mode de transport qui contient le résumé des étapes pour ce mode de transport, dans "stepsOverview" (pour demander ces métadonnées, utilisez le masque de champ "routes.legs.stepsOverview").
Impossible de spécifier si et comment inclure les données sur le trafic
Impossible de spécifier des éléments géographiques de route à éviter
Vous ne pouvez spécifier que transitPreferences pour routingPreference. Pour en savoir plus, consultez la section [TransitPreferences](reference/rest/v2/TransitPreferences).

Pour en savoir plus sur la réponse renvoyée par l'API Routes, consultez la section Examiner les réponses aux requêtes d'itinéraire en transports en commun.

Pour obtenir un itinéraire en transports en commun

  1. Définissez votre point de départ et votre destination.

  2. Définissez le mode de transport sur "Transports en commun" :

    travelMode: "TRANSIT"

  3. Ajoutez un masque de champ pour obtenir les champs de réponse de votre choix. Consultez Demander les champs d'itinéraire en transports en commun dont vous avez besoin.

  4. Si nécessaire, définissez des paramètres facultatifs. Consultez Définir les paramètres d'un itinéraire en transports en commun.

Demander les champs d'itinéraire en transports en commun dont vous avez besoin

Demandez les champs d'itinéraire en transports en commun dont vous avez besoin à l'aide de masques de champ. Le tableau suivant contient des suggestions de réponses pour un itinéraire en transports en commun et le masque de champ à utiliser pour les demander.

Pour demander ces informations Utiliser ce masque de champ
Tous les détails de l'itinéraire routes.*
Tous les détails des transports en commun routes.legs.steps.transitDetails
Lieu de départ pour chaque étape routes.legs.steps.startLocation
Lieu d'arrivée pour chaque étape routes.legs.steps.endLocation
Acheminer la polyligne pour chaque étape routes.legs.steps.polyline
Type de transport utilisé pour chaque étape routes.legs.steps.travelMode
Prix estimé pour chaque étape et pour l'itinéraire, et estimation du tarif localisé routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Remarque: transitFare n'est fourni que si l'API peut déterminer les tarifs des transports en commun pour toutes les étapes.

Texte localisé pour la durée et la distance routes.localizedValues

Pour en savoir plus sur la définition des masques de champ, consultez la section Choisir les champs à renvoyer.

Définir les paramètres d'un itinéraire en transports en commun

Voici les paramètres pertinents pour les itinéraires en transports en commun:

Pour ce faire, procédez comme suit : Utiliser ce paramètre Remarques
Sélectionner un mode de transport en commun travelMode: "TRANSIT" Obligatoire. En savoir plus
Définir une heure d'arrivée ou de départ "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

OU

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Facultatif. Vous pouvez spécifier arrival_time ou departure_time. Si aucune heure n'est spécifiée, departure_time est défini par défaut sur l'heure d'exécution actuelle (now). Vous ne pouvez définir les heures d'arrivée et de départ que dans la fenêtre temporelle suivante, en utilisant l'heure d'exécution actuelle (now) comme référence :
  • jusqu'au now (inclus)
  • jusqu'à 100 jours (inclus) après le now
L'heure est exprimée sous forme de code temporel au format RFC3339 UTC "Zulu". En savoir plus
Inclure d'autres itinéraires "computeAlternativeRoutes": true Facultatif. Définissez ce paramètre sur "true" pour que l'API Routes calcule jusqu'à trois routes supplémentaires, le cas échéant. En savoir plus
Spécifiez vos préférences pour le type de transport en commun "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

Remarque: Si vous spécifiez un mode de transport préféré, les itinéraires renvoyés peuvent toujours en utiliser d'autres, voire seulement d'autres, en fonction de l'efficacité de l'itinéraire et de sa disponibilité.

Facultatif. Spécifiez vos modes de transport préférés. En savoir plus
Spécifiez vos préférences pour l'itinéraire en transports en commun "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Facultatif. Spécifiez les préférences d'itinéraire en transports en commun. En savoir plus

Exemple: Obtenir un itinéraire en transports en commun

Dans l'exemple suivant, la requête récupère un itinéraire en transports en commun avec les paramètres suivants:

  • Spécifie les préférences pour les trajets en train et le moins à pied.

  • Demande d'autres itinéraires.

  • Fournit un masque de champ qui renvoie les informations sur les transports en commun:

curl -X POST -H 'content-type: application/json' -d '{
  "origin": {
    "address": "Humberto Delgado Airport, Portugal"
  },
  "destination": {
    "address": "Basílica of Estrela, Praça da Estrela, 1200-667 Lisboa, Portugal"
  },
  "travelMode": "TRANSIT",
  "computeAlternativeRoutes": true,
  "transitPreferences": {
     routingPreference: "LESS_WALKING",
     allowedTravelModes: ["TRAIN"]
  },
}' \
-H 'Content-Type: application/json' \
-H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.legs.steps.transitDetails' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

La réponse affiche des champs route.legs.steps.transitDetails pour les deux routes:

{
  "routes": [
    {
    "legs": [
        {
        "steps": [
          {},
          {},
          {},
          {
          "transitDetails": {
            "stopDetails": {
            "arrivalStop": {
              "name": "Saldanha",
              "location": {
                "latLng": {
                  "latitude": 38.73532,
                  "longitude": -9.14543
                }
              }
            },
            "arrivalTime": "2023-08-26T10:49:42Z",
            "departureStop": {
              "name": "Aeroporto",
              "location": {
                "latLng": {
                  "latitude": 38.769047799999996,
                  "longitude": -9.1284593
                }
              }
            },
            "departureTime": "2023-08-26T10:32:10Z"
              },
              "localizedValues": {
              "arrivalTime": {
                  "time": {
                    "text": "11:49"
                  },
                  "timeZone": "Europe/Lisbon"
              },
              "departureTime": {
                "time": {
                  "text": "11:32"
                },
                "timeZone": "Europe/Lisbon"
              }
            },
              "headsign": "São Sebastião",
              "transitLine": {
                "agencies": [
                  {
                    "name": "Metropolitano de Lisboa, E.P.E.",
                    "phoneNumber": "+351 21 350 0115",
                    "uri": "https://www.metrolisboa.pt/"
                  }
                ],
                "name": "Vermelha",
                "color": "#f23061",
                "nameShort": "Vm",
                "textColor": "#000000",
                "vehicle": {
                  "name": {
                    "text": "Metrô"
                  },
                "type": "SUBWAY",
                "iconUri": "//maps.gstatic.com/mapfiles/transit/iw2/6/subway2.png"
                }
              },
              "stopCount": 11
            }
          },
        {},
        {
          "transitDetails": {
            "stopDetails": {
              "arrivalStop": {
                "name": "Rato",
                "location": {
                  "latLng": {
                    "latitude": 38.7201022,
                    "longitude": -9.1540562
                  }
              }
            },
            "arrivalTime": "2023-08-26T11:01:37Z",
            "departureStop": {
              "name": "Saldanha",
                "location": {
                  "latLng": {
                    "latitude": 38.73527,
                    "longitude": -9.1455200000000012
                  }
                }
              },
              "departureTime": "2023-08-26T10:57:57Z"
            },
            "localizedValues": {
              "arrivalTime": {
                "time": {
                  "text": "12:01"
                },
                "timeZone": "Europe/Lisbon"
              },
              "departureTime": {
                "time": {
                  "text": "11:57"
                },
                "timeZone": "Europe/Lisbon"
              }
            },
            "headsign": "Rato",
            "transitLine": {
              "agencies": [
                {
                "name": "Metropolitano de Lisboa, E.P.E.",
                "phoneNumber": "+351 21 350 0115",
                "uri": "https://www.metrolisboa.pt/"
                }
              ],
              "name": "Amarela",
              "color": "#f2c200",
              "nameShort": "Am",
              "textColor": "#000000",
              "vehicle": {
                "name": {
                  "text": "Metrô"
                },
                "type": "SUBWAY",
                "iconUri": "//maps.gstatic.com/mapfiles/transit/iw2/6/subway2.png"
              }
            },
            "stopCount": 4
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}