تفعيل اتّجاهات مفصّلة للبيانات

توفّر خلاصة البيانات باتّجاهات مفصّلة معلومات التنقّل فقط للأجهزة غير المصمّمة لإرشادات التنقّل المستندة إلى الخريطة. حيث يوفر المناورات القادمة بالعناصر التي تقدمها:

  • الأيقونات (اليسار، اليمين، دوران على شكل حرف U)
  • تبديل الأرقام في الدوائر الدائرية
  • أسماء الطرق
  • المسافات والوقت المقدّر للوصول إلى خطوة التنقل التالية أو الوجهة النهائية

ويمكنك استخدام الخلاصة المفصّلة لإنشاء تجارب لا تكون فيها واجهة المستخدم الكاملة لحزمة تطوير البرامج (SDK) مناسبة للتنقّل، مثل شاشات العرض على الشاشات الصغيرة. على سبيل المثال، يمكنك استخدام هذا لراكبي المركبات ذات العجلتين، حيث يمكنك مشروع إرشادات التنقل فقط لمساعدتهم في الوصول إلى وجهاتهم بشكل أسرع وبثقة أكبر مع الحد من مصادر التشتيت.

عناصر عرض التنقّل الأساسية

شاشة هاتف محمول تعرض انعطافًا يسريًا قادمًا على بعد 100 قدم باتجاه
W Ahwanee Ave. في الجزء السفلي من الشاشة، يبلغ الوقت المتبقي إلى الوجهة 46 دقيقة، بينما تبلغ المسافة المتبقية 39 ميلاً.

الحقول الأساسية لكل خطوة تنقُّل هي الاسم الكامل للطريق، والمناورة، والمسافة الإجمالية للخطوة، والتي تتوفر في 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