Znajdź trasę tranzytową

Na trasie dojazdu transportem publicznym znajdziesz wskazówki dojazdu, korzystając z opcji transportu publicznego dostępnych w danym regionie. Transport publiczny może obejmować m.in. autobusy, metro czy pociągi. Trasa dojazdu transportem publicznym zazwyczaj zawiera też instrukcje, jak dojść do przystanku, z przystanku i pomiędzy stacjami. Trasa transportu publicznego zwykle wymaga podróżowania kilkoma środkami transportu, więc żądania trasy i niektórych części odpowiedzi są różne.

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

Trasy transportu publicznego, o które prosisz za pomocą ustawienia TravelMode jak TRANSIT, różnią się od tras, które korzystają z różnych opcji podróży. Nie możesz zażądać wszystkich tych samych obiektów i opcji, a odpowiedź zwraca inne pola w porównaniu z innymi trasami.

W interfejsie Routes API kroki stanowią jedną instrukcję nawigacji dla wszystkich rodzajów podróży. Każda instrukcja nawigacji to kolejny krok. Odpowiedzi na trasę transportu publicznego są bardzo podobne do tras w przypadku innych środków transportu, ale różnią się od siebie w kilku istotnych kwestiach:

Różnice dotyczące żądań Różnice pod względem odpowiedzi
Nie można określać pośrednich punktów pośrednich. Zawiera informacje o transporcie publicznym.
Nie można wybrać tras przyjaznych dla środowiska Zawiera metadane każdego środka podróży, które zawierają podsumowanie kroków do wykonania w danym środkach transportu. Informacje o tym znajdziesz w sekcji „stepsOverview” (aby uzyskać te metadane, użyj maski pola „routes.legs.stepsOverview”).
Nie można określić, czy i w jaki sposób mają być uwzględniane dane dotyczące ruchu
Nie można określić obiektów trasy, których należy unikać
Można określić tylko transitPreferences dla routingPreference. Szczegółowe informacje znajdziesz w sekcji [TransitPreferences](reference/rest/v2/TransitPreferences).

Więcej informacji o odpowiedzi zwracanej przez interfejs Routes API znajdziesz w artykule Sprawdzanie odpowiedzi na trasy transportu publicznego.

Wyznaczanie trasy transportu publicznego

  1. Ustaw miejsce wylotu i cel podróży.

  2. Ustaw tryb podróży na transport publiczny:

    travelMode: "TRANSIT"

  3. Dodaj maskę pola, aby uzyskać odpowiednie pola odpowiedzi. Zobacz Wysyłanie prośby o podanie wymaganych pól trasy transportu publicznego.

  4. W razie potrzeby ustaw parametry opcjonalne. Zobacz Ustawianie parametrów trasy transportu publicznego.

Poproś o wymagane pola trasy transportu publicznego

Zażądaj pól trasy transportu publicznego, których potrzebujesz, za pomocą masek pól. W tabeli poniżej znajdziesz kilka sugerowanych odpowiedzi dla trasy transportu publicznego oraz maskę pola, która służy do wysyłania próśb o ich przesłanie.

Aby poprosić o te informacje Użyj tej maski pola
Wszystkie szczegóły trasy routes.*
Wszystkie szczegóły transportu publicznego routes.legs.steps.transitDetails
Lokalizacja początkowa każdego etapu routes.legs.steps.startLocation
Lokalizacja końcowa każdego etapu routes.legs.steps.endLocation
Wyznacz linię łamaną dla każdego kroku routes.legs.steps.polyline
Rodzaje transportu publicznego wykorzystywane na poszczególnych etapach routes.legs.steps.travelMode
szacunkowe opłaty za każdy etap i trasę oraz zlokalizowane szacunkowe ceny. routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Uwaga: wartość transitFare jest podawana tylko wtedy, gdy interfejs API może określić informacje o taryfach transportu publicznego dla wszystkich kroków.

Zlokalizowany tekst określający czas trwania i odległość routes.localizedValues

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

Ustawianie parametrów trasy transportu publicznego

Oto istotne parametry dla tras transportu publicznego:

Aby to zrobić: Użyj tego parametru Notatki
Wybierz środek transportu travelMode: "TRANSIT" Wymagane. Dowiedz się więcej.
Ustawianie godziny przyjazdu lub wyjazdu "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

LUB

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Opcjonalnie. Możesz podać czas przyjazdu lub wyjazdu. Jeśli nie podasz żadnej godziny, w polu departure_time domyślnie zostanie użyty bieżący czas wykonania (now). Możesz ustawić godziny przyjazdu i odjazdu tylko w tym przedziale czasu, przy czym odwołaniem wskaże bieżący czas wykonania (now):
  • do 7 dni przed now włącznie
  • do 100 dni po now włącznie
Czas jest wyrażony jako sygnatura czasowa w formacie RFC 3339 UTC „Zulu”. Więcej informacji
Uwzględnij trasy alternatywne "computeAlternativeRoutes": true Opcjonalnie. Ustaw wartość Prawda, aby interfejs Routes API mógł obliczać do 3 dodatkowych tras (jeśli są dostępne). Więcej informacji
Określ preferencje dla typu transportu publicznego "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 korzystać tylko z innych środków transportu, w zależności od sprawności trasy i dostępności preferowanego środka transportu.

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

Przykład: wyznaczenie trasy dla transportu publicznego

Poniższy przykład pokazuje trasę dojazdu transportem publicznym z następującymi parametrami:

  • Określa preferencje dotyczące podróży pociągiem i mniejszej liczby pieszych.

  • Żądania korzystają z alternatywnych tras.

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

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) w przypadku 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}