Znajdź trasę tranzytową

Trasa dojazdu transportem publicznym zawiera wskazówki dojazdu transportem publicznym z opcji dostępnych w regionie. Środki transportu publicznego mogą obejmować autobusy, metro pociągów. Trasa transportu publicznego zwykle zawiera też instrukcje dotyczące pieszo do stacji transportu publicznego, ze stacji oraz między stacjami. Ponieważ trasa transportu publicznego zwykle wymaga podróży kilkoma środkami transportu, jak a niektóre części odpowiedzi są różne.

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

Trasy transportu publicznego, o które prosisz, ustawiając tryb podróży jako TRANSIT, różnią się z różnych opcji trybu podróży. Nie możesz zażądać wszystkich tych samych obiektów i opcji, a odpowiedź zwraca w różnych polach w porównaniu z innymi trasami.

W interfejsie Routes API kroki są niezmiennie jedną instrukcją nawigacji do każdego rodzaju podróży. Każda instrukcja nawigacji to kolejny krok. Transport publiczny reagowanie na trasę jest bardzo podobne do tras innych środków transportu, różnice:

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 dotyczące każdego środka podróży, w tym podsumowanie czynności do wykonania. tego środka transportu w sekcji „stepsOverview” (aby poprosić o te metadane, użyj funkcji maska 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 dla atrybutu transitPreferences dla routingPreference Więcej informacji: [TransitPreferences](reference/rest/v2/TransitPreferences).

Więcej informacji o odpowiedzi zwracanej przez interfejs Routes API znajdziesz w artykule Przeglądanie odpowiedzi na temat tras 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 Poproś o pola tras transportu publicznego, których potrzebujesz.

  4. W razie potrzeby ustaw parametry opcjonalne. Zobacz Ustaw parametry 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. Tabela poniżej zawiera kilka sugerowanych odpowiedzi dotyczących transportu publicznego oraz maską pola, która ma być używana do ich żądania.

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 każdą trasę; Zlokalizowana szacowana cena routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

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

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

Więcej informacji o ustawianiu masek pól znajdziesz w sekcji Wybierz pola, które chcesz zwrócić.

Ustawianie parametrów trasy transportu publicznego

Oto istotne parametry dla tras transportu publicznego:

Aby to zrobić: Użyj 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 podać czas przyjazdu lub wyjazdu. Jeśli nie zostanie podany żaden czas, departure_time przyjmuje domyślnie wartość bieżący czas wykonania (now). Możesz ustawić odlotów wyłącznie w następującym przedziale czasu, przy obecnej czas wykonania (now) jako plik referencyjny:
  • do 7 dni przed now włącznie
  • do 100 dni po now włącznie
. Czas jest wyrażony jako sygnatura czasowa w RFC3339 UTC „Zulu” . Więcej informacji
Uwzględnij trasy alternatywne "computeAlternativeRoutes": true Opcjonalnie: Ustaw wartość Prawda, aby interfejs Routes API mógł obliczać do 3 trasy dodatkowe, 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 podróży, zwrócone trasy mogą nadal korzystać z innych środków transportu publicznego, a nawet korzystać tylko z innych środków transportu, w zależności od efektywność trasy i dostępność preferowanego wariantu w podróży.

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