ایجاد راهنمایی سفارشی‌شده

این صفحه مراحل سطح بالایی را که برای ایجاد راهنمایی سفارشی‌شده به‌عنوان بخشی از تجربه ناوبری سفارشی دنبال می‌کنید، پوشش می‌دهد.

این فرایند با فرایند شرح‌داده‌شده در پیمایش مسیر به‌صورت زیر متفاوت است:

  • ابتدا یک جلسه ناوبری به‌طور مستقل ایجاد می‌کنید و نمونه ناوبری را ازطریق جلسه به‌دست می‌آورید، نه با فراخوانی کنترل‌کننده نما.
  • شنونده رویدادی را برای پاسخ دادن به رویدادهای ناوبری و مدیریت آن‌ها راه‌اندازی می‌کنید.
  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`];