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

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

لمعرفة التفاصيل حول استخدام حزمة تطوير البرامج (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 لوضع المعلومات المعدَّلة في remaining_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 = LatLng[] خط العرض وخط الطول الأول من المسار المتبقي إلى نقطة الاستلام
خط العرض وخط الطول الثانيان من المسار المتبقي إلى نقطة الاستلام
...
آخر LatLng من المسار المتبقي إلى نقطة الالتقاء
pickup_point، إذا كانت مختلفة عن آخر نقطة
traffic_data
‫distance_meters = المسافة من vehicle_location الحالي على طول path_to_waypoint إلى نقطة الاستلام
eta = الوقت المُقدّر للوصول بعد تعديله
duration = updated duration
[1] location.point = trip.dropoff_point.point
trip_id = "trip_A"
waypoint_type = DROP_OFF_WAYPOINT_TYPE
path_to_waypoint = LatLng[] خط العرض وخط الطول الأول من مرحلة النزول
خط العرض وخط الطول الثاني من مرحلة النزول
...
آخر LatLng من مرحلة النزول
dropoff_point، إذا كانت مختلفة عن آخر نقطة
traffic_data
‫distance_meters = المسافة من نقطة الاستلام على طول path_to_waypoint إلى نقطة النزول
eta = الوقت المُقدّر للوصول بعد تعديله
duration = drop-off leg duration

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