Xem tuyến đường dành cho phương tiện công cộng

Tuyến đường chuyển tuyến sẽ cung cấp hướng dẫn di chuyển bằng cách sử dụng các lựa chọn phương tiện công cộng có trong khu vực. Các lựa chọn phương tiện công cộng có thể bao gồm xe buýt, tàu điện ngầm và tàu hoả, v.v. Tuyến đường phương tiện công cộng cũng thường bao gồm hướng dẫn đi bộ đến, từ và giữa các trạm phương tiện công cộng. Vì tuyến đường của phương tiện công cộng thường yêu cầu bạn đi bằng nhiều phương thức di chuyển, nên cách bạn yêu cầu tuyến đường và một số phần của phản hồi sẽ khác nhau.

Điểm khác biệt giữa tuyến đường dành cho phương tiện công cộng và tuyến đường khác

Các tuyến đường phương tiện công cộng mà bạn yêu cầu bằng cách đặt TravelMode là TRANSIT, sẽ khác với các tuyến đường sử dụng các tuỳ chọnTravelMode. Bạn không thể yêu cầu tất cả đối tượng và tuỳ chọn giống nhau và phản hồi sẽ trả về các trường khác nhau so với các tuyến khác.

Trong API Tuyến đường, các bước luôn là một hướng dẫn chỉ đường cho mọi loại hình di chuyển. Vì vậy, mỗi hướng dẫn di chuyển là một bước. Phản hồi về tuyến đường phương tiện công cộng rất giống với các tuyến đường có các phương thức đi lại khác, chỉ có một số điểm khác biệt chính:

Yêu cầu khác biệt Sự khác biệt về phản hồi
Bạn không thể chỉ định điểm tham chiếu trung gian. Bao gồm thông tin về Phương tiện công cộng.
Không thể tải tuyến đường thân thiện với môi trường Cung cấp siêu dữ liệu cho mỗi phương tiện đi lại có chứa nội dung tóm tắt về các bước dành cho phương tiện đi lại đó, trong mục "StepOverview" (Tổng quan về các bước) (để yêu cầu siêu dữ liệu này, hãy sử dụng mặt nạ trường "routes.legs.STEPSOverview").
Không thể chỉ định cách thức và liệu có bao gồm dữ liệu giao thông hay không
Không thể chỉ định các đối tượng tuyến đường để tránh
Chỉ có thể chỉ định transitPreferences cho routingPreference. Để biết thông tin chi tiết, hãy xem phần [TransitPreferences](reference/rest/v2/TransitPreferences).

Để biết thêm thông tin về phản hồi do API Tuyến đường trả về, hãy xem bài viết Xem lại phản hồi về tuyến đường đi phương tiện công cộng.

Để xem tuyến đường bằng phương tiện công cộng

  1. Thiết lập điểm xuất phát và điểm đến.

  2. Đặt phương tiện đi lại thành phương tiện công cộng:

    travelMode: "TRANSIT"

  3. Thêm mặt nạ cho trường (field mask) để nhận các trường phản hồi theo ý bạn. Hãy xem phần Yêu cầu trường tuyến đường cho phương tiện công cộng bạn cần.

  4. Nếu cần, hãy đặt các tham số không bắt buộc. Xem Đặt tham số cho tuyến đường chuyển tuyến.

Yêu cầu các trường tuyến đường chuyển tuyến bạn cần

Sử dụng mặt nạ trường (field mask) để yêu cầu các trường tuyến đường phương tiện công cộng bạn cần. Bảng sau đây chứa một số phản hồi đề xuất cho tuyến đường chuyển tuyến và mặt nạ trường (field mask) để sử dụng nhằm yêu cầu các phản hồi đó.

