Znajdź trasę tranzytową

Deweloperzy z Europejskiego Obszaru Gospodarczego (EOG)

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 zwykle wymaga korzystania z więcej niż jednego środka transportu, dlatego sposób żądania trasy i niektóre części odpowiedzi są inne.

.

Czym różnią się trasy przejazdu 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ć zapytania 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 odpowiedzi
Nie możesz 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 na żądanie dotyczące trasy komunikacji miejskiej.

Aby wyznaczyć trasę transportem publicznym:

  1. Ustaw miejsce początkowe i miejsce docelowe.

  2. Ustaw tryb podróży 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 ustaw 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 biletu na wszystkie etapy.

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

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

Ustawianie parametrów trasy przejazdu

Oto odpowiednie parametry tras przejazdu transportem publicznym:

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

LUB

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Opcjonalnie. Możesz określić arrival_time lub departure_time. Jeśli nie określono żadnego z tych czasów, parametr departure_time przyjmuje domyślnie bieżący czas wykonania (now). Czasy 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 usługa Oblicz trasy obliczała maksymalnie 3 dodatkowe trasy, 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 alternatywną trasę.

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