الاستماع إلى أحداث التنقّل

استخدم هذا الدليل لتمكين تطبيقك من الاستماع إلى مجموعة متنوعة من الأحداث التي تتغير أثناء تحرك المستخدم على طول المسار والاستجابة لها. لا يتناول هذا الدليل تحديد مسار، ويستجيب فقط للأحداث على طول المسار.

نظرة عامة

تزودك حزمة SDK للتنقل لنظام التشغيل iOS بمستمعين مرتبطين بموقع المستخدم وظروفه على طول المسار وبيانات هامة حول الوقت والمسافة. في وحدة التحكّم في عرض الخريطة، يحتاج تطبيقك إلى اعتماد البروتوكولات لهؤلاء المستمعين: GMSRoadSnappedLocationProviderListener وGMSNavigatorListener.

تعرض هذه القائمة طرق المستمعين المتاحة لأحداث التنقّل:

الاطّلاع على الرمز

بيان التوافق مع البروتوكولات المطلوبة

قبل تنفيذ طرق التنقل، يجب أن تتبنى وحدة التحكم في العرض البروتوكولات التالية:

Swift

class ViewController: UIViewController، GMSNavigatorListener، وGMSRoadSnappedLocationProviderListener {

Objective-C

@interface ViewController () <gmsnavigatorlistener, gmswidesnappedlocationproviderlistener=""></gmsnavigatorlistener,>

@end

بعد استخدام بروتوكولات التنقل، اضبط المستمعين على وحدة التحكم في العرض. على سبيل المثال، يمكنك إضافة الرمز التالي إلى الطريقة viewDidLoad().

Swift

mapView.navigator?.add(self) mapView.RoadSnappedLocationProvider?.add(self)

Objective-C

[_mapView.navigator addListener:self]; [_mapView.RoadSnappedLocationProvider addListener:self];

تلقّي تحديثات الموقع الجغرافي أو إيقافها

تحديثات الموقع الجغرافي مطلوبة لعرض مستوى تقدّم المستخدم على الخريطة.

يعرض مثيل location السمات التالية:

خاصية الموقع الجغرافي الوصف
الارتفاع الارتفاع الحالي.
coordinate.latitude إحداثي خط العرض الحالي للطريق المتقاطع.
coordinate.longitude إحداثي خط الطول الحالي المرتبط بالطريق.
دورة الاتجاه الحالي بالدرجات
السرعة السرعة الحالية.
timestamp تاريخ/وقت القراءة الحالية.

لتلقّي إشعارات مستمرة على الموقع الجغرافي، يُرجى الاتصال بـ mapView.roadSnappedLocationProvider.startUpdatingLocation واستخدام GMSRoadSnappedLocationProviderListener للتعامل مع حدث didUpdateLocation.

يوضح المثال التالي استدعاء startUpdatingLocation:

Swift

mapView.roadSnappedLocationProvider.startUpdatingLocation()

Objective-C

[_mapView.ROADSnappedLocationProvider startupgradeLocation]،

ينشئ الرمز التالي GMSRoadSnappedLocationProviderListener الذي يعالج حدث didUpdateLocation.

Swift

Func locationProvider(_ locationProvider: GMSRoadSnappedLocationProvider, didUpdate location: CLLocation) { print("Location: (location.description)") }

Objective-C

  • (vit)locationProvider:(GMSRoadSnappedLocationProvider *)locationProvider didUpdateLocation:(CLLocation *)location { NSLog(@"Location: %@", location.description); }

لتلقّي إشعارات بشأن الموقع الجغرافي عندما يكون التطبيق مفعّلاً في الخلفية، اضبِط allowsBackgroundLocationUpdates على "صحيح":

Swift

mapView.RoadSnappedLocationProvider.allowsBackgroundLocationUpdates = true

Objective-C

_mapView.RoadSnappedLocationProvider.allowsBackgroundLocationUpdates = YES;

جارٍ رصد أحداث الوصول

يستخدم تطبيقك حدث didArriveAtWaypoint لرصد وقت الوصول إلى وجهة معيّنة. يمكنك استئناف التوجيه والانتقال إلى نقطة الطريق التالية من خلال الاتصال بـ continueToNextDestination()، ثم إعادة تفعيل الإرشادات. على تطبيقك إعادة تفعيل الإرشادات بعد طلب الاتصال بـ continueToNextDestination().

بعد أن يستدعي التطبيق continueToNextDestination، لن تتوفر بيانات حول الوجهة السابقة في أداة التنقّل بعد ذلك. إذا كنت تريد تحليل المعلومات المتعلقة بمرحلة المسار، يجب عليك استردادها من برنامج التنقل قبل استدعاء continueToNextDestination().

يوضّح مثال الرمز البرمجي التالي طريقة للتعامل مع حدث didArriveAtWaypoint:

Swift

Func navigator(_ navigator: GMSNavigator, DoPrepareAtwaypoint: GMS NavigationWaypoint) { print("لقد وصلت إلى: (waypoint.title)") mapView.navigator?.continueToNextDestination() mapView.navigator?.isGuidanceActive = true }

Objective-C

  • (face)navigator:(GMSNavigator *)navigator didReachAtWaypoint:(GMS NavigationWaypoint *)waypoint { NSLog(@"لقد وصلت إلى: %@", الطريقةpoint.title); [_mapView.navigator continueToNextDestination]; _mapView.navigator.guidanceActive = YES; }

تلقي تحديثات تغيير المسار

لتلقّي إشعار عند تغيير المسار، أنشِئ طريقة للتعامل مع حدث navigatorDidChangeRoute. يمكنك الوصول إلى المسار الجديد باستخدام السمتَين routeLegs وcurrentRouteLeg في GMSNavigator.

Swift

Func navigatorDidChangeRoute(_ navigator: GMSNavigator) { print("تم تغيير المسار.") }

Objective-C

