Đang tìm người lái xe ở gần

Nằm trong Giải pháp gọi xe và giao hàng theo yêu cầu của bạn, chức năng Lập kế hoạch và điều phối tuyến đường cho phép bạn tìm thấy các tài xế ở gần bằng cách cung cấp API SearchVehicles.

API SearchVehicles giúp bạn tìm thấy các tài xế đang có mặt ở gần trong ứng dụng dành cho người dùng sử dụng Giải pháp gọi xe và giao hàng theo yêu cầu, phù hợp nhất với một công việc như gọi xe hoặc yêu cầu giao hàng. API SearchVehicles trả về một danh sách xếp hạng gồm những người lái xe phù hợp với các thuộc tính nhiệm vụ với các thuộc tính của xe trong nhóm xe của bạn.

Các thuộc tính của việc cần làm có thể bao gồm:

  • Địa điểm nhận và trả xe
  • Loại chuyến đi và phương tiện được yêu cầu
  • Dung lượng bắt buộc
  • Các thuộc tính so khớp bắt buộc khác

Các thuộc tính về xe có thể bao gồm:

  • Vị trí xác định gần đây nhất của một chiếc xe
  • Trạng thái, loại hoặc sức chứa của xe
  • Các thuộc tính tuỳ chỉnh khác

Thứ hạng được sắp xếp theo thời gian đến dự kiến, khoảng cách hoặc khoảng cách theo đường thẳng tính từ điểm đón.

Xin lưu ý rằng bạn phải có các đặc quyền của Người dùng siêu người dùng hoặc Người dùng SDK tiêu dùng của Fleet Engine Service để sử dụng API SearchVehicles. Để biết thêm thông tin, hãy xem phần Xác thực và uỷ quyền.

Sử dụng API Searchvehicles

Cách sử dụng API SearchVehicles:

  • Tạo SearchVehiclesRequest dựa trên việc cần làm được giao.
  • Gọi API SearchVehicles (vehicleService.searchVehicles) bằng yêu cầu đã tạo.
  • Xử lý SearchVehicleResponse được trả về từ API.

Các trường SearchvehiclesRequest

Hãy sử dụng các trường thuộc tính bắt buộc sau để tạo SearchVehiclesRequest:

Kỹ thuật Nội dung mô tả
parent Bắt buộc. Phải ở định dạng nhà cung cấp/{provider}. Nhà cung cấp phải là Mã dự án (ví dụ: dự án trên đám mây mẫu) của Dự án trên Google Cloud mà tài khoản dịch vụ thực hiện lệnh gọi này là thành viên.
vehicle_types Bắt buộc. Các loại phương tiện được yêu cầu: XE Ô TÔ, HAI_WHEELER, TAXI, XE TẢI, XE ĐẠP hoặc Xe ĐI BỘ.
trip_types Bắt buộc. ĐỘC QUYỀN (một chuyến đi đang hoạt động tại một thời điểm cho mỗi tài xế) hoặc CHIA SẺ (một hoặc nhiều chuyến đi cùng một lúc cho mỗi tài xế).
minimum_capacity Bắt buộc. Sức chứa tối thiểu còn lại của xe khi thực hiện một nhiệm vụ mới, cho hành khách hoặc hàng giao.
pickup_point Bắt buộc. Vị trí đón của công việc theo toạ độ vĩ độ/kinh độ.
dropoff_point Không bắt buộc. Vị trí thả của tác vụ theo toạ độ vĩ độ/kinh độ. Đây là trường bắt buộc nếu Trip_types chứa TripType.SHARED.
pickup_radius_meters Bắt buộc. Bán kính tính theo mét của khu vực tìm xe tính từ điểm đón.
order_by Bắt buộc. Đặt mua xe theo một trong những cách sau:
  • PICKUP_POINT_ETA, giờ đến dự kiến của xe tại điểm đón.
  • PICKUP_POINT_DISTANCE, khoảng cách giữa xe và điểm đón.
  • DROPOFF_POINT_ETA, giờ đến dự kiến của xe để hoàn tất chuyến đi tại điểm trả khách.
  • PICKUP_POINT_STRAIGHT_DISTANCE, khoảng cách theo đường thẳng (không nằm trong tuyến đường) giữa xe và điểm đón.
