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

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

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

  • عليك أولاً إنشاء جلسة تنقُّل بشكل مستقل والحصول على مثيل أداة التنقّل من خلال الجلسة بدلاً من طلب وحدة التحكّم في طريقة العرض.
  • يمكنك إعداد أداة معالجة حدث للرد على أحداث التنقل وإدارتها.
  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`];