تتضمّن هذه الصفحة الخطوات العامة التي تتّبعها لإنشاء إرشادات مخصّصة كجزء من تجربة تنقّل مخصّصة.
تختلف هذه العملية عن العملية الموضّحة في مقالة التنقّل في طريق على النحو التالي:
- عليك أولاً إنشاء جلسة تنقّل بشكل مستقل والحصول على مثيل لـ "أداة التنقّل" من خلال الجلسة بدلاً من استدعاء أداة التحكّم في العرض.
- يمكنك إعداد أداة معالجة الأحداث للردّ على أحداث التنقّل وإدارتها.
أنشئ جلسة تنقّل باستخدام
GMSNavigationService.createNavigationSessionوابدأ التنقّل من خلال طلبsetDestination. عندما تستدعي تجربة التنقّل من Google أداة التنقّل من خلال عرض خريطة التنقّل، تتحكّمGMSNavigationServicesفي مجموعة من الأحداث وتتلقّاها من جلسة تنقّل بشكل مستقل عن مثيل واجهة المستخدم. وهذا يعني أنّه يمكن تشغيلها بدون واجهة مستخدم أو تمريرها إلى أي تجربة مستندة إلى واجهة المستخدم. باستخدام هذا الأسلوب، يستمر تشغيل جلسة التنقّل في تطبيقك إلى أن تتم إزالة آخر مرجع منها.تحديد موفّر خدمة لتحديد الموقع الجغرافي على الطرق استخدِم موفّر الموقع الجغرافي إذا كنت تريد أن يتيح تطبيقك مراقبة الموقع الجغرافي بشكل مستمر، مثلاً عند عرض طريقة عرض للتنقّل مع نقطة زرقاء على طول المسار.
إعداد أداة معالجة للحصول على إرشادات تفصيلية خطوة بخطوة من خلال تنفيذ بروتوكول
GMSNavigatorListenerبعد ذلك، حوِّل هذه المعلومات إلى أي شيء مطلوب لتجربة التنقّل المخصّصة. على سبيل المثال:- استخدِم حقولاً نصية فقط لتسهيل مشاركة الاتجاهات على الشاشة.
- تصميم الحقول وتعبئتها لواجهة المستخدم الخاصة بك
إعداد محاكي للتنقّل هذا الإجراء ضروري لأغراض التطوير والاختبار.
إنشاء جلسة تنقّل مستقلة
يوضّح مقتطف الرمز البرمجي التالي من العرض التوضيحي عملية التنقّل التي تم إنشاؤها بشكل مستقل عن وحدة التحكّم في العرض. يضيف الرمز بعد ذلك خريطة إجمالية تم ضبطها لعرض الموقع الجغرافي الحالي الذي تم ربطه بالطريق.
// 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`];