คุณสามารถค้นหายานพาหนะที่อยู่ใกล้เคียงได้โดยใช้วิธี SearchVehicles ซึ่งเป็นส่วนหนึ่งของบริการการเดินทางแบบออนดีมานด์ของ Mobility
เมธอด SearchVehicles ช่วยให้คุณค้นหายานพาหนะที่พร้อมให้บริการในบริเวณใกล้เคียงในแอปผู้บริโภคบนอุปกรณ์เคลื่อนที่ซึ่งเหมาะกับคำขอโดยสารหรือคำขอจัดส่งที่เฉพาะเจาะจงมากที่สุด SearchVehicles API จะแสดงรายการยานพาหนะที่จัดอันดับซึ่งมีแอตทริบิวต์ตรงกับแอตทริบิวต์การเดินทางที่ขอ การจัดอันดับจะเรียงตามตัวเลือกของคุณ ไม่ว่าจะเป็น ETA, ระยะทาง หรือระยะทางแบบเส้นตรงจากจุดรับ
| ค้นหาแอตทริบิวต์ | แอตทริบิวต์ของยานพาหนะ |
|---|---|
|
|
ใช้วิธี SearchVehicles
หากต้องการใช้ SearchVehicles ให้ทำตามกระบวนการทั่วไปต่อไปนี้
- สร้าง
SearchVehiclesRequestโดยอิงตามการเดินทางที่จะมอบหมาย - เรียกใช้
SearchVehiclesAPI (vehicleService.searchVehicles) ด้วยคำขอที่สร้างขึ้น - ประมวลผล
SearchVehicleResponseที่แสดงผลจาก API
ช่อง SearchVehiclesRequest
ใช้ช่องแอตทริบิวต์ที่จำเป็นต่อไปนี้เพื่อสร้าง SearchVehiclesRequest
| ช่อง | คำอธิบาย |
|---|---|
| เป็นผู้ปกครอง | ต้องระบุ ต้องอยู่ในรูปแบบ providers/{provider} ผู้ให้บริการต้องเป็นรหัสโปรเจ็กต์ของโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud ที่บัญชีบริการที่ทำการเรียกนี้เป็นสมาชิก |
| vehicle_types | ต้องระบุ ประเภทยานพาหนะที่ขอ ไม่ว่าจะเป็น AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE หรือ PEDESTRIAN |
| trip_types | ต้องระบุ EXCLUSIVE (การเดินทางที่ใช้งานอยู่ครั้งละ 1 รายการต่อคนขับ) หรือ SHARED (การเดินทางครั้งละ 1 รายการหรือหลายรายการต่อคนขับ) |
| minimum_capacity | ต้องระบุ ความจุขั้นต่ำที่เหลืออยู่ของยานพาหนะสำหรับการเดินทางใหม่ ไม่ว่าจะเป็นผู้โดยสารหรือการนำส่ง |
| pickup_point | ต้องระบุ สถานที่รับสำหรับการเดินทางในพิกัดละติจูด/ลองจิจูด |
| dropoff_point | ไม่บังคับ สถานที่ส่งของการเดินทางในพิกัดละติจูด/ลองจิจูด ต้องระบุช่องนี้หาก trip_types มี TripType.SHARED |
| pickup_radius_meters | ต้องระบุ รัศมีเป็นเมตรของพื้นที่ค้นหายานพาหนะจากจุดรับ |
| order_by | ต้องระบุ จัดเรียงยานพาหนะตามเกณฑ์ต่อไปนี้
|
| จำนวน | ต้องระบุ จำนวนยานพาหนะสูงสุดที่จะแสดงผลตั้งแต่ 1 ถึง 50 คัน |
| ตัวกรอง | ไม่บังคับ คำค้นหาตัวกรองที่จะใช้เมื่อค้นหายานพาหนะ |
| maximum_staleness | ไม่บังคับ จำกัดการค้นหาเฉพาะยานพาหนะที่ส่งการอัปเดตตำแหน่งไปยัง Fleet Engine ภายในระยะเวลาที่ระบุ หากไม่ได้ตั้งค่าช่องนี้ เซิร์ฟเวอร์จะใช้ 5 นาทีเป็นค่าเริ่มต้น |
โปรดดูเอกสารอ้างอิงเพื่อดูช่อง SearchVehicleRequest ทั้งหมด
สถานการณ์ SearchVehiclesRequest
ส่วนนี้แสดงตัวอย่างวิธีสร้าง SearchVehiclesRequest
ตัวอย่างเช่น สมมติว่าลูกค้าต้องการให้ไปรับที่ร้านอาหาร X และคุณมียานพาหนะ 4 คัน ดังนี้
- ยานพาหนะ 1: อยู่ห่างจาก RestaurantX เป็นระยะทาง 3,500 ม.
- ยานพาหนะ 2: อยู่ห่างจากร้านอาหาร X เป็นระยะทาง 100 ม. โดยมีการเดินทางที่ใช้งานอยู่ซึ่งมีการรับและส่งที่สถานที่ตั้ง A และ B
- ยานพาหนะ 3: อยู่ห่างจากร้านอาหาร X เป็นระยะทาง 200 ม. โดยมีจุดส่งที่เหลืออยู่ 1 จุดซึ่งอยู่ไกลมาก
- ยานพาหนะ 4: อยู่ห่างจากร้านอาหาร X เป็นระยะทาง 1,000 ม.
ข้อมูลต่อไปนี้แสดงคำขอต่างๆ ตามยานพาหนะที่แสดงผล
Returns Vehicle 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA
แสดงยานพาหนะ 3 และ 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled
แสดงยานพาหนะ 2, 3 และ 4
Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, current_trips_present = ALL
ช่อง SearchVehiclesResponse
SearchVehiclesResponse ประกอบด้วยรายการเอนทิตี VehicleMatch ซึ่งจัดอันดับตามแอตทริบิวต์ order_by ที่ระบุใน SearchVehiclesRequest เอนทิตี VehicleMatch แต่ละรายการมีฟิลด์ต่อไปนี้
| ช่อง | คำอธิบาย |
|---|---|
| พาหนะ | ออบเจ็กต์ Vehicle ซึ่งรวมถึงแอตทริบิวต์ vehicle_id และ Vehicle |
| vehicle_pickup_eta | เวลาถึงโดยประมาณของยานพาหนะที่จุดรับหากมีการมอบหมายการเดินทางนี้ให้กับยานพาหนะในขณะนี้ |
| vehicle_pickup_distance_meter | ระยะทางเป็นเมตรระหว่างยานพาหนะกับสถานที่รับผู้โดยสารของการเดินทางใหม่ |
| vehicle_pickup_straight_line_distance_meter | ระยะทางแบบเส้นตรงเป็นเมตรระหว่างยานพาหนะกับสถานที่รับผู้โดยสารของการเดินทางใหม่ |
| vehicle_dropoff_eta | เวลาถึงโดยประมาณของยานพาหนะที่สถานที่ส่งผู้โดยสาร/สินค้า หากมีการมอบหมายการเดินทางนี้ให้กับยานพาหนะขณะนี้ |
| vehicle_trips_waypoints | รายการจุดอ้างอิงที่เหลือ ซึ่งรวมถึงจุดรับและจุดส่งสำหรับการเดินทางที่ดำเนินอยู่ซึ่งมอบหมายให้ยานพาหนะในปัจจุบัน |
| vehicle_match_type | ประเภทการเดินทางของยานพาหนะ ซึ่งอาจเป็น EXCLUSIVE, BACK_TO_BACK, CARPOOL หรือ CARPOOL_BACK_TO_BACK |
ดูรายการช่อง VehicleMatch ทั้งหมดได้ที่หัวข้อต่อไปนี้
VehicleMatch message(gRPC)VehicleMatch resource(REST)
ใช้คำค้นหาตัวกรอง
SearchVehicles และ ListVehicles รองรับการกรองแอตทริบิวต์ของยานพาหนะโดยใช้คำค้นหาตัวกรอง
การค้นหาตัวกรองรองรับเฉพาะการกรองแอตทริบิวต์ที่กำหนดเองสำหรับยานพาหนะ และไม่สามารถใช้กับช่องอื่นๆ ได้ เมื่อใช้ในการค้นหาที่มีเกณฑ์ช่องอื่นๆ เช่น minimum_capacity หรือ vehicle_types คำค้นหาตัวกรองจะทำหน้าที่เป็นคำสั่ง AND
เช่น หากคุณค้นหายานพาหนะที่มีความจุขั้นต่ำ 6 คนและกรองattributes เช่น อนุญาตให้นำสัตว์เลี้ยงขึ้นได้ เกณฑ์ของคุณจะแสดงเฉพาะยานพาหนะที่อนุญาตให้นำสัตว์เลี้ยงขึ้นได้และสามารถบรรทุกผู้โดยสารได้อย่างน้อย 6 คน
ดูตัวอย่างไวยากรณ์การค้นหาตัวกรองได้ที่ AIP-160 ดูรายละเอียดเกี่ยวกับการสร้างแอตทริบิวต์ยานพาหนะได้ที่ช่องแอตทริบิวต์ยานพาหนะในคู่มืออัปเดตช่องยานพาหนะ
ตัวอย่าง SearchVehicles
ตัวอย่างต่อไปนี้แสดงวิธีใช้ SearchVehicles API โดยใช้ไลบรารี gRPC ของ Java ดูรายการภาษาที่รองรับทั้งหมดได้ที่ไลบรารีของไคลเอ็นต์สำหรับบริการการเดินทางแบบออนดีมานด์
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.