Đối tượng của hướng dẫn này: Hãy đọc hướng dẫn này nếu bạn là nhà phát triển ứng dụng di động chịu trách nhiệm xây dựng trải nghiệm chỉ đường từng chặng cho người lái xe tải, xe buýt hoặc các loại xe thương mại lớn khác.
Nội dung hướng dẫn này: Hướng dẫn này giải thích cách lấy một tuyến đường dành riêng cho xe tải do Routes API hoặc Route Optimization API tạo và sử dụng tuyến đường đó để hỗ trợ một phiên chỉ đường từng chặng bằng Navigation SDK cho iOS.
Kiến thức bạn sẽ học được
Bạn sẽ tìm hiểu cách thực hiện các việc sau:
- Sử dụng
routeTokenđể kết nối tính năng lập kế hoạch tuyến đường trên phụ trợ với trải nghiệm điều hướng trong ứng dụng. - Định cấu hình Navigation SDK để sử dụng tuyến đường dành cho xe tải đã được lên kế hoạch trước.
- Tìm hiểu cách các quy định hạn chế dành riêng cho xe tải xuất hiện đối với người lái xe trong giao diện người dùng điều hướng.
Điều kiện tiên quyết
Trước khi bắt đầu, hãy đảm bảo bạn đáp ứng các yêu cầu sau:
1. Yêu cầu quyền truy cập vào dự án
Tính năng định tuyến cho xe lớn chỉ được cung cấp cho một số khách hàng. Để bày tỏ sự quan tâm và yêu cầu cấp quyền truy cập cho dự án trên đám mây của bạn trên Google Cloud, hãy điền thông tin vào biểu mẫu liên hệ. Một nhân viên của Google sẽ liên hệ với bạn để hướng dẫn các bước tiếp theo.
Sau khi Google cấp quyền truy cập, hãy đảm bảo dự án trên đám mây của bạn được cung cấp để định tuyến cho xe lớn.
Nếu tổ chức của bạn sử dụng các dự án Google Cloud riêng biệt cho API định tuyến phụ trợ và Navigation SDK dành cho thiết bị di động, hãy liên hệ với Google để cung cấp từng dự án.
2. Thiết lập quy trình tạo tuyến đường phụ trợ và lấy mã thông báo tuyến đường
Trước khi bắt đầu chỉ đường trên thiết bị, máy chủ phụ trợ của bạn phải tạo một tuyến đường cho xe tải và lấy routeToken bằng một trong các API sau:
- Routes API: Nên dùng để tính toán các tuyến đường riêng lẻ cho xe tải giữa điểm bắt đầu và điểm đến. Để biết hướng dẫn thiết lập, hãy xem bài viết Tạo tuyến đường và giờ đến dự kiến cho xe có kích thước lớn.
- Route Optimization API: Nên dùng để tối ưu hoá các tuyến đường có nhiều điểm dừng trên một đội xe. Để biết thêm thông tin, hãy xem hướng dẫn về việc định tuyến cho xe lớn bằng Route Optimization API.
Yêu cầu phụ trợ của bạn phải chỉ định travelMode: TRUCK cùng với các thuộc tính vật lý của xe (chiều cao, chiều rộng, chiều dài, trọng lượng, số trục và hàng hoá nguy hiểm). Routing API trả về một routeToken trong phản hồi của mình. Máy chủ phụ trợ của bạn sẽ truyền
này đến ứng dụng di động.
3. Đáp ứng các yêu cầu tối thiểu về SDK và hệ thống
Ứng dụng của bạn phải sử dụng phiên bản Navigation SDK tối thiểu bắt buộc là 5.4.0 trở lên.Ngoài ra, dự án của bạn phải đáp ứng các yêu cầu thiết lập Navigation SDK tiêu chuẩn.
Hạn chế và nguyên tắc vận hành
Trước khi bắt đầu, hãy lưu ý các hạn chế và nguyên tắc vận hành sau:
- Phạm vi cung cấp theo khu vực địa lý: Tính năng định tuyến cho xe lớn được cung cấp ở 48 tiểu bang liền kề của Hoa Kỳ (Cung cấp công khai) và Nhật Bản (Thử nghiệm). Dịch vụ này không có ở Alaska, Hawaii hoặc các lãnh thổ thuộc Hoa Kỳ.
- Lời khuyên và an toàn cho người lái xe: Người lái xe không được chỉ dựa vào các tuyến đường do Navigation SDK trả về để đảm bảo an toàn hoặc hợp pháp. Các tuyến đường có thể không phù hợp với xe trong mọi điều kiện đường xá và việc đi theo các tuyến đường này có thể khiến người lái xe gặp phải các mối nguy hiểm như khoảng sáng gầm xe thấp hoặc đường có quy định hạn chế tải trọng. Người lái xe phải luôn cảnh giác và tuân thủ các biển báo giao thông cũng như quy định của địa phương.
- Tuyến đường cố gắng hết sức: Khi API định tuyến không tìm thấy tuyến đường nào hoàn toàn tuân thủ các quy định hạn chế đối với xe, API này sẽ trả về một tuyến đường "cố gắng hết sức" có thể vẫn đi qua các đoạn đường bị hạn chế. Ví dụ: Routes API đặt cờ
routeRestrictionsPartiallyIgnoredtrong phản hồi của mình. Khi điều hướng trên các tuyến đường này, Navigation SDK sẽ hiển thị chú thích tuyến đường để làm nổi bật các quy định hạn chế có liên quan. Lên kế hoạch cẩn thận cho các tuyến đường trong những trường hợp này và không sử dụng tuyến đường bị gắn cờ làm nguồn thông tin đáng tin cậy duy nhất để lập kế hoạch hoặc điều hướng. - Các tính năng không được hỗ trợ: Tính năng định tuyến cho xe lớn không hỗ trợ các tính năng sau:
- Giá phí cầu đường cho xe tải
- Giới hạn tốc độ dành riêng cho xe tải hoặc xe có trọng tải lớn
- Định tuyến cho vật liệu nguy hiểm phóng xạ
- Giới hạn sử dụng: Các yêu cầu được gửi đến Navigation SDK tuân theo giới hạn sử dụng và hạn mức tiêu chuẩn. Để biết thêm thông tin, hãy xem phần Mức sử dụng và thanh toán.
Hiển thị giao diện người dùng dành riêng cho xe tải (chú thích tuyến đường)
Navigation SDK tự động hiển thị cảnh báo trực quan (gọi là chú thích tuyến đường) trên bản đồ để cảnh báo cho người lái xe về các quy định hạn chế sắp tới đối với xe tải. Chú thích sẽ xuất hiện cho những hạn chế xảy ra dọc theo tuyến đường đã lên kế hoạch, nhưng không hiển thị trên các đường lân cận khác.
Navigation SDK có chú thích cho các hạn chế sau:
| Quy định hạn chế | Biểu tượng và văn bản chú thích | Điều kiện hiển thị |
|---|---|---|
| Height |
Màu vàng = cảnh báo, xe của bạn gần đạt chiều cao tối đa cho phép
Màu đỏ = xe của bạn vượt quá chiều cao tối đa cho phép |
Chú thích màu vàng sẽ xuất hiện khi chiều cao của xe gần với giới hạn.
Chú thích màu đỏ sẽ xuất hiện nếu tuyến đường không tuân thủ và vi phạm quy định hạn chế chiều cao.
|
| Trọng số |
|
Chú thích màu đỏ sẽ xuất hiện khi trọng lượng của xe vượt quá giới hạn của đường.
|
| Xe tải bị cấm |
|
Một chú thích màu đỏ sẽ xuất hiện khi bạn di chuyển trên một đoạn đường có quy định hạn chế đối với xe tải thương mại.
|
| Hàng hoá nguy hiểm |
|
Chú thích màu đỏ sẽ xuất hiện khi đoạn đường cấm xe chở hàng nguy hiểm.
|
Cách hoạt động của mã thông báo tuyến đường
routeToken là ảnh chụp nhanh được mã hoá của một tuyến đường do dịch vụ định tuyến phụ trợ của Google tạo ra. Nó bao gồm cả hình học của tuyến đường đã lên kế hoạch cũng như kích thước thực tế và hồ sơ hạn chế của xe.
Quy trình này bao gồm các bước sau:
- Yêu cầu về tuyến đường: Máy chủ phụ trợ của bạn yêu cầu một tuyến đường cho xe tải từ Routes API (hoặc Route Optimization API).
- Nhận mã thông báo: Routing API tính toán tuyến đường tuân thủ và trả về một
routeTokencho máy chủ phụ trợ của bạn. - Chuyển tiếp mã thông báo: Máy chủ phụ trợ của bạn sẽ truyền
routeTokenvà toạ độ đích đến ứng dụng di động. - Truyền đến SDK: Ứng dụng di động truyền
routeTokenđến Navigation SDK. - Bắt đầu hướng dẫn: Navigation SDK xử lý mọi khía cạnh của trải nghiệm chỉ đường từng chặng, bao gồm cả việc hiển thị chú thích về tuyến đường và xử lý việc định tuyến lại linh hoạt theo các quy định hạn chế đối với xe.
Tính năng tính toán lại và định tuyến lại linh động
Trong quá trình điều hướng đang hoạt động, tình trạng giao thông, đường bị đóng hoặc lượt rẽ bị bỏ lỡ có thể khiến xe đi lệch khỏi tuyến đường đã lên kế hoạch.
Khi xảy ra tình huống định tuyến lại:
- Navigation SDK tự động tính toán lại tuyến đường đến đích đến.
- SDK giữ lại các thuộc tính và kích thước của xe được mã hoá trong
routeTokenban đầu. - Tuyến đường mới được tính toán lại sẽ tránh những nơi có khoảng không gian hạn chế, cầu có giới hạn về trọng lượng và đường cấm xe tải thương mại.
Triển khai: Bắt đầu một chuyến đi dành riêng cho xe tải
Hãy làm theo các bước sau để khởi động và bắt đầu chỉ đường từng chặng bằng mã thông báo tuyến đường cho xe lớn.
Bước 1: Lấy mã thông báo tuyến đường từ phần phụ trợ
Ứng dụng di động của bạn nhận được chuỗi routeToken cùng với toạ độ đích đến từ máy chủ phụ trợ. Để biết thông tin chi tiết về cách tạo mã thông báo này trên máy chủ của bạn, hãy xem phần Tạo tuyến đường và thời gian đến dự kiến cho xe có kích thước lớn trong tài liệu về Routes API.
Mã sau đây là một mã thông báo tuyến đường mẫu:
{
"routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g"
}
Bước 2: Truyền mã thông báo đến Navigator
Truyền routeToken và các điểm tham chiếu trên đường đi đến đích đến cho phương thức mapView.navigator
setDestinations.
Khi định cấu hình điểm đánh dấu và truyền mã thông báo tuyến đường, hãy lưu ý những điểm sau:
- Yêu cầu về tiêu chí so khớp đích đến: Toạ độ đích đến được truyền đến
setDestinationsphải khớp với toạ độ đích đến được dùng khi tạorouteToken. Việc chỉ định một đích đến khác sẽ gây ra lỗi. - Định tuyến bên đường: Xe thương mại cỡ lớn không thể dễ dàng quay đầu trên đường hẹp. Để đảm bảo xe tải tiếp cận điểm đến ở đúng bên đường, hãy đặt
preferSameSideOfRoad = truetrên các điểm tham chiếu. - Điểm dừng của xe: Để hướng dẫn xe tải đến một vị trí thích hợp để dừng hoặc dỡ hàng, hãy đặt
vehicleStopover = truetrên các điểm tham chiếu. - Điểm điều hướng: Nếu điểm đến có lối vào dành riêng cho xe chở hàng hoặc bến tải hàng, hãy chỉ định lối vào đó bằng mã thông báo điểm điều hướng.
Bước 3: Xử lý trạng thái tuyến đường và bắt đầu hướng dẫn
Đánh giá GMSRouteStatus được trả về trong lệnh gọi lại setDestinations. Khi trạng thái là .OK (GMSRouteStatusOK), hãy đặt isGuidanceActive = true (guidanceActive = YES) để bắt đầu hướng dẫn từng chặng đang hoạt động.
Ví dụ về mã
Truyền mã thông báo tuyến đường đến Navigation SDK bằng phương thức mapView.navigator
setDestinations, chỉ định các điểm tham chiếu đích đến mà bạn đã dùng khi tạo mã thông báo tuyến đường:
// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([destination], routeToken: routeToken, callback: {...})
Màn hình trong xe
Bạn có thể hiển thị phiên chỉ đường cho xe cỡ lớn trên màn hình trong bảng điều khiển bằng cách sử dụng Chỉ đường cho CarPlay.Các bước tiếp theo
- Sửa đổi giao diện người dùng điều hướng: Tuỳ chỉnh các chế độ điều khiển và phần tử trực quan trên giao diện người dùng tích hợp sẵn, chẳng hạn như la bàn, nút căn giữa lại và góc nhìn camera.
- Nghe sự kiện điều hướng: Xử lý thông tin cập nhật về điều hướng và các sự kiện trong vòng đời, chẳng hạn như tiến trình của tuyến đường, thay đổi về thời gian đến dự kiến và định tuyến lại.