Trong Giải pháp gọi xe và phân phối theo yêu cầu, chức năng Lên kế hoạch và điều phối tuyến đường cho phép bạn tìm thấy những người lái xe ở gần bằng cách cung cấp API SearchVehicles
.
API SearchVehicles
cho phép bạn tìm những tài xế lân cận hiện có trong ứng dụng người tiêu 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 nhiệm vụ như gọi xe hoặc yêu cầu giao hàng. API SearchVehicles
trả về danh sách tài xế được xếp hạng phù hợp với thuộc tính nhiệm vụ với thuộc tính của xe trong đội xe của bạn.
Các thuộc tính của việc cần làm có thể bao gồm:
- Vị trí nhận xe và trả xe
- Loại phương tiện và chuyến đi đã 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 xe có thể bao gồm:
- Vị trí xác định gần đây nhất của 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 lựa chọn của bạn về giờ đế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 SDK người tiêu dùng hoặc người dùng cao cấp dịch vụ Fleet Engine để 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 tác vụ được giao. - Hãy gọi API
SearchVehicles
(vehicleService.searchVehicles
) với yêu cầu đã tạo. - Xử lý
SearchVehicleResponse
mà API trả về.
Trường SearchvehiclesRequest
Sử dụng các trường thuộc tính bắt buộc sau đây để tạo SearchVehiclesRequest
:
Trường | Nội dung mô tả |
---|---|
parent | Bắt buộc. Phải ở định dạng provider/{provider}. Nhà cung cấp phải là Mã dự án (ví dụ: sample-cloud-project) của dự án trên Google Cloud mà tài khoản dịch vụ thực hiện cuộc 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: TỰ ĐỘNG, TWO_WHEELER, TAXI, XE TẢI, XE ĐẠP hoặc NGƯỜI Đ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 ĐƯỢC CHIA SẺ (một hoặc nhiều chuyến đi 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 cho một nhiệm vụ mới, dù là chở khách hoặc giao hàng. |
pickup_point | Bắt buộc. Vị trí nhận nhiệm vụ theo toạ độ vĩ độ/kinh độ. |
dropoff_point | Không bắt buộc. Vị trí bỏ ngang của tác vụ theo toạ độ vĩ độ/kinh độ. Trường này là 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 bằng mét ở khu vực tìm kiếm xe tính từ điểm đón. |
order_by | Bắt buộc. Đặt hàng xe theo một trong các phương thức sau:
|
số lượng | Bắt buộc. Số lượng xe tối đa để trả lại là 1 đến 50. |
Hãy tham khảo Tài liệu tham khảo để xem tập hợp đầy đủ 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 cần giao một nhiệm vụ đến lấy hàng tại RestaurantX và 4 xe:
- Xe 1, cách RestaurantX 3.500 m.
- Xe 2, cách RestaurantX 100 m và đang chạy một chuyến, có thể đến lấy và trả xe tại vị trí A và B.
- Xe 3, cách RestaurantX 200 m và còn một lần trả xe ở rất xa.
- Xe 4, cách RestaurantX 1000 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
Trường SearchvehiclesResponse
SearchVehiclesResponse
bao gồm một danh sách các thực thể VehicleMatch
, được xếp hạng theo thuộc tính order_by đã chỉ định trong SearchVehiclesRequest
.
Mỗi thực thể VehicleMatch
có các trường sau:
Trường | Nội dung mô tả |
---|---|
xe cộ | Đối tượng Vehicle , bao gồm cả các thuộc tínhvehicle_id và Vehicle . |
vehicle_pickup_eta | Giờ đến dự kiến của xe tại vị trí đón của nhiệm vụ mới. Đây là thời gian dự kiến 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 khách của nhiệm vụ mới. Lưu ý rằng ETA là ETA 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ả xe, 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ề Tìm kiếm xe
Ví dụ sau đây cho thấ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.