Ottieni un percorso con il trasporto pubblico

Un percorso dei trasporti pubblici fornisce istruzioni di navigazione utilizzando le opzioni di trasporto pubblico disponibili nella regione. Le opzioni di trasporto pubblico possono includere, ad esempio, autobus, metropolitane e treni. Un percorso di trasporto pubblico include in genere anche istruzioni su come raggiungere a piedi le stazioni di trasporto pubblico, come arrivare e come spostarsi tra le stazioni. Poiché un percorso di trasporto pubblico solitamente richiede di utilizzare più di una modalità di viaggio, il modo in cui richiedi il percorso e alcune parti della risposta sono diversi.

Differenze tra le linee di trasporto pubblico e altre linee

I percorsi di trasporto pubblico, che richiedi impostando un valore travelMode di TRANSIT, differiscono dai percorsi che utilizzano opzioni travelMode diverse. Non puoi richiedere tutti gli stessi oggetti e le stesse 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. Pertanto, ogni istruzione di navigazione è un passaggio. Una risposta al percorso con il trasporto pubblico è molto simile ai percorsi con altre modalità di viaggio, con alcune differenze chiave:

Differenze nella richiesta Differenze nelle risposte
Non puoi specificare punti di passaggio intermedi. Sono inclusi i dettagli sui trasporti pubblici.
Impossibile ottenere percorsi ecosostenibili Include i metadati per ogni modalità di viaggio che contengono il riepilogo dei passaggi per quella modalità di viaggio in "stepsOverview" (per richiedere questi metadati, utilizza la maschera di campo "routes.legs.stepsOverview").
Impossibile specificare come e se includere i dati sul traffico
Impossibile specificare gli elementi del percorso da evitare
Puoi specificare transitPreferences solo per routingPreference. Per maggiori dettagli, consulta TransitPreferences.

Per ulteriori informazioni sulla risposta restituita dall'API Routes, consulta Esaminare le risposte relative ai percorsi di trasporto pubblico.

Per trovare un percorso con i mezzi pubblici

  1. Imposta la località di partenza e quella di arrivo.

  2. Imposta la modalità di viaggio su trasporto pubblico:

    travelMode: "TRANSIT"

  3. Aggiungi una maschera di campo per ottenere i campi di risposta che ti interessano. Consulta Richiedi i campi del percorso di trasporto pubblico di cui hai bisogno.

  4. Se necessario, imposta i parametri facoltativi. Consulta Impostare i parametri per un percorso di trasporto pubblico.

Richiedi i campi per i percorsi di trasporto pubblico di cui hai bisogno

Richiedi i campi dei percorsi di trasporto pubblico di cui hai bisogno utilizzando le maschere di campo. La tabella seguente contiene alcune risposte suggerite per un percorso di trasporto pubblico e la maschera di campo da utilizzare per richiederle.

Per richiedere queste informazioni Utilizza questa maschera di campo
Tutti i dettagli della route routes.*
Tutti i dettagli sui trasporti pubblici routes.legs.steps.transitDetails
Posizione di partenza per ogni tratto routes.legs.steps.startLocation
Posizione di fine per ogni tratto routes.legs.steps.endLocation
Polilinea del percorso per ogni passaggio routes.legs.steps.polyline
Tipo di trasporto pubblico utilizzato per ogni passaggio routes.legs.steps.travelMode
Tariffa stimata per ogni passaggio e per il percorso e Tariffa stimata localizzata routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Nota: transitFare viene fornito solo se l'API può determinare le informazioni sulle tariffe dei trasporti pubblici per tutti i passaggi.

Testo localizzato per durata e distanza routes.localizedValues

Per ulteriori informazioni sull'impostazione delle maschere di campo, consulta Scegliere i campi da restituire.

Impostare i parametri per un percorso di trasporto pubblico

Di seguito sono riportati i parametri pertinenti per i percorsi dei trasporti pubblici:

Per farlo Utilizza questo parametro Note
Seleziona la modalità di trasporto pubblico travelMode: "TRANSIT" Obbligatorio. Ulteriori informazioni.
Impostare un'ora 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 nessun orario, departure_time assume per impostazione predefinita il valore dell'ora di esecuzione corrente (now). Puoi impostare gli orari di arrivo e di partenza solo entro la finestra temporale riportata di seguito, con l'ora di esecuzione corrente (now) come riferimento:
  • fino ai 7 giorni precedenti la data now inclusa
  • fino al giorno 100 incluso dopo il giorno now
L'ora è espressa come timestamp in formato "Zulu" UTC RFC3339. Scopri di più
Includi percorsi alternativi "computeAlternativeRoutes": true (Facoltativo) Imposta su true per consentire all'API Routes di calcolare fino a 3 percorsi 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 una modalità di viaggio preferita, gli itinerari restituiti possono comunque impiegare altre modalità di trasporto pubblico, anche solo altre modalità di trasporto pubblico, a seconda dell'efficienza dell'itinerario e della disponibilità del mezzo di trasporto preferito.

(Facoltativo) Specifica le modalità di viaggio preferite per il trasporto pubblico. Scopri di più
Specificare le preferenze per il percorso con il trasporto pubblico "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} (Facoltativo) Specifica le preferenze di routing per il trasporto pubblico. Scopri di più

Esempio: trovare un percorso con i trasporti pubblici

Il seguente esempio recupera un percorso sui trasporti pubblici con i seguenti parametri:

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

  • Richiede percorsi alternativi.

  • Fornisce una maschera di campo che restituisce i dettagli del trasporto pubblico:

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 percorsi:

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