جستجوی وسایل نقلیه

به عنوان بخشی از سرویس سفر درخواستی Mobility، می‌توانید با استفاده از روش SearchVehicles ، وسایل نقلیه نزدیک را پیدا کنید.

روش SearchVehicles به شما امکان می دهد وسایل نقلیه موجود در نزدیکی را در برنامه تلفن همراه مصرف کننده خود بیابید که برای یک سفر خاص یا درخواست تحویل مناسب هستند. SearchVehicles API فهرست رتبه‌بندی‌شده‌ای از وسایل نقلیه را برمی‌گرداند که ویژگی‌های آنها با ویژگی‌های سفر درخواستی مطابقت دارد. رتبه بندی بر اساس انتخاب شما از بین ETA، فاصله یا فاصله خط مستقیم از نقطه تحویل مرتب می شود.

ویژگی های جستجو ویژگی های خودرو
  • مکان های تحویل و تحویل
  • وسیله نقلیه و انواع سفر درخواستی
  • ظرفیت مورد نیاز
  • سایر ویژگی های تطبیق مورد نیاز
  • آخرین مکان شناخته شده یک وسیله نقلیه
  • وضعیت، نوع یا ظرفیت وسیله نقلیه
  • سایر ویژگی های سفارشی

از روش SearchVehicles استفاده کنید

برای استفاده از SearchVehicles ، این روند کلی را دنبال کنید:

  1. بر اساس سفری که قرار است اختصاص داده شود، یک SearchVehiclesRequest بسازید.
  2. با درخواست ساخته شده، SearchVehicles API ( vehicleService.searchVehicles ) را فراخوانی کنید.
  3. SearchVehicleResponse برگشتی از API را پردازش کنید.

فیلدهای Search VehiclesRequest

برای ساخت SearchVehiclesRequest از فیلدهای ویژگی مورد نیاز زیر استفاده کنید:

میدان توضیحات
پدر و مادر مورد نیاز . باید در قالب ارائه دهندگان/{provider} باشد. ارائه‌دهنده باید شناسه پروژه Google Cloud Project باشد که حساب سرویسی که این تماس را برقرار می‌کند عضو آن است.
خودرو_انواع مورد نیاز . انواع وسایل نقلیه درخواستی، AUTO، TWO_WHEELER، TAXI، TRUCK، BICYCLE یا PEDESTRIAN.
انواع_سفر مورد نیاز . یا انحصاری (یک سفر فعال در هر زمان برای هر راننده) یا به اشتراک گذاشته شده (یک یا چند سفر در یک زمان برای هر راننده).
حداقل_ظرفیت مورد نیاز . حداقل ظرفیت باقیمانده وسیله نقلیه برای سفر جدید، چه برای مسافران و چه برای تحویل.
نقطه برداشت مورد نیاز . مکان پیکاپ سفر در مختصات لات/بلند.
dropoff_point اختیاری. محل تخلیه سفر بر حسب مختصات لات/بلند. اگر trip_types حاوی TripType.SHARED باشد، فیلد مورد نیاز است.
پیکاپ_شعاع_متر مورد نیاز . شعاع بر حسب متر منطقه جستجوی وسیله نقلیه از نقطه وانت.
سفارش_بر اساس مورد نیاز . وسایل نقلیه را با یکی از موارد زیر سفارش دهید:
  • PICKUP_POINT_ETA، ETA خودرو در نقطه تحویل.
  • PICKUP_POINT_DISTANCE، فاصله بین وسیله نقلیه و نقطه تحویل.
  • DROPOFF_POINT_ETA، ETA وسیله نقلیه برای تکمیل سفر در نقطه تخلیه.
  • PICKUP_POINT_STRAIGHT_DISTANCE، فاصله خط مستقیم (نه در مسیر) بین وسیله نقلیه و نقطه تحویل.
شمارش مورد نیاز . حداکثر تعداد وسایل نقلیه برای بازگشت از 1 تا 50.
فیلتر کنید اختیاری یک درخواست فیلتر برای اعمال هنگام جستجوی وسایل نقلیه.

