ค้นหารถยนต์

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

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

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

ใช้วิธี SearchVehicles

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

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

ช่อง SearchVehiclesRequest

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

ช่อง คำอธิบาย
parent ต้องระบุ ต้องอยู่ในรูปแบบ 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, ระยะทางแบบเส้นตรง (ไม่อยู่ในเส้นทาง) ระหว่างยานพาหนะกับจุดรับ
count ต้องระบุ จำนวนยานพาหนะสูงสุดที่จะแสดงผล ซึ่งมีค่าตั้งแต่ 1 ถึง 50
filter ไม่บังคับ คําค้นหาตัวกรองที่จะใช้เมื่อค้นหายานพาหนะ
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 ซึ่งรวมถึง 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 โดยใช้ ไลบรารี 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.

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