Obtenir un itinéraire en transports en commun

Développeurs de l'Espace économique européen (EEE)

Un itinéraire en transports en commun fournit des instructions de navigation à l'aide des options de transport en commun disponibles dans la région. Les options de transport en commun peuvent inclure les bus, les métros et les trains, entre autres. Un itinéraire en transports en commun comprend généralement des instructions pour se rendre à pied aux stations de transport en commun, pour en partir et pour se déplacer entre elles. Étant donné qu'un itinéraire en transports en commun nécessite généralement d'utiliser plusieurs modes de transport, la façon 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 un travelMode sur TRANSIT, diffèrent des itinéraires utilisant d'autres options travelMode. Vous ne pouvez pas demander tous les mêmes objets et options, et la réponse renvoie des champs différents par rapport aux autres itinéraires.

Dans l'API Routes, les étapes sont toujours une instruction de navigation pour tous les types de transport. Ainsi, chaque instruction de navigation est une étape. Une réponse d'itinéraire en transports en commun est très semblable aux itinéraires avec d'autres modes de transport, à quelques différences clés près :

Différences au niveau des requêtes Différences au niveau des réponses
Vous ne pouvez pas spécifier de points de repère intermédiaires. Inclut des informations sur les transports en commun.
Impossible d'obtenir des itinéraires économes en carburant Inclut des métadonnées pour chaque mode de transport contenant 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 comment et si inclure des données sur le trafic
Impossible de spécifier les caractéristiques de l'itinéraire à éviter
Vous ne pouvez spécifier que transitPreferences pour routingPreference. Pour en savoir plus, consultez TransitPreferences.

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

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 souhaités. 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 des paramètres pour 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 quelques réponses suggérées pour un itinéraire en transports en commun, ainsi que le masque de champ à utiliser pour les demander.

Pour demander ces informations Utilisez 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
Point de départ de chaque tronçon routes.legs.steps.startLocation
Point d'arrivée de chaque tronçon routes.legs.steps.endLocation
Polyligne de l'itinéraire pour chaque étape routes.legs.steps.polyline
Type de transport en commun utilisé pour chaque étape routes.legs.steps.travelMode
Tarif estimé pour chaque étape et l'itinéraire, et tarif estimé localisé routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Remarque : transitFare n'est fourni que si l'API peut déterminer les informations sur le tarif 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 Choisir les champs à renvoyer.

Définir des paramètres pour un itinéraire en transports en commun

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

Pour ce faire Utilisez 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, la valeur par défaut de departure_time est 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, avec l'heure d'exécution actuelle (now) comme référence :
  • jusqu'à 7 jours avant now inclus
  • jusqu'à 100 jours après now inclus
L'heure est exprimée sous la forme d'un horodatage au format RFC3339 UTC "Zulu". En savoir plus

Remarque : Les horaires des transports en commun changent fréquemment, les trajets disponibles peuvent changer au fil du temps et il n'est pas garanti de fournir des résultats cohérents pour les prédictions très en avance.

Inclure des itinéraires bis "computeAlternativeRoutes": true Facultatif. Définissez la valeur sur "true" pour que Compute Routes calcule jusqu'à trois itinéraires supplémentaires, le cas échéant. En savoir plus
Spécifier les 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 utiliser d'autres modes de transport en commun, voire uniquement d'autres modes de transport en commun, en fonction de l'efficacité de l'itinéraire et de la disponibilité du transport préféré.

Facultatif. Spécifiez les modes de transport en commun préférés. En savoir plus
Spécifier les 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

L'exemple suivant obtient un itinéraire en transports en commun avec les paramètres suivants :

  • Spécifie les préférences pour les trajets en train et moins de marche.

  • Demande des itinéraires bis.

  • 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 les champs route.legs.steps.transitDetails pour les deux itinéraires :

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