ค้นหารถยนต์

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

วิธีการ 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 ต้องระบุ เป็นแบบ "พิเศษ" (มีการเดินทางที่ใช้งานอยู่ครั้งละ 1 รายการต่อคนขับ) หรือ "แชร์" (มีการเดินทางที่ใช้งานอยู่ครั้งละ 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: อยู่ห่างจาก RestaurantX 3500 เมตร
  • ยานพาหนะ 2: อยู่ห่างจาก RestaurantX 100 เมตร โดยมีการเดินทางที่ใช้งานอยู่ซึ่งมีการไปรับและส่งที่จุด A และ B
  • ยานพาหนะ 3: อยู่ห่างจาก RestaurantX 200 เมตร โดยมีจุดส่งผู้โดยสารที่เหลืออยู่ 1 แห่งซึ่งอยู่ไกลมาก
  • ยานพาหนะ 4: อยู่ห่างจาก RestaurantX 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 โดยใช้ไลบรารี 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.

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