Skip to main content

تخصيص محرك التوجيه

في بعض الحالات، قد ترغب في توسيع أو تعديل تجربة التوجيه في OsmAnd، بحيث يمكنك إضافة معلمات إضافية، أو إضافة حواجز إضافية، أو تغيير بعض العقوبات. يرجى إلقاء نظرة على routing.xml. يستخدم توجيه OsmAnd خوارزمية A* ثنائية الاتجاه تعتمد على أسرع وقت (= المسافة / (السرعة * الأولوية) + العقوبات). إنه تنسيق سهل للغاية. وهو مقسم إلى 7 أقسام (مجموعات تقييم):

  • الوصول (1 سماح، -1 عدم سماح)
  • السرعة (رقم يمثل السرعة بالكيلومتر في الساعة)
  • الأولوية (رقم بين 0 و 1) - مضاعف للسرعة ولا يزال مرتبطًا بالسرعة القصوى، لذلك سيتم استخدام الحد الأدنى (السرعة * المضاعف، السرعة القصوى) لـ A*
  • اتجاه واحد (1، -1 أو 0) - يستخدم لتوضيح الوصول بناءً على اتجاه الحركة
  • penalty_transition (عقوبة بالثواني) - تستخدم لتحديد العقوبة عندما ينتقل المستخدم من طريق عالي الفئة إلى طريق منخفض الفئة. على سبيل المثال، طريق سريع - 10، طريق رئيسي - 15، إذا انتقل المستخدم من طريق سريع إلى طريق رئيسي، فستكون العقوبة 5 ثوانٍ (=10 - 15). سيتم استخدام هذه العقوبة بواسطة خوارزمية A*. لا توجد عقوبة إذا انتقل المستخدم من طريق سريع إلى طريق رئيسي ولا توجد عقوبة إذا استمر المسار من طريق سريع إلى طريق سريع.
  • obstacle (عقوبة بالثواني) - تحدد العقوبة التي تضاف إلى وقت التوجيه
  • obstacle_time (عقوبة بالثواني) - تحدد العقوبة التي تظهر للمستخدم ولكنها لا تؤخذ في الاعتبار من قبل محرك التوجيه، أي obstacle_time - ساعتان، obstacle - دقيقة واحدة، في أقصر مسار سيجد المحرك مسارًا باستخدام عقبة دقيقة واحدة ولكن المستخدم سيرى أن وقت المسار هو ساعتان.

لاختبار routing.xml، يمكنك استخدام OsmAndMapCreator. لاختبار routing.xml على الجهاز، يمكنك ببساطة استبدال routing.xml الافتراضي في المجلد الجذر لـ OsmAnd ببطاقة SD.