Để yêu cầu thông tin này Dùng mặt nạ cho trường (field mask) này
Tất cả thông tin về tuyến đường routes.*
Tất cả thông tin về phương tiện công cộng routes.legs.steps.transitDetails
Vị trí bắt đầu cho mỗi chặng routes.legs.steps.startLocation
Vị trí kết thúc cho mỗi chặng routes.legs.steps.endLocation
Tuyến đường nhiều đường cho mỗi bước routes.legs.steps.polyline
Loại phương tiện công cộng sử dụng cho từng bước routes.legs.steps.travelMode
Giá vé ước tính cho từng bước và chặng bay cùng với Giá vé ước tính theo địa phương routes.travel_advisory.transitFare localized routes.localizedValues.transitFare

Lưu ý: transitFare chỉ được cung cấp nếu API có thể xác định thông tin về giá vé đi phương tiện công cộng cho tất cả các bước.

Văn bản đã bản địa hoá cho khoảng thời gian và khoảng cách routes.localizedValues

Để biết thêm thông tin về cách đặt mặt nạ cho trường (field mask), hãy xem phần Chọn các trường cần trả về.

Đặt thông số cho tuyến đường chuyển tuyến

Dưới đây là các thông số có liên quan cho tuyến đường chuyển tuyến:

Để thực hiện việc này Sử dụng thông số này Ghi chú
Chọn phương tiện công cộng travelMode: "TRANSIT" Bắt buộc. Tìm hiểu thêm.
Đặt thời gian đến hoặc thời gian khởi hành "arrivalTime": "yyyy-mm-ddThh:mm:ssZ"

OR

"departureTime": "yyyy-mm-ddThh:mm:ssZ"
Không bắt buộc. Bạn có thể chỉ định thời gian đến hoặc thời gian khởi hành. Nếu bạn không chỉ định thời gian nào, thì departure_time sẽ mặc định đặt thời gian thực thi hiện tại (now). Bạn chỉ có thể đặt thời gian đến và thời gian đi trong khoảng thời gian sau, với thời gian thực thi hiện tại (now) làm tham chiếu:
  • tối đa và bao gồm 7 ngày trước ngày now
  • tối đa và bao gồm 100 ngày sau ngày now
Thời gian được biểu thị dưới dạng dấu thời gian ở định dạng "Zulu" RFC3339 UTC. Tìm hiểu thêm
Bao gồm các tuyến đường thay thế "computeAlternativeRoutes": true Không bắt buộc. Đặt thành đúng để API Tuyến đường tính toán tối đa 3 tuyến bổ sung nếu có. Tìm hiểu thêm
Chỉ định các lựa chọn ưu tiên cho loại phương tiện công cộng "transitPreferences": { allowedTravelModes: ["BUS","SUBWAY","TRAIN","LIGHT_RAIL","RAIL"]}

Lưu ý: Nếu bạn chỉ định một phương tiện đi lại ưu tiên, thì các tuyến đường được trả về vẫn có thể sử dụng các phương tiện công cộng khác, thậm chí chỉ sử dụng các phương tiện công cộng khác, tuỳ thuộc vào hiệu quả của tuyến đường đang đi và tình trạng còn hàng của chuyến đi ưa thích.

Không bắt buộc. Chỉ định phương tiện công cộng ưu tiên. Tìm hiểu thêm
Chỉ định các lựa chọn ưu tiên cho tuyến đường chuyển tuyến "transitPreferences": {routingPreference: "LESS_WALKING|FEWER_TRANSFERS"} Không bắt buộc. Chỉ định tuỳ chọn định tuyến chuyển tuyến. Tìm hiểu thêm

Ví dụ: Xem tuyến đường trên phương tiện công cộng

Ví dụ sau đây trình bày một tuyến đường trên phương tiện công cộng với các thông số sau:

  • Chỉ định các lựa chọn ưu tiên về việc đi lại bằng tàu hoả và ít đi bộ hơn.

  • Yêu cầu tuyến đường thay thế.

  • Cung cấp mặt nạ cho trường (field mask) trả về thông tin chi tiết về phương tiện công cộng:

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'

Phản hồi sẽ hiển thị các trường route.legs.steps.transitDetails cho 2 tuyến:

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