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

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

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

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

از متد SearchVehicles استفاده کنید

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

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

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

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

میدان توضیحات
والدین الزامی . باید به فرمت providers/{provider} باشد. ارائه دهنده باید شناسه پروژه پروژه Google Cloud باشد که حساب سرویسی که این فراخوانی را انجام می‌دهد، عضوی از آن است.
انواع_وسیله_نقلیه الزامی . انواع وسایل نقلیه درخواستی، اعم از خودرو، دوچرخ، تاکسی، کامیون، دوچرخه یا عابر پیاده.
انواع_سفر الزامی . یا انحصاری (یک سفر فعال در هر زمان برای هر راننده) یا اشتراکی (یک یا چند سفر در هر زمان برای هر راننده).
حداقل_ظرفیت الزامی . حداقل ظرفیت باقیمانده وسیله نقلیه برای یک سفر جدید، چه برای مسافران و چه برای تحویل بار.
نقطه برداشت الزامی . محل تحویل سفر به مختصات طولی/عرضی.
نقطه رهاسازی اختیاری. محل پیاده شدن سفر بر حسب مختصات طول/عرض جغرافیایی. اگر trip_types حاوی TripType.SHARED باشد، این فیلد الزامی است.
شعاع_پیک_متر الزامی . شعاع منطقه جستجوی خودرو از نقطه تحویل خودرو (برحسب متر).
سفارش_بر اساس الزامی است . سفارش خودرو از طریق یکی از روش‌های زیر:
  • نقطه تحویل (PICKUP_POINT_ETA)، زمان تقریبی رسیدن وسیله نقلیه به مقصد.
  • فاصله نقطه تحویل، فاصله بین وسیله نقلیه و نقطه تحویل.
  • DROPOFF_POINT_ETA، زمان تقریبی رسیدن وسیله نقلیه به نقطه تحویل.
  • فاصله‌ی مستقیم (نه در مسیر) بین وسیله نقلیه و نقطه‌ی تحویل، فاصله‌ی مستقیم (خط مستقیم) بین نقطه‌ی تحویل.
بشمار الزامی . حداکثر تعداد وسایل نقلیه برای بازگشت از ۱ تا ۵۰.
فیلتر اختیاری . یک فیلتر برای اعمال هنگام جستجوی وسایل نقلیه.
حداکثر بیات بودن اختیاری . جستجو را فقط به خودروهایی محدود می‌کند که به‌روزرسانی‌های موقعیت مکانی را در مدت زمان مشخص‌شده به Fleet Engine ارسال کرده‌اند. اگر این فیلد تنظیم نشود، سرور از پنج دقیقه به عنوان مقدار پیش‌فرض استفاده می‌کند.

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

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

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

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

  • وسیله نقلیه ۱ : ۳۵۰۰ متر دورتر از رستوران X.
  • وسیله نقلیه ۲ : ۱۰۰ متر دورتر از رستوران X با یک سفر فعال با سرویس سوار و پیاده شدن در مکان‌های A و B.
  • وسیله نقلیه ۳ : ۲۰۰ متر با رستوران ایکس فاصله دارد و یک ایستگاه پیاده شدن خیلی دور باقی مانده است.
  • وسیله نقلیه ۴ : ۱۰۰۰ متر دورتر از رستوران X.

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

وسیله نقلیه ۴ را برمی‌گرداند

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

وسیله نقلیه ۳ و ۴ را برمی‌گرداند

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

وسیله نقلیه ۲، ۳ و ۴ را برمی‌گرداند

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

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

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

میدان توضیحات
وسیله نقلیه شیء Vehicle ، شامل vehicle_id و ویژگی‌های Vehicle .
وانت_خودرو زمان تقریبی رسیدن خودرو به محل تحویل، در صورتی که این سفر همین الان به خودرو اختصاص داده شود.
فاصله_سنج_وسیله_نقلیه فاصله بین وسیله نقلیه و محل تحویل بار سفر جدید (برحسب متر).
متر_فاصله_خط_مستقیم_وسیله_نقلیه فاصله مستقیم بین وسیله نقلیه و محل تحویل بار در سفر جدید (برحسب متر).
vehicle_dropoff_eta زمان تقریبی رسیدن وسیله نقلیه به محل پیاده شدن، در صورتی که این سفر همین الان به وسیله نقلیه اختصاص داده شود.
نقاط مسیر_سفر_وسیله_نقلیه فهرستی از نقاط مسیر باقی‌مانده، شامل نقاط سوار و پیاده شدن، برای سفرهای فعالی که در حال حاضر به وسیله نقلیه اختصاص داده شده است.
نوع_تطبیق_وسیله_نقلیه نوع سفر وسیله نقلیه، انحصاری، برگشت به عقب، اشتراکی یا اشتراکی.

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

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

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

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

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

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

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

مثال زیر نحوه استفاده از API SearchVehicles با استفاده از کتابخانه جاوا 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.

قدم بعدی چیست؟