Lên kế hoạch tuyến đường

Đôi khi, bạn có thể muốn lên kế hoạch cho tuyến đường mà ứng dụng của bạn cung cấp cho người dùng. Sử dụng mã thông báo định tuyến từ API tuyến đường (hoặc API ưu tiên tuyến đường) có thể giúp bạn chỉ định có hai điều cho tuyến đường bạn đã lên kế hoạch:

  • Hình nhiều đường cho tuyến đường

  • Mục tiêu tuyến đường của bạn

Ví dụ: sau đây là một số ví dụ về những mục tiêu định tuyến mà bạn có thể có:

  • Giảm thiểu thời gian giao hàng: Một doanh nghiệp giao đồ ăn có thể muốn giảm thiểu thời gian cần thiết để giao thực phẩm.

  • Giảm thiểu thời gian di chuyển hoặc mức tiêu thụ nhiên liệu: Một doanh nghiệp kho vận có thể muốn giảm thiểu thời gian nâng cao hiệu suất của người lái xe và giảm chi phí nhiên liệu.

  • Giảm thiểu thời gian tới đích: Hoạt động điều phối dịch vụ có thể muốn giảm thiểu thời gian cần thiết để đưa nhân viên vận hành đến yêu cầu công việc.

  • Giảm chi phí và cải thiện độ an toàn: Một doanh nghiệp cung cấp dịch vụ đi chung xe có thể muốn tìm tuyến đường ít tốn kém hơn cho người lái xe và tránh một số khu vực nhất định để đảm bảo an toàn lý do.

Để biết thêm thông tin về cách lên kế hoạch cho một tuyến đường bằng mã thông báo tuyến đường, hãy xem Yêu cầu mã thông báo tuyến.

Tại sao bạn phải sử dụng mã thông báo tuyến đường cho mục tiêu tuyến đường

Với mã thông báo tuyến đường từ API Ưu tiên Tuyến hoặc Tuyến đường, bạn có nhiều quyền kiểm soát tuyến đường được cung cấp:

  • Lên kế hoạch trước một tuyến đường để SDK điều hướng sử dụng khi có thể.

  • Chọn tuyến đường tốt nhất để SDK điều hướng sử dụng. Nếu bạn yêu cầu mã thông báo tuyến đường khi tạo tuyến trong API tuyến đường, bạn sẽ nhận được mã thông báo tuyến đường cho mỗi tuyến đường đã tạo. Sau đó, bạn có thể chọn mã thông báo cho tuyến đường bạn muốn sử dụng khi chuyển tuyến đến SDK điều hướng.

  • Ước tính giá trước, bao gồm cả thông tin ước tính cho giờ đến dự kiến và khoảng cách. Mặc dù chi phí và thời gian thực tế có thể thay đổi, ước tính này làm giảm khoảng cách giữa chi phí thực tế và dự kiến của tuyến đường.

  • Chỉ định các mục tiêu tuyến đường nâng cao hơn, chẳng hạn như định tuyến tiết kiệm năng lượng hoặc tuyến đường ngắn nhất tuyến đường.

Cách hoạt động của mã thông báo tuyến đường API Tuyến đường

Bạn có thể dùng API Tuyến đường hoặc API Ưu tiên cho Tuyến đường để lên kế hoạch một tuyến đường bằng cách sử dụng mục tiêu tuyến đường. API Tuyến trả về một mã thông báo tuyến đường mà bạn có thể truyền đến SDK điều hướng để hướng dẫn cách thực hiện di chuyển xe của bạn.

Sau đây là những gì sẽ xảy ra khi bạn yêu cầu và sử dụng mã thông báo tuyến đường từ API Tuyến đường:

  1. API Tuyến trả về một mã thông báo định tuyến đã mã hoá bao gồm tuyến đường đó mục tiêu hình nhiều đường và tuyến đường.

  2. Bạn truyền mã thông báo tuyến đường đến SDK điều hướng.

  3. SDK điều hướng truy xuất tuyến đường hoặc nếu tuyến đường chưa sẵn có do các điều kiện thay đổi, nó truy xuất kết quả phù hợp nhất tuyến đường.

  4. Trong khi lái xe trên tuyến đường, nếu giao thông hoặc tình trạng đường khác thay đổi, hoặc nếu phương tiện đi chệch khỏi tuyến đường dự kiến, tuyến đường được sửa đổi liên tục cố gắng khớp tuyến đường tốt nhất dựa trên mục tiêu tuyến đường trong mã thông báo.

