Mã thông báo tuyến đường

Khi bạn đang xác định tuyến đường tốt nhất cho chuyến đi bằng tính năng đi chung xe, tuyến đường nhanh nhất không phải lúc nào cũng là lựa chọn tốt nhất. Bạn nên tuỳ chỉnh tuyến đường của mình. API Ưu tiên tuyến cho phép bạn tuỳ chỉnh một tuyến bằng cách chỉ định mục tiêu định tuyến thông qua phương thức ComputeCustomRoutes.

Khi bạn tạo một tuyến tuỳ chỉnh, Routes Preferred API sẽ tạo một mã thông báo tuyến. Sau đó, bạn có thể chuyển mã thông báo đến SDK điều hướng dành cho Android và truy xuất tuyến tuỳ chỉnh.

Để biết thêm thông tin về cách tạo tuyến tuỳ chỉnh, hãy xem phần Tạo tuyến tuỳ chỉnh.

Truy xuất một tuyến tuỳ chỉnh

Bạn có thể truy xuất tuyến tuỳ chỉnh bằng cách truyền mã thông báo tuyến đến SDK điều hướng dành cho Android bằng cách sử dụng phương thức Navigator.setDestinations.

setDestinations(List<Waypoint> destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

Tuyến tuỳ chỉnh sẽ ghi đè mọi đích đến đã đặt trước đó. Chế độ này sử dụng vị trí xuất phát tương ứng của người lái xe, cũng như tình trạng đường sá và giao thông.

Navigator.setDestinations nhận các thông số sau:

Thông sốNội dung mô tả
đích đến Danh sách điểm đến mới sẽ được đặt.
customRoutesOptions Các tuỳ chọn sẽ dùng để truy xuất một tuyến được tính toán trước, dựa trên mã thông báo do API Ưu tiên tuyến đường trả về.
displayOptions Các tuỳ chọn sẽ được dùng để hiển thị tuyến đường.

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

Ví dụ:

Mã ví dụ sau đây minh hoạ cách truy xuất một tuyến tuỳ chỉnh.

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 RoutesPreferred 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);