Cung cấp chỉ đường từng chặng cho xe cỡ lớn

Đố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 di động chịu trách nhiệm xây dựng trải nghiệm điều hướng trong cabin cho tài xế lái xe tải hoặc các loại xe 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.

Kiến thức bạn sẽ học được

Bạn sẽ tìm hiểu cách thực hiện những việc sau:

  • Sử dụng routeToken để kết nối việc lập kế hoạch tuyến đường 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 kiện tiên quyết

Trước khi bắt đầu, bạn phải đáp ứng các yêu cầu sau.

Thiết lập dự án

Bạn phải cung cấp dự án trên đám mây của Google Cloud cho tính năng Định tuyến cho xe lớn. Nếu bạn đang sử dụng các dự án riêng biệt cho Routes API và Navigation SDK, thì cả hai dự án này đều phải được cung cấp tương ứng.

Tạo mã thông báo tuyến đường

Trước tiên, bạn phải tạo tuyến đường bằng cách làm theo hướng dẫn trong bài viết Tạo tuyến đường và thời gian đến dự kiến cho xe tải. Bạn cần có đầu ra của quy trình đó (routeToken) để hoàn tất các bước trong hướng dẫn này.

Yêu cầu tối thiểu

Ứ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:

  • Android: 5.2.0 trở lên
  • iOS: 5.4.0 trở lên

Ngoài ra, bạn phải đáp ứng tất cả các yêu cầu để sử dụng Navigation SDK:

Các điểm hạn chế

Trước khi bắt đầu, bạn phải lưu ý những hạn chế và yêu cầu sau.

  • Khu vực địa lý cung cấp: Tính năng định tuyến cho xe lớn chỉ có ở 48 tiểu bang liền kề của Hoa Kỳ.
  • Định tuyến cho xe lớn là một sản phẩm ở giai đoạn Xem trước. Người lái xe không được chỉ dựa vào các tuyến đường do API này trả về để đảm bảo an toàn hoặc hợp pháp. Chúng tôi không đảm bảo rằng các tuyến đường phù hợp với xe 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ư cầu thấp hoặc đường cấm xe cỡ lớn.
  • Các tuyến đường được tính toán theo khả năng. Trong một số trường hợp, API không thể tìm thấy một tuyến đường hoàn toàn tuân thủ các quy định hạn chế đi lại. Thay vào đó, API này trả về một tuyến đường "cố gắng hết sức" vẫn có thể đi qua các khu vực bị hạn chế. Phản hồi của Routes API sẽ gắn cờ rõ ràng các tuyến đường này trong trường routeRestrictionsPartiallyIgnored. Trong những trường hợp này, hãy lên kế hoạch cẩn thận cho tuyến đường của bạn, tốt nhất là sử dụng dữ liệu từ nguồn khác. 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 chỉ đường.
  • Các tính năng không được hỗ trợ: Mặc dù chúng tôi đang nỗ lực bổ sung thêm chức năng cho dịch vụ này, nhưng tính năng định tuyến cho xe cỡ lớn không hỗ trợ những tính năng sau:
    • Giá phí cầu đường cho xe tải
    • Giới hạn tốc độ
    • Định tuyến cho vật liệu nguy hiểm phóng xạ
  • Hạn mức sử dụng: Tất cả các yêu cầu đều phải tuân theo hạn mức tiêu chuẩn về số lượng truy vấn mỗi giây (QPS).

Hiển thị giao diện người dùng dành riêng cho xe tải

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 được hiển thị cho những quy định hạn chế nằm trong tuyến đường đã lên kế hoạch, nhưng không hiển thị trên các đường khác ở gần đó.

SDK này 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 Biểu tượng hạn chế chiều cao màu vàng
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
Biểu tượng hạn chế chiều cao màu đỏ
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.
Bản đồ có cảnh báo hạn chế chiều cao
Chú thích màu đỏ sẽ xuất hiện nếu tuyến đường không tuân thủ và vi phạm giới hạn chiều cao.
Bản đồ có lỗi vi phạm quy định hạn chế chiều cao
Trọng số Biểu tượng hạn chế về trọng lượng 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.
Bản đồ có biểu tượng hạn chế về trọng lượng
Xe tải bị cấm Biểu tượ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.
Bản đồ có biểu tượng cấm xe tải
Hàng hoá nguy hiểm Biểu tượng hàng hoá nguy hiểm Chú thích màu đỏ sẽ xuất hiện khi xe chở hàng nguy hiểm bị cấm trên một đoạn đường.
Bản đồ có biểu tượng hàng hoá nguy hiểm

