ค้นหารถยนต์

คุณสามารถค้นหายานพาหนะที่อยู่ใกล้เคียงโดยใช้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: อยู่ห่างจาก RestaurantX 100 เมตรและกำลังเดินทางโดยมีจุดรับ และจุดส่งที่ตำแหน่ง A และ B
  • ยานพาหนะ 3: อยู่ห่างจาก RestaurantX 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 เวลาที่คาดว่าจะถึง (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.

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