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

يوضّح لك هذا الدليل كيفية استرداد بيانات الرحلات مباشرةً من Fleet Engine، كبديل لاستخدام Consumer 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 من المسار المتبقي إلى نقطة الاستلام
إحداثيات خطوط الطول والعرض الثانية من المسار المتبقي إلى موقع الاستلام
...
آخر LatLng من المسار المتبقي إلى نقطة الالتقاء
‫pickup_point، إذا كان مختلفًا عن آخر نقطة
traffic_data
distance_meters = المسافة من الموقع الجغرافي الحالي للمركبة على طول المسار إلى نقطة التسليم
eta = updated 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 الثانية من مرحلة التوصيل
...
آخر LatLng من مرحلة النزول
dropoff_point، إذا كانت مختلفة عن آخر نقطة
traffic_data
distance_meters = المسافة من موقع الاستلام على طول المسار path_to_waypoint إلى موقع التسليم
eta = updated ETA
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 للرحلة "ب" بشكل مشابه، ولكن سيتم عرض الإدخالات الثلاثة الأولى فقط، لأنّ نقطة التوقّف للرحلة "أ" ليست جزءًا من مسار الرحلة "ب".