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 zawiera też zwykle instrukcje dotyczące chodzenia do i z 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 to zawsze jedna instrukcja nawigacji w przypadku wszystkich rodzajó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:

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ć elementó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 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 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 dotyczący czasu trwania i odległości; 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 (włącznie) po now
Czas jest wyrażony jako sygnatura czasowa w RFC3339 UTC „Zulu” . Więcej informacji
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 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 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 publicznego. Więcej informacji
Określ preferencje trasy transportu publicznego "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Opcjonalnie: Określ preferencje dotyczące trasy transportu publicznego. Więcej informacji

Przykład: wyznaczenie trasy dla transportu publicznego

W tym przykładzie uzyskujemy trasę tranzytową z tymi 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}