برای مشاهده مجموعه کامل فیلدهای Search VehicleRequest به مستندات مرجع مراجعه کنید.

سناریوهای جستجوی وسایل نقلیه درخواست

این بخش نمونه هایی از نحوه ساخت SearchVehiclesRequest را نشان می دهد.

به عنوان مثال، فرض کنید یک مشتری می خواهد از رستوران ایکس تحویل بگیرد و شما چهار وسیله نقلیه دارید:

  • وسیله نقلیه 1 : 3500 متر دورتر از RestaurantX.
  • وسیله نقلیه 2 : 100 متر دور از RestaurantX با یک سفر فعال با پیکاپ و تحویل در مکان های A و B.
  • وسیله نقلیه 3 : 200 متر دورتر از RestaurantX با یک فروند باقی مانده در فاصله بسیار دور.
  • وسیله نقلیه 4 : 1000 متر دورتر از RestaurantX.

موارد زیر درخواست‌های مختلف خودرویی را که آنها برمی‌گردانند نشان می‌دهد.

خودروی برگشتی 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
    

فیلدهای Search Vehicles Response

یک SearchVehiclesResponse شامل لیستی از موجودیت‌های VehicleMatch است که بر اساس ویژگی order_by مشخص شده در SearchVehiclesRequest رتبه‌بندی می‌شود. هر نهاد VehicleMatch دارای فیلدهای زیر است:

میدان توضیحات
وسیله نقلیه شیء Vehicle ، از جمله خودرو_id و ویژگی Vehicle .
وسیله_پیکاپ_eta ETA خودرو در محل وانت در سفر جدید. این ETA رانندگی است.
وسیله_پیکاپ_فاصله_سنج فاصله بین وسیله نقلیه و محل وانت در سفر جدید بر حسب متر.
وسیله_پیکاپ_خط_مستقیم_متر_فاصله_سنج فاصله خط مستقیم بر حسب متر بین وسیله نقلیه و محل وانت در سفر جدید.
automjet_افت_تا مهر زمانی ETA وسیله نقلیه در محل وانت سفر جدید. توجه داشته باشید که ETA ETA محرک است.
وسیله_سفر_نقاط راه فهرستی از نقاط بین راهی، از جمله نقاط تحویل و تحویل، برای سفرهای فعالی که در حال حاضر به خودرو اختصاص داده شده است.
وسیله_کبریت_نوع نوع سفر وسیله نقلیه، EXCLUSIVE، BACK_TO_BACK، CARPOOL، یا CARPOOL_BACK_TO_BACK.

برای فهرست کامل فیلدهای VehicleMatch ، نگاه کنید به:

از پرس و جوهای فیلتر استفاده کنید

SearchVehicles و ListVehicles از فیلتر کردن ویژگی‌های خودرو با استفاده از جستجوی فیلتر پشتیبانی می‌کنند.

درخواست‌های فیلتر فقط از فیلتر کردن ویژگی‌های سفارشی برای وسایل نقلیه پشتیبانی می‌کنند و نمی‌توانند برای فیلدهای دیگر استفاده شوند. وقتی در جستجویی استفاده می‌شود که شامل معیارهای فیلد دیگر، مانند minimum_capacity یا vehicle_types است، پرس و جو فیلتر به عنوان یک AND عمل می‌کند.

به عنوان مثال، اگر وسیله نقلیه‌ای را جستجو کنید که دارای حداقل ظرفیت 6 نفر باشد و attributes مانند دوستدار حیوانات خانگی را فیلتر کنید، معیارهای شما فقط وسایل نقلیه‌ای را برمی‌گرداند که هم دوستدار حیوانات هستند و هم می‌توانند حداقل 6 مسافر را حمل کنند.

برای نحو پرس و جو فیلتر، برای مثال AIP-160 را ببینید. برای جزئیات در مورد ایجاد ویژگی های خودرو، به قسمت ویژگی های خودرو در راهنمای فیلدهای خودرو به روز رسانی مراجعه کنید.

مثال Search Vehicles

مثال زیر نحوه استفاده از SearchVehicles API را با استفاده از کتابخانه Java gRPC نشان می دهد.

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.

بعدش چی