From 017bec86faa766451ac3259c133babefd461b45d Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Fri, 19 Jun 2026 14:01:15 +0300 Subject: [PATCH] Update: 2026-06-19 14:01:15 --- .DS_Store | Bin 6148 -> 6148 bytes knowledge/driver_ride_simulation_report.md | 64 +++++++++++++++++++-- knowledge/siro_driver_ride_simulation.html | 64 +++++++++++++++++++-- 3 files changed, 120 insertions(+), 8 deletions(-) diff --git a/.DS_Store b/.DS_Store index 042d39ff138372ede4550aca75ca767fd127d55c..00329f9b5e6c53ce6031f376df7c52b99af2b407 100644 GIT binary patch delta 65 zcmZoMXfc@J&&abeU^g=(&t@K$Hb!|)hHQpBhJ1!{h8%`eh7^W$hSaj)qP(2^ymSTz V2FA$;S(P?#WHn*h%+B$b9{@DG5tRS{ delta 32 ocmZoMXfc@J&&a(oU^g=(_hufJHpb0cSc91+HYjao=lIJH0H(kSD*ylh diff --git a/knowledge/driver_ride_simulation_report.md b/knowledge/driver_ride_simulation_report.md index d3ecbd5..8198d57 100644 --- a/knowledge/driver_ride_simulation_report.md +++ b/knowledge/driver_ride_simulation_report.md @@ -177,12 +177,68 @@ _cameraFollowTimer = Timer.periodic(const Duration(seconds: 8), (timer) { ... }) ## 4. نظام الملاحة التفاعلي ورسم المسارات (Interactive Navigation & Mapping)
-يعتمد تطبيق السائق على خرائط انطلق المبنية على محرك مابليبرا (MapLibre)، ويتم استدعاء مسار الملاحة من سيرفر SaaS عبر الدالة +يعتمد تطبيق السائق على خرائط انطلق المبنية على محرك مابليبرا (MapLibre)، ويتم استدعاء ورسم مسارات الملاحة التفاعلية في تطبيق السائق بدقة وتفصيل عالية عبر الفئات والأساليب التالية: +
+ +### أ. رسم المسارات المزدوجة ونوافذ المعلومات في شاشة طلب الرحلة (Dual-Route & Info Windows in Order Request) +
+في شاشة استقبال الطلب +
+ +[OrderRequestController](file:///Users/hamzaaleghwairyeen/development/App/Siro/siro_driver/lib/controller/home/captin/order_request_controller.dart) + +
+يقوم التطبيق بالاستعلام ورسم مسارين جغرافيين في نفس الوقت عبر الدالة +
+ +[_calculateFullJourney](file:///Users/hamzaaleghwairyeen/development/App/Siro/siro_driver/lib/controller/home/captin/order_request_controller.dart#L226) + +
+حيث يستدعي: +1. مسار الانطلاق (Pickup Route): من موقع السائق الحالي إلى موقع الراكب (يرسم باللون الأصفر/الذهبي). +2. مسار الرحلة الرئيسي (Trip Route): من موقع الراكب إلى الوجهة النهائية (يرسم باللون الأسود/الأزرق). + +ولعرض تفاصيل المسافة والوقت كصندوق معلومات عائم (Info Window) مباشرة فوق الخريطة، يتم استدعاء الدالة +
+ +[_updateMarkers](file:///Users/hamzaaleghwairyeen/development/App/Siro/siro_driver/lib/controller/home/captin/order_request_controller.dart#L468) + +
+والتي تقوم بطلب مولد الماركرز +
+ +[MarkerGenerator.createCustomMarkerBitmap](file:///Users/hamzaaleghwairyeen/development/App/Siro/siro_driver/lib/views/home/Captin/orderCaptin/marker_generator.dart) + +
+لتوليد صور ماركر مخصصة ديناميكياً تحتوي على الوقت والمسافة كصندوق معلومات يعلو الخريطة فوق نقطة الركوب (أقرب مسافة وزمن وصول للسائق) ونقطة الوصول (المسافة والزمن المقدرين للرحلة الكلية للراكب). +
+ +### ب. تسلسل رسم وحذف المسارات أثناء دورة حياة الرحلة (Lifecycle Route Transitions) +
+تخضع مسارات الخريطة لعملية تحديث وحذف دورية أثناء الرحلة في الكنترولر +
+ +[MapDriverController](file:///Users/hamzaaleghwairyeen/development/App/Siro/siro_driver/lib/controller/home/captin/map_driver_controller.dart) + +
+وفق التسلسل التالي: +1. **عند قبول الطلب**: يتم مسح خط الوجهة، ورسم خط الملاحة الجاري باتجاه الراكب (باللون الأصفر) عبر استدعاء
[getRoute](file:///Users/hamzaaleghwairyeen/development/App/Siro/siro_driver/lib/controller/home/captin/map_driver_controller.dart#L1885) -### أ. تفادي انهيار الخرائط عند المسافات الصفرية (Same-Device Crash Protection) +
+2. **عند وصول السائق لموقع الراكب**: بمجرد ضغط السائق على زر "وصلت" وتأكيده، يتم استدعاء الدالة +
+ +[clearPolyline](file:///Users/hamzaaleghwairyeen/development/App/Siro/siro_driver/lib/controller/home/captin/map_driver_controller.dart#L422) + +
+والتي تقوم بمسح وحذف المسار الجاري الأول (الخط الأصفر الموصل للراكب) بالكامل من الخريطة لتنظيف الشاشة. +3. **عند بدء الرحلة الفعلي**: يتم الاستعلام ورسم المسار الأزرق/الأسود الجديد المؤدي للوجهة النهائية مباشرة باتجاه وجهة الراكب عبر إعادة استدعاء دالة المسار `getRoute` للوجهة. +
+ +### ج. تفادي انهيار الخرائط عند المسافات الصفرية (Same-Device Crash Protection)
عند تشغيل اختبارات الرحلة وكون موقع السائق والراكب متطابقين تماماً (مسافة أقل من 10 أمتار)، ينهار محرك الملاحة المكتوب بلغة C++ بسبب إحداثيات الصندوق المحيط (Bounds) ذات العرض الصفرى مطلقةً استثناء `std::domain_error`. لمنع ذلك، يقوم الكود بفحص المسافة، وفي حال كانت متطابقة يقوم بإظهار نافذة تنبيه
@@ -193,7 +249,7 @@ _cameraFollowTimer = Timer.periodic(const Duration(seconds: 8), (timer) { ... }) ثم الانتقال قسرياً لتطبيق زوم تقريبي آمن بدلاً من احتواء الحدود الصفرية. -### ب. تحديث المسار المقطوع بنظام النافذة المنزلقة (Bidirectional Sliding Window) +### د. تحديث المسار المقطوع بنظام النافذة المنزلقة (Bidirectional Sliding Window)
لمنع إعادة رسم كامل خط المسار (Polyline) عند كل إرسال للموقع، يتم استخدام نافذة بحث منزلقة ثنائية الاتجاه تتكون من 60 نقطة (30 للخلف و 30 للأمام) في الدالة
@@ -204,7 +260,7 @@ _cameraFollowTimer = Timer.periodic(const Duration(seconds: 8), (timer) { ... }) تحدد الدالة أقرب نقطة لموقع السائق الحالي على المسار المخزن، وتقوم بقطع الـ Polyline إلى جزأين: مسار مقطوع بلون رمادي ومسار متبقي بلون أزرق/أصفر، وتحديث الخريطة فقط عند تجاوز إزاحة تزيد عن 50 متراً. -### ج. رسم خطوط المشي المنقطة (Passenger Walk Dotted Line) +### هـ. رسم خطوط المشي المنقطة (Passenger Walk Dotted Line)
عندما يكون موقع الراكب الفعلي بعيداً عن أقرب طريق إسفلتي متاح للسيارات، يتم استدعاء الدالة
diff --git a/knowledge/siro_driver_ride_simulation.html b/knowledge/siro_driver_ride_simulation.html index 9015674..f8577d8 100644 --- a/knowledge/siro_driver_ride_simulation.html +++ b/knowledge/siro_driver_ride_simulation.html @@ -1317,7 +1317,7 @@