داده های سفر را مستقیماً از Fleet Engine بازیابی کنید

Consumer SDK یک قابلیت کلید در دست برای اشتراک‌گذاری برنامه‌های مصرف‌کننده برای نمایش مکان و پیشرفت وسیله نقلیه‌ای که آنها را در سفر می‌برد، فراهم می‌کند.

با این حال، برخی از ارائه‌دهندگان Rideshare می‌خواهند کنترل بیشتری بر تجربه مشتری نهایی خود با یکپارچه‌سازی انعطاف‌پذیر داشته باشند، در حالی که همچنان از موقعیت مکانی خودرو، ETA و مسیر دقیق و بی‌درنگ Google استفاده می‌کنند. این راهنما به شما نشان می‌دهد که چگونه داده‌های سفر را مستقیماً از Fleet Engine بازیابی کنید، به عنوان جایگزینی برای استفاده از Consumer SDK.

بررسی اجمالی

برای بازیابی مستقیم اطلاعات سفر از Fleet Engine، با مشخص کردن نمای JOURNEY_SHARING_V1S ( RPC | REST ) ​​با روش GetTrip تماس بگیرید.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String TRIP_ID = "trip-A";

String tripName = "providers/" + PROJECT_ID + "/trips/" + TRIP_ID;
GetTripRequest getTripRequest =
    GetTripRequest.newBuilder()
        .setName(tripName)
        .setView(JOURNEY_SHARING_V1S)
        .build();
Trip trip = tripService.getTrip(getTripRequest);

شی Trip ( RPC | REST ) ​​حاصل دارای فیلدهای زیر است که با آخرین اطلاعات موجود برای سفر پر شده است:

  • name
  • vehicle_id
  • trip_status
  • trip_type
  • number_of_passengers
  • pickup_point
  • actual_pickup_point
  • pickup_time
  • intermediate_destinations
  • intermediate_destinations_version
  • intermediate_destination_index
  • dropoff_point
  • actual_dropoff_point
  • dropoff_time
  • remaining_waypoints
  • last_location
  • view (== JOURNEY_SHARING_V1S)

ارائه دهندگان Rideshare معمولاً وضعیت هر سفر را هر دو تا پنج ثانیه یک بار در حالی که سوارکار به طور فعال پیشرفت وسیله نقلیه را زیر نظر دارد، نظرسنجی می کنند. به‌روزرسانی مکان خودرو معمولاً در بازه زمانی طولانی‌تری مانند 10 ثانیه انجام می‌شود. فیلد Trip.last_location.update_time را می توان برای مشاهده اینکه آیا از زمان تماس قبلی با GetTrip به روز رسانی شده است، نظارت کرد.

ایستگاه های بین راهی سفر

موجودیت Trip حاوی یک فیلد تکراری از نوع TripWaypoint ( RPC | REST ) ​​است. این فیلد شامل تمام نقاط بین راهی است که وسیله نقلیه برای طی کردن آنها به ترتیب قبل از نقطه پایانی این سفر به آنها نیاز دارد. مشخص کردن نمای اشتراک‌گذاری سفر، به Fleet Engine می‌گوید که اطلاعات به‌روز شده را در resting_waypoints[0] TripWaypoint قرار دهد. در نماهای دیگر، غیر اشتراک گذاری سفر، آن نقطه بین معمولاً آخرین موقعیت وسیله نقلیه تعیین شده را منعکس نمی کند.

در اینجا نمونه ای از فیلد remaining_waypoints در سفر A آورده شده است:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = LatLng[] LatLng 1 از مسیر باقی مانده تا پیکاپ
LatLng دوم از مسیر باقیمانده تا پیکاپ
...
آخرین LatLng از مسیر باقیمانده تا پیکاپ
pickup_point، اگر متفاوت از آخرین
ترافیک_داده
distance_meters = فاصله از مکان_خودروی فعلی در امتداد مسیر_تا_نقطه_راه تا پیکاپ
eta = ETA به روز شده
duration = مدت زمان به روز شده
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] LatLng 1 از پایه سقوط
LatLng دوم از پایه افت
...
آخرین LatLng از پایه سقوط
dropoff_point، اگر متفاوت از آخرین
ترافیک_داده
distance_meters = فاصله از پیکاپ در امتداد مسیر_تا_نقطه راه تا تخلیه
eta = ETA به روز شده
duration = مدت زمان رها کردن پا

با سفرهای پشت سر هم و مشترک (کارپول)، این فهرست ممکن است حاوی نقاطی از سفرهای دیگر باشد که در طول این سفر طی خواهند شد. به عنوان مثال، سناریویی را در نظر بگیرید که در آن سفر B به همان وسیله نقلیه سفر A اختصاص داده می شود. قسمت remaining_waypoints برای سفر A به صورت زیر پر می شود. (بیشتر فیلدها به دلیل مختصر بودن حذف شده اند، اما مطابق با مثال قبلی پر می شوند.)

[0] trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
[1] trip_id = "trip_B"
waypoint_type = PICKUP_WAYPOINT_TYPE
[2] trip_id = "trip_B"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
[3] trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE

قسمت remaining_waypoint سفر B به طور مشابه پر می شود، اما فقط سه ورودی اول وجود خواهند داشت، زیرا نقطه خروج سفر A بخشی از مسیر سفر B نیست.