คุณสามารถค้นหายานพาหนะที่อยู่ใกล้เคียงได้โดยใช้เมธอด SearchVehicles ซึ่งเป็นส่วนหนึ่งของบริการการเดินทางแบบออนดีมานด์
SearchVehicles วิธีนี้ช่วยให้คุณค้นหายานพาหนะที่พร้อมให้บริการในบริเวณใกล้เคียงในแอปบนอุปกรณ์เคลื่อนที่สำหรับผู้บริโภค ซึ่งเหมาะที่สุดสำหรับคำขอเรียกรถหรือคำขอจัดส่งที่เฉพาะเจาะจง
 SearchVehicles API จะแสดงรายการยานพาหนะที่จัดอันดับแล้วซึ่งมี
แอตทริบิวต์ตรงกับแอตทริบิวต์การเดินทางที่ขอ การจัดอันดับจะเรียงตาม
ตัวเลือกที่คุณเลือก ไม่ว่าจะเป็นเวลาที่คาดการณ์ไว้ ระยะทาง หรือระยะทางเส้นตรงจากจุดรับ
| แอตทริบิวต์การค้นหา | แอตทริบิวต์ของยานพาหนะ | 
|---|---|
| 
 | 
 | 
ใช้วิธี 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 รายการต่อคนขับ 1 คน) หรือ SHARED (การเดินทางที่ใช้งานอยู่ 1 รายการหรือหลายรายการต่อคนขับ 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: อยู่ห่างจากร้านอาหาร X 3,500 เมตร
- ยานพาหนะ 2: อยู่ห่างจากร้านอาหาร X 100 เมตร โดยมีการเดินทางที่ใช้งานอยู่พร้อมการรับ และส่งที่ตำแหน่ง A และ B
- ยานพาหนะ 3: อยู่ห่างจากร้านอาหาร X 200 เมตร โดยมีจุดส่งที่เหลืออีก 1 จุดซึ่งอยู่ไกลมาก
- ยานพาหนะ 4: อยู่ห่างจากร้านอาหาร X 1,000 เมตร
ต่อไปนี้แสดงคำขอต่างๆ ตามยานพาหนะที่ส่งคืน
ส่งคืนยานพาหนะ 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.