استرجع بيانات الرحلة مباشرةً من Fleet Engine

يوضّح لك هذا الدليل كيفية استرداد بيانات الرحلات مباشرةً من Fleet Engine، وذلك كبديل عن استخدام حزمة تطوير البرامج (SDK) للمستهلك. يمكنك استخدام هذا النهج للتحكم بشكلٍ أكبر في تجربة المستخدم النهائي مع الاستفادة من الموقع الجغرافي للمركبة ووقت الوصول المقدَّر ومسار التنقّل الدقيق في الوقت الفعلي من "أداة تخطيط أسطول المركبات".

لمعرفة التفاصيل حول استخدام حزمة Consumer SDK، يُرجى الاطّلاع على مقالة مشاركة الرحلات لرحلات عند الطلب .

استرداد معلومات الرحلة

لاسترداد معلومات الرحلة من Fleet Engine مباشرةً، يمكنك استدعاء الطريقة GetTrip، لتحديد طريقة العرض JOURNEY_SHARING_V1S. راجِع المرجع الخاص بخدمة RPC أو REST.

عادةً ما يطلب الخادم من خدمة الرحلات حالة كل رحلة بينما يراقب الراكب بشكل نشط تقدّم المركبة. يتم عادةً إجراء تحديثات الموقع الجغرافي للمركبة كل 10 ثوانٍ، ومن المفترض أن يجري نظامك الاستطلاع بالمعدّل نفسه. يمكن مراقبة الحقل Trip.last_location.update_time لمعرفة ما إذا كان هناك أي تعديلات منذ المكالمة السابقة إلى 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 الناتج على الحقول التالية التي تمّت تعبئتها بأحدث المعلومات المتاحة للرحلة:

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

استرداد نقاط الطريق المتبقية للرحلة

يتضمّن كيان "الرحلة" حقلاً متكرّرًا من النوع TripWaypoint يشمل هذا الحقل جميع نقاط الطريق التي يجب أن تسلكها المركبة بالترتيب قبل نقطة الانسحاب الأخيرة لهذه الرحلة. يؤدي تحديد عرض "مشاركة الرحلة" إلى إبلاغ Fleet Engine بوضع المعلومات المعدّلة في linked_waypoints[0] TripWaypoint. في طرق عرض أخرى غير مشاركة الرحلة، لا تعكس هذه النقطة الطريق عادةً أحدث موضع للمركبة المعينة. اطّلِع على مرجع RPC أو REST.

لمزيد من المعلومات، يُرجى الاطّلاع على حالة الرحلة ونقاط الطريق المتبقية للمركبة في دليل مقدّمة عن الرحلات.

في ما يلي مثال على الحقل remaining_waypoints لرحلة، الرحلة أ:

[0] location.point = trip.pickup_point.point
trip_id = "trip_A"
waypoint_type = PICKUP_WAYPOINT_TYPE
path_to_waypoint = خط الطول والعرض[] خط الطول والعرض الأول من المسار المتبقي إلى استلام الطلب
الإحداثيات الجغرافية الثانية للطول والعرض من المسار المتبقّي إلى نقطة الاستلام
...
خط الطول والعرض الأخير من المسار المتبقي إلى استلام الطلب
نقطة_استلام، إذا كانت مختلفة عن آخر نقطة
traffic_data
‫distance_meters = المسافة من موقع_المركبة الحالي على طول path_to_waypoint إلى نقطة_الاستلام
eta = وقت الوصول المحدَّث
المدة = المدة المعدَّلة
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = خط الطول والعرض[] خط الطول الأول للمرة الأولى من نقطة النزول
خط الطول الثاني الثاني من نقطة النزول
...
خط الطول والعرض الأخير من مرحلة التسليم
نقطة_الإيصال، إذا كانت مختلفة عن آخر نقطة
traffic_data
بُعد_المسافة = المسافة من نقطة الاستلام على طول المسار_إلى_نقطة_الإنزال
eta = وقت الوصول المحدَّث
المدة = مدة الرحلة إلى نقطة الاستلام

مع رحلات التجميع المتتالية والمشتركة، قد تحتوي هذه القائمة على نقاط طريق من الرحلات الأخرى التي يجب اجتيازها قبل هذه الرحلة. على سبيل المثال، ضع في اعتبارك السيناريو الذي يتم فيه إسناد الرحلة "ب" إلى المركبة نفسها التي تم إسناد الرحلة "أ" إليها. بعد ذلك، تتم تعبئة الحقل remaining_waypoints للرحلة "أ" على النحو التالي. تم حذف معظم الحقول لتوفير الإيجاز، ولكن سيتم ملؤها بما يتوافق مع المثال السابق.

[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 في الرحلة "ب" بالطريقة نفسها، ولكن لن تظهر سوى الإدخالات الثلاثة الأولى، لأنّ نقطة المغادرة في الرحلة "أ" ليست جزءًا من مسار الرحلة "ب".