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

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

Tuyến đường phương tiện công cộng khác với các tuyến đường khác như thế nào

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 của TRANSIT, khác với các tuyến đường sử dụng các tuỳ chọn TravelMode khác nhau. Bạn không thể yêu cầu cùng một đối tượng và tuỳ chọn. Phản hồi sẽ trả về các trường khác nhau khi so sánh 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 điều hướng cho mọi hình thức di chuyển. Mỗi hướng dẫn điều hướng là một bước. Phản hồi về tuyến đường đi 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 vài điểm khác biệt chính:

Yêu cầu khác biệt Sự khác biệt về câu trả lời
Bạn không thể chỉ định điểm tham chiếu trung gian. Bao gồm chi tiết về Phương tiện công cộng.
Không nhận được tuyến đường thân thiện với môi trường Bao gồm siêu dữ liệu của từng phương tiện đi lại có chứa thông tin tóm tắt về các bước của phương tiện đi lại đó trong phần "stepsOverview" (để 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 lưu lượng truy cập 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 Xem lại phản hồi về tuyến đường đi phương tiện công cộng.

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

  1. Đặt điểm khởi hành và điểm đến của bạn.

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

    travelMode: "TRANSIT"

  3. Thêm mặt nạ trường để nhận các trường phản hồi mà bạn muốn. Hãy xem phần Yêu cầu các trường tuyến đường phương tiện công cộng bạn cần.

  4. Nếu cần, hãy đặt các thông số không bắt buộc. Hãy xem phần Đặ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

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

Để yêu cầu thông tin này Sử dụng mặt nạ trường này
Tất cả chi tiết 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í xuất phát của mỗi chặng routes.legs.steps.startLocation
Vị trí kết thúc của mỗi chặng routes.legs.steps.endLocation
Định tuyến hình nhiều đường cho mỗi bước routes.legs.steps.polyline
Loại phương tiện công cộng dùng cho mỗi bước routes.legs.steps.travelMode
Giá vé ước tính cho mỗi bước và tuyến đường, và Giá vé ước tính được địa phương hoá 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 thời lượng và khoảng cách routes.localizedValues

Để biết thêm thông tin về cách đặt mặt nạ trường, 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 Dùng tham số này Ghi chú
Chọn chế độ chuyển tuyến 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ỉ địnhThời gian đến hoặc thời gian khởi hành. Nếu bạn không chỉ định thời gian, thì departure_time sẽ mặc định là thời gian thực thi hiện tại (now). Bạn chỉ có thể thiết lập thời gian đến và thời gian khởi hành 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 now
  • tối đa và bao gồm 100 ngày sau now
Thời gian được biểu thị dưới dạng dấu thời gian ở định dạng "Zulu" RFC3339 giờ 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 true để 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 thức đi lại ưu tiên, thì các tuyến đường bị trả về vẫn có thể sử dụng các phương thức phương tiện công cộng khác, thậm chí chỉ sử dụng các phương thức di chuyển khác, tuỳ thuộc vào hiệu quả của tuyến đường và khả năng đáp ứng của chuyến đi ưu tiên.

Không bắt buộc. Chỉ định phương tiện đi lại ư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 các lựa chọn ưu tiên về việc định tuyến phương tiện công cộng. 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 chọn một tuyến đường đang chuyển tuyến với các tham số sau:

  • Cho biết các lựa chọn ưu tiên về việc đi lại trên tàu và ít đi bộ hơn.

  • Yêu cầu tuyến thay thế.

  • Cung cấp mặt nạ trường 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 cho thấy các trường route.legs.steps.transitDetails cho hai 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
          }
        },
        {},
        {},
        {},
        {},
        {},
        {}
        ]
      }
    ]
  }
]
}