توفّر خلاصة البيانات باتّجاهات مفصّلة معلومات التنقّل فقط للأجهزة غير المصمّمة لإرشادات التنقّل المستندة إلى الخريطة. حيث يوفر المناورات القادمة بالعناصر التي تقدمها:
- الأيقونات (اليسار، اليمين، دوران على شكل حرف U)
- تبديل الأرقام في الدوائر الدائرية
- أسماء الطرق
- المسافات والوقت المقدّر للوصول إلى خطوة التنقل التالية أو الوجهة النهائية
ويمكنك استخدام الخلاصة المفصّلة لإنشاء تجارب لا تكون فيها واجهة المستخدم الكاملة لحزمة تطوير البرامج (SDK) مناسبة للتنقّل، مثل شاشات العرض على الشاشات الصغيرة. على سبيل المثال، يمكنك استخدام هذا لراكبي المركبات ذات العجلتين، حيث يمكنك مشروع إرشادات التنقل فقط لمساعدتهم في الوصول إلى وجهاتهم بشكل أسرع وبثقة أكبر مع الحد من مصادر التشتيت.
عناصر عرض التنقّل الأساسية
الحقول الأساسية لكل خطوة تنقُّل هي الاسم الكامل للطريق، والمناورة، والمسافة الإجمالية للخطوة، والتي تتوفر في GMSNavigationStepInfo.
بالنسبة إلى الرحلة بأكملها، قد تحتاج إلى عرض الوقت المتبقي والمسافة إلى الخطوة الحالية أو إلى الوجهة، وكل ذلك متوفر في GMSNavigationNavInfo. تعرض الصورة إلى اليمين مثالاً لعناصر التنقل الأساسية هذه.
إعداد أداة معالجة الحدث
لاستخدام بيانات التنقّل فقط، عليك استخدام أداة معالجة الحدث
لحدث didChangeNavInfo
. ضمن أداة معالجة الحدث، يمكنك الوصول إلى معلومات
الرحلة والخطوات لتوفير ميزة التنقّل باتّجاهات مفصّلة للمستخدمين.
لتنفيذ معالِجات الأحداث، يجب أن تستخدم وحدة التحكّم في عرض الخريطة
بروتوكول GMSNavigatorListener
. للحصول على معلومات مفصّلة عن معالجة الأحداث في حزمة تطوير البرامج (SDK) للتنقّل على نظام التشغيل iOS، يُرجى الاطّلاع على الاستماع إلى أحداث التنقّل.
التعامل مع حدث doChangeNavInfo
يمكنك إنشاء أداة معالجة الحدث didChangeNavInfo
لإضافة دعم تفصيلي إلى تطبيقك. في أداة معالجة الحدث، استخدِم الفئات والتعدادات التالية للتحكّم في
التنقّل باتّجاهات مفصّلة:
GMSNavigationNavInfo — معلومات تحدّد الفئة حول حالة التنقل
GMSNavigationStepInfo : تشير إلى المعلومات التي تحدّد الفئة حول خطوة واحدة على طول مسار التنقل.
GMSNavigationNavState — تعداد يحدد الحالة الحالية للتنقُّل، مثل enroute أو إعادة التوجيه أو التوقف.
GMSNavigationDrivingSide : يشير التعداد إلى ما إذا كانت هذه الخطوة على مسار قيادة على اليمين أو القيادة إلى اليسار.
GMSNavigationManeuver : التعداد الذي يحدد إجراء التنقّل الذي يجب اتخاذه، مثل الانعطاف لليسار أو الانعطاف إلى اليمين.
في ما يلي أمثلة على أدوات معالجة الأحداث في حدث "didChangeNavInfo
":
Objective-C
// ViewController.h @interface SomeViewController () <GMSNavigatorListener> @end // ViewController.m @implementation SomeViewController // Some initialization code. ... { ... [_mapView.navigator addListener:self]; ... } #pragma mark GMSNavigatorListener - (void)navigator:(GMSNavigator *)navigator didUpdateNavInfo:(GMSNavigationNavInfo *)navInfo { // Get the current step information if (navInfo.navState == GMSNavigationNavStateEnroute) { GMSNavigationStepInfo *currentStep = navInfo.currentStep; if (currentStep) { ... roadNameLabel.text = currentStep.simpleRoadName; ... } } ... }
Swift
// ViewController.swift class SomeViewController: UIViewController { ... mapView.navigator?.add(self); ... } extension SomeViewController: GMSNavigatorListener { func navigator(_ navigator: GMSNavigator, didUpdateNavInfo navInfo: GMSNavigationNavInfo) { // Get the current step information if navInfo.navState == .enroute { if let currentStep = navInfo.currentStep { ... roadNameLabel.text = currentStep.simpleRoadName ... } } } }
حالات التنقّل
استخدم السمة navState
من GMSNavigationNavInfo
للحصول على الحالة الحالية للتنقُّل، والتي تعتبر أحد ما يلي:
Enroute - تعني حالة
GMSNavigationNavStateEnroute
أن التنقل الإرشادية نشط في الوقت الحالي وأن المستخدم على المسار المقدم. تتوفر معلومات حول خطوة المناورة القادمة الحالية.إعادة التوجيه -
GMSNavigationNavStateRerouting
يعني أن التنقل قيد التقدم، ولكن الباحث يبحث عن مسار جديد. خطوة المناورة القادمة غير متوفرة، لأنه لا يوجد مسار جديد حتى الآن.متوقّف: تشير السمة
GMSNavigationNavStateStopped
إلى أنّ التنقّل قد انتهى. على سبيل المثال، تتوقف ميزة التنقّل عندما يخرج المستخدم من ميزة التنقّل في التطبيق. في نموذج التطبيق، تمحو حالةGMSNavigationNavStateStopped
معلومات التنقّل المعروضة لمنع عرض تعليمات الخطوات المتبقية.
إنشاء رموز للمناورات
يعرّف تعداد GMSNavigationManeuver
كل مناورة محتملة يمكن أن تحدث أثناء التنقل، ويمكنك
الحصول على مناورة لخطوة معيّنة من الخاصية maneuver
في
GMSNavigationStepInfo.
يجب إنشاء رموز للمناورة وإقرانها بالمناورات المرتبطة بها.
بالنسبة إلى بعض المناورات، يمكنك إعداد عملية ربط واحد لواحد برمز، مثل
GMSNavigationManeuverDestinationLeft
وGMSNavigationManeuverDestinationRight
.
ومع ذلك، نظرًا لأن بعض المناورات تشترك في خصائصها مع مناورات أخرى،
قد ترغب في ربط أكثر من مناورة واحدة بأيقونة واحدة. على سبيل المثال، يمكن ربط كل من GMSNavigationManeuverTurnLeft
وGMSNavigationManeuverOnRampLeft
برمز الانعطاف الأيسر.
تحتوي بعض المناورات على تصنيف إضافي "باتجاه عقارب الساعة" أو "عكس اتجاه عقارب الساعة"، الذي تحدّده حزمة SDK بناءً على جانب القيادة للبلد. على سبيل المثال، في البلدان التي تكون فيها القيادة على الجانب الأيسر من الطريق، يأخذ السائقون دوارًا أو الدوران على شكل حرف U في اتجاه عقارب الساعة، في حين تسير البلدان على الجانب الأيمن من الطريق عكس اتجاه عقارب الساعة. ترصد حزمة تطوير البرامج (SDK) للتنقّل ما إذا كانت المناورة ستحدث في حركة المرور على الجانب الأيسر أو الأيمن وتخرج المناورة المناسبة. لذلك، قد تختلف أيقونة المناورة الخاصة بك من مناورة في اتجاه عقارب الساعة عن مناورة عكس اتجاه عقارب الساعة.
التوسيع لعرض رموز أمثلة لمناورات مختلفة
رمز النموذج | مناورات اتّجاهات مفصّلة |
---|---|
DEPART UNKNOWN |
|
STRAIGHT ON_RAMP_UNSPECIFIED OFF_RAMP_UNSPECIFIED NAME_CHANGE
|
|
TURN_RIGHT ON_RAMP_RIGHT
|
|
TURN_LEFT ON_RAMP_LEFT
|
|
TURN_SLIGHT_RIGHT ON_RAMP_SLIGHT_RIGHT OFF_RAMP_SLIGHT_RIGHT
|
|
TURN_SLIGHT_LEFT ON_RAMP_SLIGHT_LEFT OFF_RAMP_SLIGHT_LEFT
|
|
TURN_SHARP_RIGHT ON_RAMP_SHARP_RIGHT OFF_RAMP_SHARP_RIGHT
|
|
TURN_SHARP_LEFT ON_RAMP_SHARP_LEFT OFF_RAMP_SHARP_LEFT
|
|
TURN_U_TURN_COUNTERCLOCKWISE ON_RAMP_U_TURN_COUNTERCLOCKWISE OFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
|
TURN_U_TURN_CLOCKWISE ON_RAMP_U_TURN_CLOCKWISE OFF_RAMP_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_RIGHT_CLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_STRAIGHT_CLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SLIGHT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_LEFT_CLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_SHARP_LEFT_CLOCKWISE
|
|
ROUNDABOUT_U_TURN_COUNTERCLOCKWISE
|
|
ROUNDABOUT_U_TURN_CLOCKWISE
|
|
ROUNDABOUT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_CLOCKWISE
|
|
ROUNDABOUT_EXIT_COUNTERCLOCKWISE
|
|
ROUNDABOUT_EXIT_CLOCKWISE
|
|
MERGE_RIGHT OFF_RAMP_RIGHT
|
|
MERGE_LEFT OFF_RAMP_LEFT
|
|
FORK_RIGHT TURN_KEEP_RIGHT ON_RAMP_KEEP_RIGHT OFF_RAMP_KEEP_RIGHT
|
|
FORK_LEFT TURN_KEEP_LEFT ON_RAMP_KEEP_LEFT OFF_RAMP_KEEP_LEFT
|
|
MERGE_UNSPECIFIED
|
|
DESTINATION
|
|
DESTINATION_RIGHT
|
|
DESTINATION_LEFT
|
|
FERRY_BOAT
|
|
FERRY_TRAIN
|