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
Thiết lập điểm xuất phát và điểm đến.
Đặt phương tiện đi lại thành phương tiện công cộng:
travelMode: "TRANSIT"
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.
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 ý: |
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:
|
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 } }, {}, {}, {}, {}, {}, {} ] } ] } ] }