تقدّم خلاصة البيانات التي تتضمّن اتّجاهات مفصّلة معلومات التنقّل فقط للأجهزة غير المصمّمة لتقديم إرشادات التنقّل المستندة إلى الخرائط. وتوفّر المناورات القادمة مع العناصر التي تقدّمها:
- رموز (يسار، يمين، انعطاف للخلف)
- أرقام المنعطفات في الدوارات
- أسماء الطرق
- المسافات والوقت المقدَّر للوصول إلى خطوة التنقّل التالية أو الوجهة النهائية
يمكنك استخدام خلاصة الاتجاهات المفصّلة لإنشاء تجارب لا تكون فيها واجهة مستخدم حزمة تطوير البرامج (SDK) للتنقّل الكاملة مناسبة، مثل شاشات العرض الصغيرة. على سبيل المثال، يمكنك استخدام هذه الميزة لراكبي المركبات ذات العجلتين، حيث يمكنك عرض إرشادات التنقّل فقط لمساعدتهم في الوصول إلى وجهاتهم بشكل أسرع وبثقة أكبر مع الحدّ من مصادر التشتيت.
عناصر عرض التنقّل الأساسية
الحقول الأساسية لكل خطوة تنقّل هي اسم الطريق الكامل والمناورة والمسافة الإجمالية للخطوة، وهي متاحة في GMSNavigationStepInfo.
بالنسبة إلى الرحلة ككل، قد تحتاج إلى عرض الوقت والمسافة المتبقيَين
للوصول إلى الخطوة الحالية أو إلى الوجهة، وكل هذه المعلومات متاحة في
GMSNavigationNavInfo.
تعرض الصورة على اليسار مثالاً على عناصر التنقّل الأساسية هذه.
إعداد متتبِّع الأحداث
لاستخدام بيانات التنقّل فقط، عليك تنفيذ متتبِّع أحداث للحدث didChangeNavInfo. ضمن متتبِّع الأحداث، يمكنك الوصول إلى معلومات الرحلة والخطوات لتقديم اتجاهات مفصّلة للمستخدمين.
لتنفيذ معالِجات الأحداث، يجب أن تنفّذ وحدة التحكّم في عرض الخريطة بروتوكول
GMSNavigatorListener. للحصول على معلومات تفصيلية حول معالجة الأحداث في حزمة تطوير البرامج (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
للحصول على الحالة الحالية للتنقّل، وهي إحدى الحالات التالية:
Enroute: تعني الحالة
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.
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 إلى رمز الانعطاف لليسار.
تحتوي بعض المناورات على تصنيف إضافي "في اتجاه عقارب الساعة" أو "عكس عقارب الساعة"، والذي تحدّده حزمة تطوير البرامج (SDK) استنادًا إلى جهة القيادة في بلد معيّن. على سبيل المثال، في البلدان التي تكون فيها القيادة على الجانب الأيسر من الطريق، يسلك السائقون المستديرة أو ينعطفون على شكل حرف U في اتجاه عقارب الساعة، بينما تسير البلدان التي تكون فيها القيادة على الجانب الأيمن من الطريق عكس عقارب الساعة. ترصد حزمة تطوير البرامج (SDK) للتنقّل ما إذا كانت المناورة تحدث في حركة المرور على الجانب الأيسر أو الأيمن وتُخرج المناورة المناسبة. لذلك، قد يختلف رمز المناورة بين المناورة في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة.
توسيع لعرض أمثلة على رموز المناورات المختلفة
| رمز العيّنة | الاتجاهات المفصّلة |
|---|---|
![]() |
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
|
استخدام الرموز التي تم إنشاؤها
تتيح حزمة تطوير البرامج (SDK) للتنقّل إنشاء رموز المناورات لـ 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];







































