إنشاء إرشادات مخصّصة

تتناول هذه الصفحة الخطوات العامة التي تتّبعها لإنشاء إرشادات مخصّصة كجزء من تجربة تنقّل مخصّصة.

تختلف هذه العملية عن العملية الموضّحة في مقالة التنقّل في مسار على النحو التالي:

  • عليك أولاً إنشاء جلسة تنقّل بشكل مستقل والحصول على مثيل للتنقّل من خلال الجلسة بدلاً من استدعاء وحدة التحكّم في العرض.
  • يمكنك إعداد متتبِّع الأحداث للردّ على أحداث التنقّل وإدارتها.
  1. أنشئ جلسة تنقّل باستخدام GMSNavigationService.createNavigationSession وابدأ التنقّل من خلال طلب setDestination. في حين أنّ تجربة التنقّل في Google تستدعي المتصفّح من خلال عرض خريطة التنقّل، يتحكّم GMSNavigationServices في مجموعة من الأحداث ويتلقّاها من جلسة تنقّل بشكل مستقل عن مثيل واجهة المستخدم. هذا يعني أنّه يمكن تشغيله بدون واجهة مستخدم أو نقله إلى أي تجربة مستندة إلى واجهة المستخدم. باستخدام هذا الأسلوب، يستمر تشغيل جلسة التنقّل في تطبيقك إلى أن تتم إزالة آخر مرجع منها.

  2. إنشاء موفّر موقع جغرافي مرتبط بالطريق استخدِم موفّر الموقع الجغرافي إذا كنت تريد أن يراقب تطبيقك الموقع الجغرافي باستمرار، مثلاً عند عرض شاشة تنقّل مع نقطة زرقاء على طول المسار.

  3. إعداد مستمع للحصول على اتجاهات مفصّلة من خلال تنفيذ بروتوكول GMSNavigatorListener بعد ذلك، يمكنك تحويل هذه المعلومات إلى ما هو مطلوب لتجربة التنقل المخصصة. على سبيل المثال:

    1. استخدِم حقولاً نصية فقط لبث الاتجاهات على الشاشة ببساطة.
    2. صمِّم الحقول واملأها لواجهة المستخدم الخاصة بك.
  4. إعداد محاكي للتنقل وهذا ضروري لأغراض التطوير والاختبار.

إنشاء جلسة تنقّل مستقلة

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

// Create the navigation session.

 _navigationSession = [GMSNavigationServices createNavigationSession];
 GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
     _navigationSession.roadSnappedLocationProvider;
 [roadSnappedLocationProvider startUpdatingLocation];
 GMSNavigator *navigator = _navigationSession.navigator;
 [navigator addListener:self];
 navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
 navigator.sendsBackgroundNotifications = NO;
 _navigationSession.started = YES;
​​ [navigator setDestinations:@[ destination ]
                   callback:^(GMSRouteStatus routeStatus) {
                      // …handle changes in route status.
                    }];

 // Add an overview map.
 _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
 [self.mainStackView addArrangedSubview:_mapView];
 [self.mainStackView setNeedsLayout];
 _mapView.settings.compassButton = YES;
 _mapView.delegate = self;
 _mapView.myLocationEnabled = YES;
 _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;

نقل التنقّل من تجربة مخصّصة إلى تجربة Google

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

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];