Ottieni un percorso con il trasporto pubblico

Sviluppatori dello Spazio economico europeo (SEE)

Un percorso con il trasporto pubblico fornisce indicazioni di navigazione utilizzando le opzioni di trasporto pubblico disponibili nella regione. Le opzioni di trasporto pubblico possono includere, tra le altre, autobus, metropolitane e treni. In genere, un percorso con il trasporto pubblico include anche le indicazioni per raggiungere le stazioni dei mezzi pubblici, per spostarsi da una stazione all'altra e per raggiungere la destinazione dalle stazioni. Poiché in genere un percorso con il trasporto pubblico richiede di viaggiare utilizzando più di una modalità di viaggio, la modalità di richiesta del percorso e alcune parti della risposta sono diverse.

Differenze tra i percorsi con il trasporto pubblico e altri percorsi

I percorsi con il trasporto pubblico, che richiedi impostando un travelMode di TRANSIT, sono diversi 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'indicazione di navigazione per tutti i tipi di viaggio. Ogni indicazione di navigazione è quindi un passaggio. Una risposta relativa a un percorso con il trasporto pubblico è molto simile a quella relativa a percorsi con altre modalità di viaggio, con alcune differenze fondamentali:

Differenze nelle richieste Differenze nelle risposte
Non puoi specificare waypoint intermedi. Include i dettagli del trasporto pubblico.
Non puoi 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`).
Non puoi specificare come e se includere i dati sul traffico
Non puoi specificare le funzionalità del percorso da evitare
Puoi specificare solo transitPreferences per routingPreference. Per i dettagli, vedi TransitPreferences.

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

Ottenere un percorso con il trasporto pubblico

  1. Imposta il punto 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. Vedi Richiedere i campi del percorso con il trasporto pubblico di cui hai bisogno.

  4. Se necessario, imposta i parametri facoltativi. Vedi Impostare i parametri per un percorso con il trasporto pubblico.

Richiedere i campi del percorso con il trasporto pubblico di cui hai bisogno

Richiedi i campi del percorso con il trasporto pubblico di cui hai bisogno utilizzando le maschere di campo. La tabella seguente contiene alcune risposte suggerite per un percorso con il 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 del trasporto pubblico routes.legs.steps.transitDetails
Posizione di partenza per ogni tratta routes.legs.steps.startLocation
Posizione di arrivo per ogni tratta 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 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 percorso con il trasporto pubblico

Di seguito sono riportati i parametri pertinenti per i percorsi con il trasporto pubblico:

Per fare ciò Utilizza questo parametro Note
Seleziona la modalità di trasporto pubblico travelMode: "TRANSIT" Obbligatorio. Scopri di più.
Imposta 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 specificata alcuna ora, departure_time assume come valore predefinito l' ora di esecuzione corrente (now). Puoi impostare le ore di arrivo e di partenza solo all'interno della seguente finestra temporale, con l'ora di esecuzione corrente (now) come riferimento:
  • Fino a 7 giorni prima di now inclusi
  • Fino a 100 giorni dopo now inclusi
L'ora viene espressa come timestamp in formato "Zulu" UTC RFC3339. Scopri di più

Nota: gli orari dei mezzi pubblici cambiano di frequente, i viaggi con i mezzi pubblici disponibili possono variare nel tempo e non è garantito che le previsioni fornite con largo anticipo siano coerenti.

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ù
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 viaggio con il trasporto pubblico preferite. Scopri di più
Specifica le preferenze per il percorso con il 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 il trasporto pubblico

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

  • Specifica le preferenze per i viaggi in treno e per i tratti a piedi più brevi.

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