ค้นหารถยนต์

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

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

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

ใช้เมธอด SearchVehicles

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

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

ช่อง SearchVehiclesRequest

ใช้ฟิลด์แอตทริบิวต์ที่ต้องระบุต่อไปนี้เพื่อสร้าง SearchVehiclesRequest:

ช่อง คำอธิบาย
ระดับบนสุด ต้องระบุ ต้องอยู่ในรูปแบบ provider/{provider} ผู้ให้บริการต้องเป็นรหัสโปรเจ็กต์ของโปรเจ็กต์ Google Cloud ที่บัญชีบริการที่เรียกใช้นี้เป็นสมาชิกอยู่
vehicle_types ต้องระบุ ประเภทยานพาหนะที่ขอ ไม่ว่าจะเป็น AUTO, TWO_WHEELER, TAXI, TRUCK, BICYCLE หรือ PEDESTRIAN
trip_types ต้องระบุ พิเศษ (การเดินทางที่ใช้งานอยู่ 1 ครั้งต่อคนขับ 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 คัน
ตัวกรอง ไม่บังคับ คำค้นหาตัวกรองที่จะใช้เมื่อค้นหายานพาหนะ

โปรดดูเอกสารประกอบอ้างอิงเพื่อดูข้อมูลทั้งชุดของ SearchVehicleRequest

สถานการณ์ SearchVehiclesRequest

ส่วนนี้จะแสดงตัวอย่างวิธีสร้าง SearchVehiclesRequest

ตัวอย่างเช่น สมมติว่าลูกค้าต้องการให้ไปรับที่ RestaurantX และคุณมียานพาหนะ 4 คัน ได้แก่

  • ยานพาหนะที่ 1: ห่างจากร้านอาหาร X ประมาณ 3,500 ม.
  • ยานพาหนะที่ 2: อยู่ห่างจากร้านอาหาร 100 ม. ซึ่งมีบริการไปรับที่ร้าน แล้วไปส่งสถานที่ A และ B
  • ยานพาหนะหมายเลข 3: ห่างจากร้านอาหาร X อีก 200 ม. โดยรถที่จอดอีก 1 คันที่เหลือ ห่างไกลสุดๆ
  • ยานพาหนะ 4: ห่างจากร้านอาหาร 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 รวมถึงแอตทริบิวต์พาหนะ_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.

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