กําลังค้นหาไดรเวอร์ใกล้เคียง

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

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

แอตทริบิวต์ของงานมีดังนี้

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

แอตทริบิวต์ของยานพาหนะอาจมีดังนี้

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

การจัดอันดับจะเรียงลำดับตาม ETA ระยะทาง หรือระยะทางในเส้นตรงที่คุณเลือกจากจุดรับ

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

การใช้ SearchVehicles API

วิธีใช้ SearchVehicles API

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

ช่อง SearchVehiclesRequest

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

ฟิลด์ คำอธิบาย
parent ต้องระบุ ต้องอยู่ในรูปแบบ provider/{provider} ผู้ให้บริการต้องเป็นรหัสโปรเจ็กต์ (เช่น sample-cloud-project) ของโปรเจ็กต์ 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 คัน

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

ตัวอย่าง SearchVehiclesRequest

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

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

  • ยานพาหนะ 1 ซึ่งอยู่ห่างออกไป 3, 500 ม. จากร้านอาหาร X
  • ยานพาหนะ 2 ซึ่งอยู่ห่างจากร้านอาหาร X ราว 100 ม. และมีการเดินทางที่กำลังดำเนินอยู่ โดยมีบริการไปรับและไปส่งที่สถานที่ ก. และ ข.
  • ยานพาหนะ 3 ซึ่งอยู่ห่างจากร้านอาหาร X ราว 200 ม. และเหลือรถอีก 1 คันที่อยู่ไกลมาก
  • ยานพาหนะ 4 ซึ่งอยู่ห่างจากร้านอาหาร 1, 000 ม.

SearchVehiclesRequest ต่อไปนี้ส่งคืนยานพาหนะ 4:

Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA

SearchVehiclesRequest ต่อไปนี้ส่งคืนยานพาหนะ 3 และ 4

Pickup at RestaurantX, radius = 1200m, order by PICKUP_POINT_ETA, is_back_to_back enabled

SearchVehiclesRequest ต่อไปนี้ส่งคืนยานพาหนะ 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

ตัวอย่าง SearchVehicles

ตัวอย่างต่อไปนี้แสดงวิธีใช้ SearchVehicles API

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.