Ottieni un percorso con il trasporto pubblico

Sviluppatori dello Spazio economico europeo (SEE)

Un percorso con il trasporto pubblico fornisce istruzioni di navigazione utilizzando le opzioni di trasporto pubblico disponibili nella regione. Le opzioni di trasporto pubblico possono includere, tra gli altri, autobus, metropolitane e treni. Un percorso con il trasporto pubblico di solito include anche le istruzioni per raggiungere a piedi le stazioni di transito, per spostarsi tra queste e per raggiungere la destinazione. Poiché un percorso con il trasporto pubblico in genere richiede di viaggiare utilizzando più di una modalità di viaggio, il modo in cui richiedi il percorso e alcune parti della risposta sono diversi.

Differenze tra i percorsi di trasporto pubblico e altri percorsi

I percorsi con il trasporto pubblico, che richiedi impostando un travelMode su TRANSIT, differiscono dai percorsi che utilizzano altre opzioni di 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 percorso con il trasporto pubblico è molto simile ai percorsi con altre modalità di viaggio, con alcune differenze fondamentali:

Differenze tra le richieste 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 di campo `routes.legs.stepsOverview`).
Impossibile specificare se e come 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 Esamina le risposte relative ai percorsi con il trasporto pubblico.

Per ottenere un percorso con il trasporto pubblico

  1. Imposta il luogo di partenza e la destinazione.

  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 routing transitivo di cui hai bisogno.

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

Richiedi i campi del routing transitivo di cui hai bisogno

Richiedi i campi del percorso 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 del percorso routes.*
Tutti i dettagli sul trasporto pubblico routes.legs.steps.transitDetails
Posizione iniziale per ogni tappa routes.legs.steps.startLocation
Località di arrivo per ogni tappa routes.legs.steps.endLocation
Polilinea del percorso 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 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 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, consulta Scegli i campi da restituire.

Imposta i parametri per una route di transito

Ecco i parametri pertinenti per i percorsi di trasporto pubblico:

Per farlo: Utilizza questo parametro Note
Seleziona la modalità Mezzi pubblici travelMode: "TRANSIT" Obbligatorio. Ulteriori informazioni.
Imposta 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 nessuno dei due orari, departure_time viene impostato per impostazione predefinita sull'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
  • fino a 100 giorni dopo il giorno now
L'ora è espressa come timestamp nel formato "Zulu" UTC RFC3339. Scopri di più

Nota: gli orari del trasporto pubblico cambiano di frequente, le corse disponibili possono variare nel tempo e non è garantito che i risultati delle previsioni siano coerenti con largo anticipo.

Includi itinerari 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ù
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, i percorsi restituiti potrebbero comunque utilizzare altre modalità di trasporto pubblico, anche solo altre modalità di trasporto pubblico, a seconda dell'efficienza del percorso e della disponibilità del viaggio preferito.

Facoltativo. Specifica le modalità di trasporto pubblico preferite. Scopri di più
Specifica le preferenze per il routing transitivo "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Facoltativo. Specifica le preferenze di routing transitivo. Scopri di più

Esempio: trova un percorso con il trasporto pubblico

L'esempio seguente recupera un percorso con il trasporto pubblico con i seguenti parametri:

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

  • Richiede itinerari 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}