Quá trình này sẽ tối đa hoá khoảng cách giữa tuyến đường thực tế với tuyến đường đã lên kế hoạch của bạn.

Lý do có thể không đi theo chính xác tuyến đường dự kiến

Hãy coi tuyến đường và mục tiêu tuyến đường dự kiến của bạn là các nguyên tắc để thực hiện: chúng không mang tính quy định. Bạn có thể thấy sự khác biệt giữa tuyến đường dự kiến và tuyến đường được cung cấp theo chỉ dẫn có hướng dẫn do sự khác biệt về đường điều kiện, vị trí bắt đầu hoặc các thông số khác đã thay đổi kể từ khi bạn đã tạo tuyến đường dự kiến. Sự khác biệt này có thể dẫn đến sự không khớp giữa mục tiêu thực tế và theo kế hoạch của bạn về quãng đường và thời gian đến dự kiến, cùng các chuyến đi quan trọng khác chất lượng.

Lên kế hoạch cho một tuyến đường bằng mã thông báo tuyến đường

Bạn có thể lên kế hoạch cho một tuyến đường bằng cách tạo mã thông báo tuyến đường rồi truyền mã đó đến SDK điều hướng, như mô tả trong các bước sau:

Bước 1: Tạo mã thông báo tuyến đường bằng cách sử dụng API ưu tiên tuyến đường hoặc tuyến đường

  1. Yêu cầu mã thông báo tuyến bằng một trong các phương thức sau:

  2. Thiết lập yêu cầu về tuyến đường để đáp ứng các yêu cầu về việc sử dụng tuyến đường mã thông báo:

    • Đặt travel_mode thành DRIVING
    • Đặt routing_preference thành TRAFFIC_AWARE hoặc TRAFFIC_AWARE_OPTIMAL
    • KHÔNG sử dụng Điểm tham chiếu

Bước 2: Truyền mã thông báo tuyến đường đến SDK điều hướng

  1. Lưu trữ mã thông báo tuyến đường: Trong SDK điều hướng, hãy thiết lập một chuỗi để lưu trữ mã thông báo tuyến đường. Ví dụ:

    String routeToken = "route token returned by Routes API";

    Ví dụ về mã thông báo tuyến đường được trả về:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Truyền mã thông báo tuyến đường đến SDK điều hướng bằng cách sử dụng Phương thức Navigator.setDestinations, chỉ định cùng một đích đến điểm tham chiếu mà bạn đã sử dụng khi tạo mã thông báo tuyến đường:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    Ví dụ:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

Phương thức Navigator.setDestinations trả về trạng thái của yêu cầu. Nếu tìm thấy tuyến đường từ vị trí của xe đến điểm đến đã cho, hàm này sẽ trả về RouteStatus.OK.

Để biết thêm thông tin về phương pháp này, hãy xem Navigator.setDestinations.

Ví dụ:

Ví dụ về mã sau đây minh hoạ cách chỉ định một tuyến đường được lên kế hoạch bằng cách sử dụng mã thông báo tuyến đường.

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

Cách mã thông báo tuyến đường và SDK điều hướng tương tác

Dưới đây là cách tuyến đường được tạo bởi SDK điều hướng và kế hoạch tuyến đường trong mã thông báo tuyến đường tương tác:

  • Ghi đè mọi đích đến đã đặt trước đó.

  • Sử dụng vị trí xuất phát của xe.

  • Điều chỉnh theo tình trạng giao thông và đường sá. Xem Tại sao không thể đi theo chính xác tuyến đường dự kiến.

  • Bỏ qua các tuỳ chọn liên quan đến định tuyến sau đây vì không cần thiết:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Lượt theo dõi:

    • Các lựa chọn liên quan đến điểm tham chiếu, chẳng hạn như lựa chọn ưu tiên bên đường.

    • Mục tiêu của tuyến. Nếu SDK điều hướng phải và điều chỉnh tuyến đường được trả về, nó sẽ sử dụng các mục tiêu tuyến đường mà bạn đã chỉ định khi để yêu cầu mã thông báo tuyến đường. Vì lý do này, bạn nên sử dụng cùng một các tuỳ chọn liên quan đến tham chiếu mà bạn đã chỉ định trong API Tuyến đường.