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

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

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

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