Znajdź trasę tranzytową

Trasa transportu publicznego zawiera wskazówki nawigacyjne z wykorzystaniem opcji transportu publicznego dostępnych w danym regionie. Środki transportu to między innymi autobusy, metro i pociągi. Trasa transportu publicznego zwykle zawiera też instrukcje dotyczące dostania się pieszo do stacji transportu publicznego, a także z powrotem i między nimi. Ponieważ trasa transportu publicznego wymaga zazwyczaj korzystania z więcej niż 1 środka transportu, sposób zamawiania trasy i niektóre fragmenty odpowiedzi są różne.

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

Trasy transportu publicznego, o które prosisz o ustawienie trybu podróży TRANSIT, różnią się od tras z różnymi opcjami trybu podróży. Nie można żądać wszystkich tych samych obiektów i opcji, a odpowiedź zwraca inne pola w porównaniu z innymi trasami.

W interfejsie Routes API kroki to spójna instrukcja nawigacji we wszystkich rodzajach podróży. Każda instrukcja nawigacji to krok. Odpowiedź dotycząca trasy przewozu jest bardzo podobna do tras z innymi środkami transportu, ale istnieje kilka istotnych różnic:

Różnice w żądaniach Różnice w odpowiedziach
Nie można określać pośrednich punktów pośrednich. Zawiera informacje o transporcie publicznym.
Brak tras przyjaznych dla środowiska Zawiera metadane dotyczące każdego środka transportu zawierające podsumowanie kroków w danym trybie podróży w „stepsOverview” (aby uzyskać te metadane, użyj maski pola „routes.legs.stepsOverview”).
Nie można określić, czy i w jaki sposób uwzględnić dane o ruchu
Nie można określić cech trasy, których należy unikać
W polu routingPreference można określić tylko wartość transitPreferences. Więcej informacji znajdziesz w sekcji [TransitPreferences](reference/rest/v2/TransitPreferences).

Więcej informacji o odpowiedzi zwracanej przez interfejs Routes API znajdziesz w artykule o przeglądaniu odpowiedzi na temat trasy transportu publicznego.

Wyznaczanie trasy transportu publicznego

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

  2. Wybierz środek transportu:

    travelMode: "TRANSIT"

  3. Dodaj maskę pól, aby uzyskać odpowiednie pola odpowiedzi. Zobacz Zapotrzebowanie na potrzebne pola trasy transportu publicznego.

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

Poproś o pola trasy transportu publicznego, których potrzebujesz

Za pomocą masek polowych poproś o potrzebne Ci pola trasy transportu publicznego. Poniższa tabela zawiera sugerowane odpowiedzi dotyczące trasy przewozu oraz maskę pola do wysyłania żądań.

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
Przeprowadź linię łamaną dla każdego kroku routes.legs.steps.polyline
Rodzaj transportu publicznego na poszczególnych etapach routes.legs.steps.travelMode
szacowany koszt za każdy etap i trasę oraz zlokalizowany szacowany koszt, routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Uwaga: właściwość transitFare jest podawana tylko wtedy, gdy interfejs API może określić informacje o taryfach transportu publicznego na wszystkich etapach.

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 zwrócenia.

Ustawianie parametrów trasy transportu publicznego

Oto parametry istotne dla tras transportu publicznego:

Aby to zrobić: Użyj tego parametru Uwagi
Wybierz środek transportu publicznego travelMode: "TRANSIT" To pole jest wymagane. Więcej informacji
Ustaw godzinę przyjazdu lub wyjazdu "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

LUB

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Opcjonalnie. Może być podana wartość przyjazdu/odjazdu/odjazdu. Jeśli nie podasz żadnej godziny, departure_time domyślnie będzie ustawiany na bieżący czas wykonania (now). Czas przyjazdu i odjazdu możesz ustawić tylko w następującym przedziale czasu, podając jako wartość referencyjną bieżący czas wykonania (now):
  • do 7 dni przed now włącznie
  • do 100 dni po now włącznie
Czas jest wyświetlany jako sygnatura czasowa w formacie „Zulu” RFC3339 UTC. Więcej informacji
Uwzględnij trasy alternatywne "computeAlternativeRoutes": true Opcjonalnie. Ustaw wartość true, aby interfejs Routes API obliczał do 3 dodatkowych tras, jeśli są dostępne. Więcej informacji
Określ preferencje dotyczące typu transportu publicznego "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

Uwaga: jeśli określisz preferowany środek transportu, zwracane trasy mogą nadal korzystać z innych środków transportu, a nawet korzystać tylko z innych środków transportu w zależności od efektywności trasy i dostępności preferowanej podróży.

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

Przykład: wyznaczanie trasy transportem publicznym.

Poniższy przykład pokazuje trasę dojazdu z użyciem następujących parametrów:

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

  • Wysyła prośbę o alternatywne trasy.

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

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