  • (vit)navigatordoesChangeRoute:(GMSNavigator *)navigator { NSLog(@"The path has been changes."); }

وقت الاستلام لتحديثات الوجهة

لتلقّي آخر المعلومات عن التحديثات المتعلّقة بالوجهة، عليك إنشاء طريقة للتعامل مع حدث didUpdateRemainingTime. توفّر المعلَمة time الوقت المقدَّر بالثواني إلى حين الوصول إلى الوجهة التالية.

Swift

eventc navigator(_ navigator: GMSNavigator, doesUpdateRemainingTime time: TimeInterval) { print("Time to next destination: (time)") }

Objective-C

  • (vit)navigator:(GMSNavigator *)navigator didUpdateRemainingTime:(NSTimeInterval)time { NSLog(@"Time to next destination: %f", time); }

لضبط الحدّ الأدنى للتغيير في الوقت المقدَّر للوجهة التالية، اضبط السمة timeUpdateThreshold على GMSNavigator. يتم تحديد القيمة بالثواني. وفي حال عدم ضبط هذه السمة، ستستخدم الخدمات القيمة التلقائية التي تبلغ ثانية واحدة.

Swift

navigator?.timeUpdateThreshold = 10

Objective-C

navigator.timeUpdateThreshold = 10،

جارٍ استلام تحديثات المسافة إلى الوجهة

لتلقّي إشعارات حول المسافة المتواصلة للوصول إلى الوجهة، يمكنك إنشاء طريقة للتعامل مع حدث didUpdateRemainingDistance. توفر المعلمة distance المسافة المقدَّرة بالمتر إلى الوجهة التالية

Swift

cannot translate }

Objective-C

  • (vit)navigator:(GMSNavigator *)navigator didUpdateRemainingSpace:(CLLocation متابعة)distance { مزدوجة الأميال = distance * 0.00062137; NSLog(@"%@", [NSString stringWithFormat:@"المسافة إلى الوجهة التالية: %.2f.", mile]); }

لضبط الحدّ الأدنى للتغيير في المسافة المقدَّرة إلى الوجهة التالية، اضبط السمة distanceUpdateThreshold على GMSNavigator (القيمة محدّدة بالمتر). في حال عدم ضبط هذه السمة، ستستخدم الخدمات القيمة التلقائية التي تبلغ مترًا واحدًا.

Swift

navigator?.distanceUpdateThreshold = 100

Objective-C

navigator.distanceUpdateThreshold = 100،

تلقي تحديثات حركة المرور

للحصول على تحديثات مستمرة لتدفق حركة المرور للمسار المتبقي، أنشئ طريقة للتعامل مع حدث didUpdateDelayCategory. عند استدعاء delayCategoryToNextDestination، يتم عرض GMSNavigationDelayCategory التي تكون فيها قيمة من 0 إلى 3. وتعتمد تحديثات الفئة على الموضع الحالي لمستخدم التطبيق. إذا كانت بيانات حركة المرور غير متوفرة، تعرض GMSNavigationDelayCategory القيمة 0. تشير الأرقام، 1-3، إلى زيادة التدفق من الخفيف إلى الثقيل.

Swift

cannot translate

Objective-C

  • (vit)navigator:(GMSNavigator *)navigator didUpdateDelayCategory:(GMS NavigationDelayCategory)delayCategory { NSLog(@"Traffic flow to next destination: %ld", (long)delayCategory); }

تعرض السمة GMSNavigationDelayCategory مستويات التأخير التالية:

فئة التأخير الوصف
GMSNavigationDelayCategoryNoData 0 - غير متاح، لا توجد بيانات لحركة المرور أو :
المسار.
GMSNavigationDelayCategoryHeavy 1 - كثيف.
GMSNavigationDelayCategoryMedium 2 - متوسط.
GMSNavigationDelayCategoryLight 3 - فاتح

جارٍ تلقّي تعديلات بشأن السرعة

لتلقّي آخر الأخبار عند تجاوز السائق الحدّ الأقصى للسرعة، يمكنك إنشاء طريقة للتعامل مع حدث didUpdateSpeedingPercentage.

Swift

// أداة الاستماع للتعامل مع الأحداث السريعة. Func navigator( _ navigator: GMSNavigator, doUpdateSpeedingPercentPercentAbovelimited: CGFloat ) { print("Speed is (percentageAboveالحد) أعلى من الحد.") }

Objective-C

// أداة الاستماع للتعامل مع الأحداث المتسارعة. - ( فسيتم

تغيير وضع الإضاءة المقترَح

لتلقّي آخر المعلومات حول التغييرات المقدَّرة في الإضاءة، يمكنك إنشاء طريقة للتعامل مع حدث didChangeSuggestedLightingMode.

Swift

// تحديد مستمع للتغييرات المقترحة على وضع الإضاءة. eventc navigator(_ navigator: GMSNavigator, dayChangeSuggestedLightingMode lensMode: GMS NavigationLightingMode) { print("Suggested Light Mode has updated: (String(describing: للخدمات)")

// إجراء التغيير المقترح. mapView.lightingMode = lightMode }

Objective-C

// تحديد أداة معالجة للتغييرات المقترحة على وضع الإضاءة. -(vit)navigator:(GMSNavigator *)navigator does ChangeSuggestedLightingMode: (GMS NavigationLightingMode)lightingMode { NSLog(@"Suggested Light mode changed: %ld", (long)lightingMode);

// إجراء التغيير المقترَح. _mapView.lightingMode = lightMode; }