ค้นหารถยนต์

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

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

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

ใช้วิธี SearchVehicles

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

  1. สร้าง SearchVehiclesRequest ตามการเดินทางที่จะกำหนด
  2. เรียก SearchVehicles API (vehicleService.searchVehicles) ด้วยคำขอที่สร้างขึ้น
  3. ประมวลผล SearchVehicleResponse ที่ API แสดงผล

ช่อง SearchVehiclesRequest

ใช้ช่องแอตทริบิวต์ที่จำเป็นต่อไปนี้เพื่อสร้าง SearchVehiclesRequest

ช่อง คำอธิบาย
ระดับบนสุด ต้องระบุ ต้องอยู่ในรูปแบบ providers/{provider} ผู้ให้บริการต้องเป็นรหัสโปรเจ็กต์ของ Google Cloud Project ซึ่งบัญชีบริการที่ทำการเรียกนี้เป็นสมาชิก
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 เมตร และกำลังเดินทางที่ใช้งานอยู่ซึ่งมีจุดรับ และจุดส่งอยู่ที่ตำแหน่ง ก. และ ข.
  • ยานพาหนะ 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 ทั้งหมดได้ที่

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

SearchVehicles และ ListVehicles รองรับการกรองแอตทริบิวต์ของยานพาหนะโดยใช้ คำค้นหาตัวกรอง

คำค้นหาตัวกรองรองรับการกรองแอตทริบิวต์ที่กำหนดเองสำหรับยานพาหนะเท่านั้น และใช้กับช่องอื่นๆ ไม่ได้ เมื่อใช้ในการค้นหาที่มีเกณฑ์ช่องอื่นๆ เช่น minimum_capacity หรือ vehicle_types คำค้นหาตัวกรองจะทำงานเป็นอนุประโยค AND

ตัวอย่างเช่น หากคุณค้นหายานพาหนะที่มีความจุขั้นต่ำ 6 ที่นั่ง และกรอง attributes เช่น อนุญาตให้นำสัตว์เลี้ยงขึ้นรถ เกณฑ์ของคุณจะแสดงเฉพาะยานพาหนะที่อนุญาตให้นำสัตว์เลี้ยงขึ้นรถและบรรทุกผู้โดยสารได้อย่างน้อย 6 คน

ดูไวยากรณ์คำค้นหาตัวกรองได้ที่ AIP-160 สำหรับตัวอย่าง ดูรายละเอียดเกี่ยวกับการสร้างแอตทริบิวต์ของยานพาหนะได้ที่ช่องแอตทริบิวต์ ของยานพาหนะในคู่มืออัปเดตช่องยานพาหนะ

ตัวอย่าง SearchVehicles

ตัวอย่างต่อไปนี้แสดงวิธีใช้ SearchVehicles API โดยใช้ ไลบรารี Java gRPC ดูรายการภาษาที่รองรับทั้งหมดได้ที่ ไลบรารีของไคลเอ็นต์สำหรับบริการการเดินทางแบบออนดีมานด์

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.

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