ค้นหารถยนต์

คุณสามารถค้นหายานพาหนะที่อยู่ใกล้เคียงได้โดยใช้วิธีการ 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 คนต่อคน) หรือ 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: อยู่ห่างจาก 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.

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