تقدّم خلاصة بيانات الاتّجاهات المفصّلة معلومات التنقّل فقط إلى الأجهزة غير المصمّمة لتلقّي إرشادات التنقّل المستندة إلى الخريطة. وتوفّر هذه الخلاصة المناورات القادمة مع العناصر التي تقدّمها:
- الرموز (للانعطاف إلى اليسار أو اليمين أو الدوران للخلف)
- أرقام المنعطفات في الدوّارات
- أسماء الطرق
- المسافات والأوقات المقدَّرة للوصول إلى خطوة التنقّل التالية أو الوجهة النهائية
يمكنك استخدام خلاصة الاتّجاهات المفصّلة لإنشاء تجارب لا تكون فيها واجهة المستخدم الكاملة لحزمة تطوير البرامج للتنقّل مناسبة، مثل شاشات العرض الصغيرة. على سبيل المثال، يمكنك استخدام هذه الخلاصة لراكبي المركبات ذات العجلتين، حيث يمكنك عرض إرشادات التنقّل فقط لمساعدتهم في الوصول إلى وجهاتهم بشكل أسرع وبثقة أكبر مع الحدّ الأدنى من عوامل التشتيت.
عناصر عرض التنقّل الأساسية
الحقول الأساسية لكل خطوة تنقّل هي اسم الطريق الكامل،
المناورة، والمسافة الإجمالية للخطوة، وهي متوفّرة في
GMSNavigationStepInfo.
بالنسبة إلى الرحلة بشكل عام، قد تحتاج إلى عرض الوقت والمسافة المتبقّيين
للوصول إلى الخطوة الحالية أو إلى الوجهة، وكل ذلك متوفّر في
GMSNavigationNavInfo.
تعرض الصورة على يسار الصفحة مثالاً على عناصر التنقّل الأساسية هذه.
إعداد متتبِّع الأحداث
لاستخدام بيانات التنقّل فقط، عليك تنفيذ متتبِّع أحداث للحدث didChangeNavInfo. ضمن متتبِّع الأحداث، يمكنك الوصول إلى معلومات الرحلة والخطوات لتزويد المستخدمين باتّجاهات مفصّلة.
لتنفيذ معالجات الأحداث، يجب أن تنفّذ وحدة التحكّم في العرض الخاصة بالخريطة
GMSNavigatorListener
بروتوكول. لمعرفة معلومات مفصّلة عن معالجة الأحداث في الـ
Navigation SDK لأجهزة iOS، يُرجى الاطّلاع على الاستماع إلى أحداث التنقّل.
معالجة الحدث didChangeNavInfo
يمكنك إنشاء متتبِّع للحدث didChangeNavInfo لإضافة ميزة الاتّجاهات المفصّلة إلى تطبيقك. في متتبِّع الأحداث، استخدِم الفئات والتعدادات التالية للتحكّم في الاتّجاهات المفصّلة:
GMSNavigationNavInfo: فئة تحدّد معلومات عن حالة التنقّل.GMSNavigationStepInfo: فئة تحدّد معلومات عن خطوة واحدة على طول مسار التنقّل.GMSNavigationNavState: تعداد يحدّد الحالة الحالية للتنقّل، مثل أثناء الطريق أو إعادة التوجيه أو متوقّف.GMSNavigationDrivingSide: تعداد يحدّد ما إذا كانت هذه الخطوة على مسار القيادة على اليمين أو القيادة على اليسار.GMSNavigationManeuver: تعداد يحدّد إجراء التنقّل الذي يجب اتّخاذه، مثل الانعطاف إلى اليسار أو الانعطاف إلى اليمين.
في ما يلي مثال على أدوات معالجة الأحداث للحدث didChangeNavInfo:
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 ... } } } }
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; ... } } ... }
حالات التنقّل
استخدِم السمة navState في GMSNavigationNavInfo
للحصول على الحالة الحالية للتنقّل، وهي إحدى الحالات التالية:
أثناء الطريق : تشير الحالة
GMSNavigationNavStateEnrouteإلى أنّ التنقّل الموجَّه مفعَّل وأنّ المستخدم على المسار المقدَّم. تتوفّر معلومات عن خطوة المناورة القادمة الحالية.إعادة التوجيه :
GMSNavigationNavStateReroutingتشير إلى أنّ التنقّل قيد التقدّم، ولكنّ أداة التنقّل تبحث عن مسار جديد. لا تتوفّر خطوة المناورة القادمة، لأنّه ما مِن مسار جديد حتى الآن.متوقّف -
GMSNavigationNavStateStoppedتشير الحالة إلى أنّ التنقّل قد انتهى. على سبيل المثال، يتوقّف التنقّل عندما يخرج المستخدم من التنقّل في التطبيق. في التطبيق النموذجي، تؤدي الحالةGMSNavigationNavStateStoppedإلى محو عرض معلومات التنقّل لمنع عرض تعليمات الخطوات المتبقية.
توجيه خط السير
تمثّل حزمة تطوير البرامج للتنقّل خطوط السير في بطاقة منعطف التنقّل كـ
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}]
صور توجيه خط السير
تتيح حزمة تطوير البرامج للتنقّل إنشاء صور لخطوط السير لكل خطوة تنقّل كما هو موضّح في GMSNavigationStepInfo. تتلاءم هذه الرموز مع إرشادات تغيير حجم الصور في CarPlay.
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
كل مناورة ممكنة قد تحدث أثناء التنقّل، ويمكنك
الحصول على المناورة لخطوة معيّنة من السمة maneuver في
GMSNavigationStepInfo.
عليك إنشاء رموز المناورات وربطها بالمناورات المرتبطة بها.
بالنسبة إلى بعض المناورات، يمكنك إعداد عملية ربط فردية برمز، مثل GMSNavigationManeuverDestinationLeft وGMSNavigationManeuverDestinationRight. ومع ذلك، بما أنّ بعض المناورات تشترك في خصائص مع مناورات أخرى، قد تحتاج إلى ربط أكثر من مناورة برمز واحد. على سبيل المثال، يمكن ربط كل من GMSNavigationManeuverTurnLeft وGMSNavigationManeuverOnRampLeft برمز الانعطاف إلى اليسار.
تحتوي بعض المناورات على تصنيف إضافي "في اتجاه عقارب الساعة" أو "عكس اتجاه عقارب الساعة"، وتحدّد حزمة تطوير البرامج هذا التصنيف استنادًا إلى جانب القيادة في بلد معيّن. على سبيل المثال، في البلدان التي يتم فيها القيادة على الجانب الأيسر من الطريق، يسلك السائقون مستديرة أو ينعطفون للخلف في اتجاه عقارب الساعة، بينما في البلدان التي يتم فيها القيادة على الجانب الأيمن من الطريق، يسلك السائقون مستديرة أو ينعطفون للخلف عكس عقارب الساعة. ترصد حزمة تطوير البرامج للتنقّل ما إذا كانت المناورة تحدث في حركة المرور على الجانب الأيسر أو الأيمن وتعرض المناورة المناسبة. لذلك، قد يختلف رمز المناورة للمناورة في اتجاه عقارب الساعة عن المناورة عكس اتجاه عقارب الساعة.
يمكنك توسيع هذا القسم للاطّلاع على أمثلة على الرموز لمناورات مختلفة
| رمز نموذجي | مناورات الاتّجاهات المفصّلة |
|---|---|
![]() |
DEPARTUNKNOWN |
![]() |
STRAIGHTON_RAMP_UNSPECIFIEDOFF_RAMP_UNSPECIFIEDNAME_CHANGE
|
![]() |
TURN_RIGHTON_RAMP_RIGHT
|
![]() |
TURN_LEFTON_RAMP_LEFT
|
![]() |
TURN_SLIGHT_RIGHTON_RAMP_SLIGHT_RIGHTOFF_RAMP_SLIGHT_RIGHT
|
![]() |
TURN_SLIGHT_LEFTON_RAMP_SLIGHT_LEFTOFF_RAMP_SLIGHT_LEFT
|
![]() |
TURN_SHARP_RIGHTON_RAMP_SHARP_RIGHTOFF_RAMP_SHARP_RIGHT
|
![]() |
TURN_SHARP_LEFTON_RAMP_SHARP_LEFTOFF_RAMP_SHARP_LEFT
|
![]() |
TURN_U_TURN_COUNTERCLOCKWISEON_RAMP_U_TURN_COUNTERCLOCKWISEOFF_RAMP_U_TURN_COUNTERCLOCKWISE
|
![]() |
TURN_U_TURN_CLOCKWISEON_RAMP_U_TURN_CLOCKWISEOFF_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_RIGHTOFF_RAMP_RIGHT
|
![]() |
MERGE_LEFTOFF_RAMP_LEFT
|
![]() |
FORK_RIGHTTURN_KEEP_RIGHTON_RAMP_KEEP_RIGHTOFF_RAMP_KEEP_RIGHT
|
![]() |
FORK_LEFTTURN_KEEP_LEFTON_RAMP_KEEP_LEFTOFF_RAMP_KEEP_LEFT
|
![]() |
MERGE_UNSPECIFIED
|
![]() |
DESTINATION
|
![]() |
DESTINATION_RIGHT
|
![]() |
DESTINATION_LEFT
|
![]() |
FERRY_BOAT
|
![]() |
FERRY_TRAIN
|
استخدام الرموز التي تم إنشاؤها
تتيح حزمة تطوير البرامج للتنقّل إنشاء رموز المناورات لـ GMSNavigationStepInfo معيّنة. تتلاءم هذه الرموز مع إرشادات تغيير حجم الصور في CarPlay.
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];







































