Ottieni un percorso con il trasporto pubblico

Sviluppatori dello Spazio economico europeo (SEE)

Un itinerario del trasporto pubblico fornisce istruzioni di navigazione utilizzando le opzioni di trasporto pubblico disponibili nella regione. Le opzioni di trasporto pubblico possono includere autobus, metropolitana e treni, tra gli altri. Un itinerario del trasporto pubblico di solito include anche le indicazioni per raggiungere le stazioni, spostarsi tra le stazioni e allontanarsi da queste. Poiché un itinerario del trasporto pubblico in genere richiede di viaggiare utilizzando più di una modalità di trasporto, il modo in cui richiedi l'itinerario e alcune parti della risposta sono diversi.

Differenze tra gli itinerari del trasporto pubblico e gli altri itinerari

I percorsi dei trasporti pubblici, che richiedi impostando travelMode su TRANSIT, sono diversi dai percorsi che utilizzano diverse opzioni di travelMode. Non puoi richiedere tutti gli stessi oggetti e opzioni e la risposta restituisce campi diversi rispetto ad altri itinerari.

Nell'API Routes, i passaggi sono sempre un'istruzione di navigazione per tutti i tipi di viaggio. Quindi, ogni istruzione di navigazione è un passaggio. Una risposta di un itinerario del trasporto pubblico è molto simile agli itinerari con altre modalità di trasporto, con alcune differenze fondamentali:

Richiedi differenze Differenze nelle risposte
Non puoi specificare waypoint intermedi. Include i dettagli del trasporto pubblico.
Impossibile ottenere percorsi ecosostenibili Include i metadati per ogni modalità di viaggio che contiene il riepilogo dei passaggi per quella modalità di viaggio, in `stepsOverview` (per richiedere questi metadati, utilizza la maschera del campo `routes.legs.stepsOverview`).
Non è possibile specificare come e se includere i dati sul traffico
Impossibile specificare le caratteristiche del percorso da evitare
Puoi specificare solo transitPreferences per routingPreference. Per maggiori dettagli, vedi TransitPreferences.

Per ulteriori informazioni sulla risposta restituita dall'API Routes, consulta Esaminare le risposte delle route di transito.

Per ottenere un itinerario con i mezzi pubblici

  1. Imposta il punto di partenza e la destinazione.

  2. Imposta la modalità di viaggio su mezzi pubblici:

    travelMode: "TRANSIT"

  3. Aggiungi una maschera di campo per ottenere i campi di risposta che ti interessano. Consulta Richiedere i campi dell'itinerario di transito di cui hai bisogno.

  4. Se necessario, imposta i parametri facoltativi. Consulta Impostare i parametri per un itinerario del trasporto pubblico.

Richiedi i campi dell'itinerario del trasporto pubblico di cui hai bisogno

Richiedi i campi dell'itinerario del trasporto pubblico di cui hai bisogno utilizzando le maschere di campo. La tabella seguente contiene alcune risposte suggerite per un itinerario di transito e la maschera di campo da utilizzare per richiederle.

Per richiedere queste informazioni Utilizza questa maschera del campo
Tutti i dettagli della route routes.*
Tutti i dettagli del trasporto pubblico routes.legs.steps.transitDetails
Posizione iniziale per ogni tratta routes.legs.steps.startLocation
Posizione finale per ogni tratta routes.legs.steps.endLocation
Polilinea dell'itinerario per ogni passaggio routes.legs.steps.polyline
Tipo di trasporto utilizzato per ogni passaggio routes.legs.steps.travelMode
Tariffa stimata per ogni passaggio e per l'itinerario e Tariffa stimata localizzata routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Nota: transitFare viene fornito solo se l'API può determinare le informazioni sulla tariffa del trasporto pubblico per tutti i passaggi.

Testo localizzato per durata e distanza routes.localizedValues

Per saperne di più sull'impostazione delle maschere di campo, vedi Scegliere i campi da restituire.

Impostare i parametri per un itinerario del trasporto pubblico

Di seguito sono riportati i parametri pertinenti per gli itinerari del trasporto pubblico:

Per farlo: Utilizza questo parametro Note
Seleziona la modalità di trasporto pubblico travelMode: "TRANSIT" Obbligatorio. Ulteriori informazioni.
Impostare un orario di arrivo o di partenza "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

OPPURE

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Facoltativo. Puoi specificare arrival_time o departure_time. Se non viene specificato alcun orario, departure_time corrisponde all'ora di esecuzione corrente (now). Puoi impostare gli orari di arrivo e partenza solo all'interno della seguente finestra temporale, con l'ora di esecuzione corrente (now) come riferimento:
  • fino a 7 giorni prima del giorno now incluso
  • fino a 100 giorni dopo now inclusi
L'ora è espressa come timestamp nel formato "Zulu" UTC RFC3339. Scopri di più

Nota: gli orari del trasporto pubblico cambiano spesso, le corse disponibili possono cambiare nel tempo e non è garantito che le previsioni a lungo termine forniscano risultati coerenti.

Includi itinerari alternativi "computeAlternativeRoutes": true Facoltativo. Se impostato su true, Compute Routes calcola fino a 3 itinerari aggiuntivi, se disponibili. Scopri di più
Specifica le preferenze per il tipo di trasporto pubblico "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

Nota: se specifichi un mezzo di trasporto preferito, gli itinerari restituiti potrebbero comunque utilizzare altri mezzi di trasporto, anche solo altri mezzi di trasporto, a seconda dell'efficienza dell'itinerario e della disponibilità del mezzo di trasporto preferito.

Facoltativo. Specifica le modalità di trasporto pubblico preferite. Scopri di più
Specificare le preferenze per l'itinerario del trasporto pubblico "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Facoltativo. Specifica le preferenze di routing del trasporto pubblico. Scopri di più

Esempio: ottenere un percorso con i mezzi pubblici

Il seguente esempio recupera un itinerario con i mezzi pubblici con i seguenti parametri:

  • Specifica le preferenze per i viaggi in treno e meno tratti a piedi.

  • Richiede percorsi alternativi.

  • Fornisce una maschera del campo che restituisce i dettagli del transito:

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 risposta mostra i campi route.legs.steps.transitDetails per i due itinerari:

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