توفر خلاصة البيانات باتّجاهات مفصّلة معلومات التنقّل فقط للأجهزة غير المصمم لإرشادات التنقل المستند إلى الخريطة. يوفر مناورات قادمة العناصر التي تقدمها:
- الرموز (اليسار، اليمين، دوران على شكل حرف U)
- تحويل الأرقام في الدوارات
- أسماء الطرق
- المسافات والوقت المقدرة إلى خطوة التنقل التالية أو النهائية الوجهة
ويمكنك استخدام الخلاصة المفصّلة للحصول على تجارب تتيح واجهة مستخدم حزمة تطوير البرامج (SDK) الخاصة بالتنقّل غير مناسبة، مثل شاشات العرض الصغيرة. بالنسبة على سبيل المثال، قد تستخدم هذا لراكبي المركبات ذات العجلتين، حيث يمكنك إرشادات التنقّل في المشروع فقط لمساعدتهم في الوصول إلى وجهاتهم بشكل أسرع وبثقة أكبر بأقل قدر من عوامل التشتيت.
عناصر عرض التنقّل الأساسية
الحقول الأساسية لكل خطوة انتقال هي اسم الطريق بالكامل، والمناورة والمسافة الإجمالية للخطوة، وتتوفر في GMSNavigationStepInfo.
بالنسبة إلى الرحلة الكاملة، قد ترغب في عرض الوقت المتبقي المسافة إلى الخطوة الحالية أو إلى الوجهة، وكلها متوفرة في GMSNavigationNavInfo تُظهر الصورة إلى اليمين مثالاً على عناصر التنقل الأساسية هذه.
إعداد أداة معالجة الحدث
لاستخدام بيانات التنقّل فقط، عليك تنفيذ أداة معالجة الأحداث في
حدث واحد (didChangeNavInfo
). ضمن مستمع الحدث، قم بالوصول إلى الرحلة
المعلومات خطوة بخطوة لتوفير التنقل منعطف للمستخدمين لديك.
لتنفيذ معالِجات الأحداث، يجب على وحدة التحكّم في طريقة العرض للخريطة تنفيذ
GMSNavigatorListener
والبروتوكول. للحصول على معلومات تفصيلية عن التعامل مع الأحداث في حزمة تطوير البرامج (SDK) للتنقل لنظام التشغيل iOS،
راجِع الاستماع إلى أحداث التنقّل.
جارٍ التعامل مع حدث "didChangeNavInfo
"
أنشِئ أداة معالجة حدث didChangeNavInfo
لإضافة الدعم المفصّلة إلى
تطبيقك. في أداة معالجة الحدث، استخدِم الفئات والتعدادات التالية للتحكّم
الاتّجاهات المفصّلة:
GMSNavigationNavInfo
— فئة تحدّد معلومات حول حالة التنقّلGMSNavigationStepInfo
— فئة تحدد المعلومات حول خطوة واحدة على طول مسار التنقل.GMSNavigationNavState
— تعداد يحدد الحالة الحالية للتنقل، مثل المسار أو إعادة التوجيه أو التوقف.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
للحصول على حالة التنقل الحالية، وهي إحدى الحالات التالية:
المسار - تعني الحالة
GMSNavigationNavStateEnroute
أن التنقل الموجه نشط حاليًا والمستخدم على المسار المحدد. معلومات حول تتوفر خطوة المناورة القادمة الحالية.إعادة التوجيه -
GMSNavigationNavStateRerouting
تعني أن التنقل قيد التقدم، لكن أن المستكشف يبحث عن مسار جديد. خطوة المناورة القادمة ليست لأنه لا يوجد مسار جديد حتى الآن.متوقف -
GMSNavigationNavStateStopped
يعني أن التنقل قد انتهى. على سبيل المثال: يتوقف التنقل عندما يخرج المستخدم من التنقل في التطبيق. في نموذج التطبيق، حالةGMSNavigationNavStateStopped
إلى محو عرض معلومات التنقل إلى وتمنع عرض تعليمات الخطوات العالقة.
إرشادات الممرات
تمثل حزمة SDK للتنقل الممرات في بطاقة انعطاف التنقل على النحو التالي
عنصرا البيانات GMSNavigationLane
وGMSNavigationLaneDirection
حاسمة
يمثل الكائن GMSNavigationLane
ممرًا محددًا أثناء التنقّل، ويحتوي على
قائمة من GMSNavigationLaneDirection
من العناصر التي تصف جميع الانعطافات
من هذا الممر.
يتم تحديد الاتجاه الموصى به الذي يجب أن يتخذه السائق في ممر باستخدام
الحقل "recommended
".
مثال على إرشادات الممرات
يوضح المقتطف التالي تمثيل البيانات للممرات المعروضة في لقطة الشاشة السابقة.
// Lane 1
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 2
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeNormalLeft, /*recommended=*/ true}]
// Lane 3
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false}]
// Lane 4
GMSNavigationLaneDirections =
[{/*GMSNavigationLaneShape=*/
GMSNavigationLaneShapeStraight, /*recommended=*/ false},
{/*GMSNavigationLaneShape=*/ GMSNavigationLaneShapeNormalRight, /*recommended=*/ false}]
صور إرشادات الممرات
تدعم حزمة SDK للتنقل إنشاء صور الممرات لكل خطوة تنقُّل
كما أوضحنا في GMSNavigationStepInfo
. تناسب هذه الرموز تحديد حجم الصور في CarPlay
من Google.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];
إنشاء رموز للمناورة
GMSNavigationManeuver
يحدد enum كل مناورة محتملة قد تحدث أثناء التنقل،
الحصول على المناورة لخطوة معيّنة من السمة 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
|
استخدام الرموز التي تم إنشاؤها
تدعم حزمة SDK للتنقل إنشاء رموز المناورة
GMSNavigationStepInfo
تناسب هذه الرموز ميزة تحديد حجم الصور في CarPlay
من Google.
Swift
let currentStepInfo = navInfo.currentStep let options = GMSNavigationStepImageOptions() options.maneuverImageSize = .square96 options.screenMetrics = UIScreen.mainScreen let maneuverImage = currentStepinfo.maneuverImage(options: options)
Objective-C
GMSNavigationStepInfo *stepInfo = navInfo.currentStep; GMSNavigationStepImageOptions *options = [[GMSNavigationStepImageOptions alloc] init]; options.maneuverImageSize = GMSNavigationManeuverImageSizeSquare96; options.screenMetrics = UIScreen.mainScreen; UIImage* maneuverImage = [stepInfo maneuverImageWithOptions:options];