ค้นหารถยนต์

คุณสามารถค้นหายานพาหนะที่อยู่ใกล้เคียงได้โดยใช้เมธอด SearchVehicles ซึ่งเป็นส่วนหนึ่งของบริการการเดินทางแบบออนดีมานด์

SearchVehicles วิธีนี้ช่วยให้คุณค้นหายานพาหนะที่พร้อมให้บริการในบริเวณใกล้เคียงในแอปบนอุปกรณ์เคลื่อนที่สำหรับผู้บริโภค ซึ่งเหมาะที่สุดสำหรับคำขอเรียกรถหรือคำขอจัดส่งที่เฉพาะเจาะจง SearchVehicles API จะแสดงรายการยานพาหนะที่จัดอันดับแล้วซึ่งมี แอตทริบิวต์ตรงกับแอตทริบิวต์การเดินทางที่ขอ การจัดอันดับจะเรียงตาม ตัวเลือกที่คุณเลือก ไม่ว่าจะเป็นเวลาที่คาดการณ์ไว้ ระยะทาง หรือระยะทางเส้นตรงจากจุดรับ

แอตทริบิวต์การค้นหา แอตทริบิวต์ของยานพาหนะ
  • สถานที่รับและส่ง
  • ประเภทยานพาหนะและการเดินทางที่ขอ
  • ความจุที่จำเป็น
  • แอตทริบิวต์การจับคู่อื่นๆ ที่จำเป็น
  • ตำแหน่งสุดท้ายที่ทราบของยานพาหนะ
  • สถานะ ประเภท หรือความจุของยานพาหนะ
  • แอตทริบิวต์ที่กำหนดเองอื่นๆ

ใช้วิธี SearchVehicles

หากต้องการใช้ SearchVehicles ให้ทำตามกระบวนการทั่วไปนี้

  1. สร้าง SearchVehiclesRequest ตามการเดินทางที่จะมอบหมาย
  2. เรียกใช้ SearchVehicles API (vehicleService.searchVehicles) ด้วยคำขอที่สร้างขึ้น
  3. ประมวลผล 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 ต้องระบุ จัดเรียงยานพาหนะตามรายการใดรายการหนึ่งต่อไปนี้
  • PICKUP_POINT_ETA เวลาถึงโดยประมาณของยานพาหนะที่จุดรับ
  • PICKUP_POINT_DISTANCE ซึ่งเป็นระยะทางระหว่างยานพาหนะกับจุดรับ
  • DROPOFF_POINT_ETA, เวลาที่คาดการณ์ว่ารถจะเดินทางถึงจุดส่งผู้โดยสาร
  • PICKUP_POINT_STRAIGHT_DISTANCE คือระยะทางเป็นเส้นตรง (ไม่อยู่ในเส้นทาง) ระหว่างยานพาหนะกับจุดรับสินค้า
จำนวน ต้องระบุ จำนวนยานพาหนะสูงสุดที่จะแสดงตั้งแต่ 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 เวลาที่คาดว่าจะถึง (ETA) ของยานพาหนะที่จุดรับ หากมีการมอบหมายการเดินทางนี้ให้กับยานพาหนะในตอนนี้
vehicle_pickup_distance_meter ระยะทางเป็นเมตรระหว่างยานพาหนะกับสถานที่รับของทริปใหม่
vehicle_pickup_straight_line_distance_meter ระยะทางเป็นเส้นตรงในหน่วยเมตรระหว่างยานพาหนะกับสถานที่รับของทริปใหม่
vehicle_dropoff_eta เวลาที่คาดว่าจะถึง (ETA) ของยานพาหนะที่จุดส่ง หากระบบกำหนดการเดินทางนี้ให้กับยานพาหนะในตอนนี้
vehicle_trips_waypoints รายการจุดแวะพักที่เหลือ รวมถึงจุดรับและจุดส่ง สำหรับการเดินทางที่ใช้งานอยู่ซึ่งกำหนดให้กับยานพาหนะในขณะนี้
vehicle_match_type ประเภทการเดินทางของยานพาหนะ ซึ่งอาจเป็น EXCLUSIVE, BACK_TO_BACK, CARPOOL หรือ CARPOOL_BACK_TO_BACK

ดูรายการVehicleMatchทั้งหมดได้ที่

ใช้คำค้นหาตัวกรอง

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.

ขั้นตอนถัดไป