Quy trình sử dụng mã thông báo tuyến đường

routeToken là một ảnh chụp nhanh được mã hoá và bảo mật của một tuyến đường do Routes API tạo. Nội dung này chứa tất cả thông tin chi tiết về tuyến đường, bao gồm cả hồ sơ phương tiện được dùng để tạo tuyến đường. Việc sử dụng mã thông báo đảm bảo phiên điều hướng khớp với tuyến đường mà bạn đã lên kế hoạch trên phần phụ trợ.

Xin lưu ý rằng khi người lái xe bắt đầu điều hướng, tuyến đường do Navigation SDK cung cấp có thể thay đổi tuỳ thuộc vào tình trạng giao thông và tình trạng đường. Trong một số trường hợp, đường đi có thể khác với đường đi được chỉ định bằng mã thông báo tuyến đường.

Trong những trường hợp này, cũng như trong trường hợp người lái xe đi lệch khỏi tuyến đường đã lên kế hoạch, việc sử dụng mã thông báo tuyến đường đảm bảo rằng các tuyến đường mới được tính toán lại sẽ tuân theo các thuộc tính của xe như được định cấu hình trong yêu cầu API ban đầu của Routes API.

Quy trình công việc tuân theo các bước sau:

  1. Phần phụ trợ của bạn yêu cầu một tuyến đường cho xe tải từ Routes API.
  2. Routes API trả về một routeToken.
  3. Phụ trợ của bạn sẽ gửi mã thông báo này đến ứng dụng di động.
  4. Ứng dụng di động truyền routeToken đến Navigation SDK để bắt đầu chuyến đi.
  5. 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 đổi tuyến đường nếu người lái xe đi lệch đường trong khi vẫn giữ nguyên các quy định hạn chế ban đầu đối với xe.

Triển khai: Bắt đầu một chuyến đi dành riêng cho xe tải

Để chạy một phiên chỉ đường bằng tuyến đường dành cho xe tải, bạn sẽ truyền mã thông báo tuyến đường đến Navigator.

Bước 1: Lấy mã thông báo tuyến đường

Ứng dụng của bạn nhận chuỗi routeToken từ máy chủ phụ trợ.

Mã sau đây là một mã thông báo ví dụ:

CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g

Bước 2: Truyền mã thông báo đến Navigator

Cung cấp routeToken cho Navigator khi bạn đặt điểm đến của chuyến đi. Sau đó, Navigation SDK sẽ dùng mã thông báo này cho tất cả các phép tính toán tuyến đường cho chuyến đi.

Xin lưu ý rằng Navigation SDK có một cấu hình TravelMode, bạn phải đặt cấu hình này thành TravelMode.DRIVING. Cấu hình này tách biệt với cấu hình travelMode trong Routes API. Bạn phải đặt cấu hình này thành TRUCK. Cấu hình Routes API travelMode được mã hoá trong routeToken và báo hiệu cho Navigation SDK để hiển thị trải nghiệm và tuyến đường dành riêng cho xe tải.

Android

Sử dụng CustomRoutesOptions.builder() để đặt mã thông báo, sau đó truyền mã thông báo đó đến navigator.setDestinations().

// Obtain the routeToken string from your backend
val routeToken = "route token returned by Routes API"

val customRoutesOptions = CustomRoutesOptions.builder()
    .setRouteToken(routeToken)
    .setTravelMode(TravelMode.DRIVING)
    .build()

// Specify the same destination used to create the route token
ArrayList <Waypoint> destinations = Lists.newArrayList();
val destination = Waypoint.builder()
    .setLatLng(10.0, 20.0)
    .setTitle("title")
    .setVehicleStopover(true)
    .build()
destinations.add(destination);

navigator.setDestinations(destinations, customRoutesOptions)

iOS

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: {...})

Các bước tiếp theo