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 include anche le indicazioni per raggiungere le stazioni, spostarsi tra le stazioni e allontanarsi dalle stazioni. Poiché un itinerario del trasporto pubblico in genere richiede di viaggiare utilizzando più di un mezzo 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, differiscono dai percorsi che utilizzano diverse opzioni travelMode. Non puoi richiedere tutti gli stessi oggetti e opzioni e la risposta restituisce campi diversi rispetto ad altri percorsi.

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. Vedi Richiedere i campi dell'itinerario del trasporto pubblico di cui hai bisogno.

  4. Se necessario, imposta i parametri facoltativi. Consulta Impostare i parametri per un itinerario di 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 di partenza 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 ulteriori informazioni 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 i percorsi dei mezzi pubblici:

Per farlo Utilizza questo parametro Note
Seleziona la modalità di trasporto pubblico travelMode: "TRANSIT" Obbligatorio. Ulteriori informazioni.
Impostare un orario di arrivo o 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 in formato "Zulu" UTC RFC3339. Scopri di più

Nota: gli orari del trasporto pubblico cambiano spesso, i viaggi disponibili possono cambiare nel tempo e non è garantita la coerenza dei risultati per le previsioni a lungo termine.

Includi percorsi alternativi "computeAlternativeRoutes": true (Facoltativo) Imposta su true per fare in modo che Compute Routes calcoli fino a 3 percorsi aggiuntivi, se disponibili. Scopri di più
Specificare le preferenze per il tipo di trasporto pubblico "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

Nota: se specifichi una modalità di viaggio preferita, gli itinerari restituiti potrebbero comunque utilizzare altre modalità di trasporto pubblico, anche solo altre modalità di trasporto pubblico, a seconda dell'efficienza dell'itinerario e della disponibilità della modalità di viaggio preferita.

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