số lượng Bắt buộc. Số lượng xe tối đa được phép quay về từ 1 đến 50.

Hãy tham khảo Tài liệu tham khảo để xem toàn bộ SearchVehicleRequestfields.

Ví dụ về SearchvehiclesRequest

Phần này trình bày các ví dụ về cách tạo SearchVehiclesRequest.

Ví dụ: giả sử bạn giao một nhiệm vụ đến lấy hàng tại RestaurantX và 4 chiếc xe:

  • Xe 1, cách RestaurantX 3500 m.
  • Phương tiện 2, cách RestaurantX 100 m và có một chuyến đi đang diễn ra bằng cách đón và trả khách tại vị trí A và B.
  • Xe 3, cách RestaurantX 200m và có một điểm dừng xe còn lại rất xa.
  • Xe 4, cách RestaurantX 1.000 m.

SearchVehiclesRequest sau đây trả về Xe 4:

Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA

SearchVehiclesRequest sau đây trả về Xe 3 và 4:

Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled

SearchVehiclesRequest sau đây trả về Xe 2, 3 và 4:

Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL

Các trường SearchvehiclesResponse

SearchVehiclesResponse bao gồm danh sách các thực thể VehicleMatch, được xếp hạng theo thuộc tính order_by (theo thứ tự) đã chỉ định trong SearchVehiclesRequest. Mỗi thực thể VehicleMatch có các trường sau:

Kỹ thuật Nội dung mô tả
xe cộ Đối tượng Vehicle, bao gồm cả các thuộc tính xe_id và Vehicle.
vehicle_pickup_eta Giờ đến dự kiến của xe tại vị trí đến lấy hàng của nhiệm vụ mới. Đây là thời gian đến dự kiến khi lái xe.
vehicle_pickup_distance_meter Khoảng cách tính bằng mét giữa xe và vị trí đón của nhiệm vụ mới.
vehicle_pickup_straight_line_distance_meter Khoảng cách theo đường thẳng tính bằng mét giữa xe và vị trí đón của nhiệm vụ mới.
vehicle_dropoff_eta Dấu thời gian của thời gian đến dự kiến của xe tại vị trí đón của việc cần làm mới. Xin lưu ý rằng ETA là thời gian đến với hoạt động lái xe.
vehicle_trips_waypoints Danh sách các điểm tham chiếu còn lại, bao gồm cả điểm đón và trả khách cho các chuyến đi đang hoạt động hiện được chỉ định cho xe.
vehicle_match_type Loại chuyến đi của xe: EXCLUSIVE, BACK_TO_BACK, CARPOOL hoặc CARPOOL_BACK_TO_BACK.

Ví dụ về Searchvehicles

Ví dụ sau đây trình bày cách sử dụng API SearchVehicles:

static final String PROJECT_ID = "project-id";

VehicleServiceBlockingStub vehicleService =
    VehicleService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;
SearchVehiclesRequest searchVehiclesRequest = SearchVehiclesRequest.newBuilder()
    .setParent(parent)
    .setPickupPoint( // Grand Indonesia East Mall
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setDropoffPoint( // Balai Sidang Jkt Convention Center
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder().setLatitude(-6.213796).setLongitude(106.807195)))
    .setPickupRadiusMeters(2000)
    .setCount(10)
    .setMinimumCapacity(2)
    .addTripTypes(TripType.EXCLUSIVE)
    .addVehicleTypes(VehicleType.newBuilder().setCategory(Category.AUTO).build())
    .setCurrentTripsPresent(CurrentTripsPresent.ANY)
    .setFilter("attributes.on_trip=\"false\"")
    .setOrderBy(VehicleMatchOrder.PICKUP_POINT_ETA)
    .build();


try {
  SearchVehiclesResponse searchVehiclesResponse =
      vehicleService.searchVehicles(searchVehiclesRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

List<VehicleMatch> vehicleMatches =
    searchVehicleResponse.getMatchesList();

// Each VehicleMatch contains a Vehicle entity and information about the
// distance and ETA to the pickup point and drop-off point.