Znajdź trasę tranzytową

Trasa dojazdu transportem publicznym zawiera wskazówki dojazdu z wykorzystaniem opcji transportu publicznego dostępnych w danym regionie. Opcje transportu publicznego to m.in. autobusy, metro i pociągi. Trasa transportu publicznego zawiera też zwykle instrukcje dotyczące chodzenia do i z stacji oraz między stacjami. Trasa przejazdu wymaga zwykle korzystania z więcej niż 1 środka transportu, dlatego sposób żądania trasy i niektóre części odpowiedzi są inne.

.

Czym różnią się trasy transportu publicznego od innych tras

Trasy komunikacji zbiorowej, które są dostępne po ustawieniu opcji transportMode TRANSIT, różnią się od tras z użyciem innych opcji transportMode. Nie możesz wysyłać zapytań o te same obiekty i opcje, a odpowiedź zwraca inne pola niż w przypadku innych dróg.

W interfejsie Routes API kroki to zawsze jedna instrukcja nawigacji dotycząca wszystkich typów podróży. Każda instrukcja nawigacji to krok. Odpowiedź dotycząca trasy komunikacją zbiorową jest bardzo podobna do odpowiedzi dotyczącej trasy z innymi środkami transportu, ale różni się od niej w kilku kluczowych kwestiach:

Prośba o różnice Różnice w odpowiedziach
Nie można określić punktów pośrednich. zawiera informacje o transporcie publicznym;
Nie można uzyskać tras przyjaznych dla środowiska Zawiera metadane dotyczące każdego trybu podróży, które zawierają podsumowanie kroków dla tego trybu w polu „stepsOverview” (aby zażądać tych metadanych, użyj maski pola „routes.legs.stepsOverview”).
Nie można określić, jak i czy w ogóle uwzględnić dane o ruchu
Nie można określić elementów trasy, których należy unikać
W przypadku parametru routingPreference można określić tylko wartość transitPreferences. Więcej informacji znajdziesz w sekcji TransitPreferences.

Więcej informacji o odpowiedzi zwróconej przez interfejs Routes API znajdziesz w artykule Sprawdzanie odpowiedzi dotyczących trasy przejazdu.

Aby wyznaczyć trasę transportem publicznym:

  1. Ustaw miejsce początkowe i miejsce docelowe.

  2. Ustaw środek transportu na „Transport publiczny”:

    travelMode: "TRANSIT"

  3. Dodaj maskę pola, aby uzyskać odpowiednie pola odpowiedzi. Zobacz Jak poprosić o wypełnienie pól trasy przejazdu.

  4. W razie potrzeby skonfiguruj parametry opcjonalne. Zapoznaj się z artykułem Ustawianie parametrów trasy przejazdu.

Poproś o wymagane pola trasy tranzytowej

Żądaj pól trasy przejazdu, których potrzebujesz, za pomocą masek pól. W tabeli poniżej znajdziesz sugerowane odpowiedzi dotyczące trasy przejazdu oraz maskę pola, której należy użyć, aby je poprosić.

Aby poprosić o te informacje Użyj tej maski pola
Wszystkie szczegóły trasy routes.*
Wszystkie szczegóły przejazdu routes.legs.steps.transitDetails
Lokalizacja początkowa każdego etapu routes.legs.steps.startLocation
Miejsce zakończenia każdego etapu routes.legs.steps.endLocation
Polilinia trasy dla każdego kroku routes.legs.steps.polyline
Typ transportu używany na każdym etapie routes.legs.steps.travelMode
Szacowana opłata za każdy krok i całą trasę oraz Szacowana opłata w walucie lokalnej routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Uwaga: transitFare jest podawane tylko wtedy, gdy interfejs API może określić informacje o cenie przejazdu dla wszystkich etapów.

zlokalizowany tekst dotyczący czasu trwania i odległości; routes.localizedValues

Więcej informacji o ustawianiu masek pól znajdziesz w sekcji Wybieranie pól do zwracania.

Ustawianie parametrów trasy przejazdu

Oto odpowiednie parametry tras przejazdu transportem publicznym:

Aby to zrobić Korzystanie z tego parametru Uwagi
Wybierz środek transportu travelMode: "TRANSIT" Wymagany. Więcej informacji
Ustawianie godziny przyjazdu lub wyjazdu "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

LUB

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Opcjonalnie: Możesz podać parametr arrival_time lub departure_time. Jeśli nie określisz żadnej z tych wartości, departure_time zostanie ustawiona jako bieżący czas wykonania (now). Czas przyjazdu i wyjazdu możesz ustawić tylko w tym oknie czasowym, w którym bieżący czas wykonania (now) jest używany jako punkt odniesienia:
  • do 7 dni (włącznie) przed: now
  • do 100 dni (włącznie) po now
Czas jest wyrażony jako sygnatura czasowa w formacie „Zulu” zdefiniowanym w dokumencie RFC 3339 w UTC. Więcej informacji

Uwaga: rozkłady jazdy często się zmieniają, dostępne przejazdy mogą się zmieniać w czasie, a nie ma gwarancji, że prognozy będą spójne w długim okresie.

Uwzględnij trasy alternatywne "computeAlternativeRoutes": true Opcjonalnie: Ustaw na Prawda, aby interfejs Routes API obliczył do 3 dodatkowych tras (jeśli są dostępne). Więcej informacji
Określ preferencje dotyczące rodzaju transportu "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

Uwaga: jeśli określisz preferowany środek transportu, zwrócone trasy mogą nadal korzystać z innych środków transportu, a nawet używać tylko innych środków transportu, w zależności od wydajności trasy i dostępności preferowanego środka transportu.

Opcjonalnie: Określ preferowane środki transportu. Więcej informacji
Określ preferencje dotyczące trasy przejazdu "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Opcjonalnie: Określ preferencje dotyczące routingu transportu publicznego. Więcej informacji

Przykład: wyznaczanie trasy na przejazd

W tym przykładzie uzyskujemy trasę tranzytową z tymi parametrami:

  • Określa preferencje dotyczące podróży pociągiem i mniejszego chodzenia.

  • Zapytanie o trasy alternatywne.

  • Udostępnia maskę pola, która zwraca szczegóły tranzytu:

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'

Odpowiedź zawiera pola route.legs.steps.transitDetails dla 2 tras:

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