ค้นหารถยนต์

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

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

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

ใช้วิธี 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 คือ ETA ของยานพาหนะในการเดินทางให้เสร็จสิ้นที่จุดส่งผู้โดยสาร
  • PICKUP_POINT_STRAIGHT_DISTANCE คือระยะทางแบบเส้นตรง (ไม่ใช่ในเส้นทาง) ระหว่างยานพาหนะกับจุดรับผู้โดยสาร
จำนวน ต้องระบุ จำนวนยานพาหนะสูงสุดที่จะแสดงผลตั้งแต่ 1 ถึง 50 คัน
ตัวกรอง ไม่บังคับ คำค้นหาตัวกรองที่จะใช้เมื่อค้นหายานพาหนะ
maximum_staleness ไม่บังคับ จำกัดการค้นหาเฉพาะยานพาหนะที่ส่งการอัปเดตตำแหน่งไปยัง Fleet Engine ภายในระยะเวลาที่ระบุ หากไม่ได้ตั้งค่าช่องนี้ เซิร์ฟเวอร์จะใช้ 5 นาทีเป็นค่าเริ่มต้น

โปรดดูเอกสารอ้างอิงเพื่อดูช่อง SearchVehicleRequest ทั้งหมด

สถานการณ์ SearchVehiclesRequest

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

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

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

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