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

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

این فرآیند با فرآیند توضیح داده شده در مسیریابی به شرح زیر متفاوت است:

  • ابتدا یک جلسه ناوبری به طور مستقل ایجاد می کنید و یک نمونه ناوبر را از طریق جلسه به جای فراخوانی کنترلر مشاهده دریافت می کنید.
  • شنونده رویداد را برای پاسخگویی و مدیریت رویدادهای پیمایش تنظیم می‌کنید.
  1. یک جلسه ناوبری با استفاده از GMSNavigationService.createNavigationSession ایجاد کنید و ناوبری را با یک تماس setDestination شروع کنید. در جایی که تجربه ناوبری Google، ناوبر را از طریق نمای نقشه پیمایش فراخوانی می کند، GMSNavigationServices جریانی از رویدادها را از یک جلسه ناوبری به طور مستقل از یک نمونه UI کنترل و دریافت می کند. این بدان معنی است که می تواند بدون رابط کاربری اجرا شود یا به هر تجربه مبتنی بر UI منتقل شود. با این رویکرد، جلسه ناوبری در برنامه شما تا زمانی که آخرین مرجع از آن حذف شود، به اجرا ادامه می‌دهد.
  2. یک ارائه‌دهنده موقعیت‌یابی جاده‌ای ایجاد کنید . اگر می‌خواهید برنامه‌تان نظارت مستمر موقعیت مکانی داشته باشد، از ارائه‌دهنده موقعیت مکانی استفاده کنید، مانند هنگام نمایش نمای ناوبری با نقطه آبی در طول مسیر.
  3. با پیاده سازی پروتکل GMSNavigatorListener شنونده ای را برای راهنمایی دقیق گام به گام تنظیم کنید . سپس، آن اطلاعات را به هر آنچه برای تجربه ناوبری سفارشی شما نیاز است تبدیل کنید. مثلا:
    1. برای ارسال ساده جهت ها، فیلدهای متنی را پیاده سازی کنید.
    2. فیلدها را برای رابط کاربری خود طراحی و پر کنید.
  4. یک شبیه ساز ناوبری راه اندازی کنید . این برای توسعه و آزمایش ضروری است.

یک جلسه ناوبری مستقل ایجاد کنید

قطعه کد زیر از نسخه ی نمایشی، ناوبری را نشان می دهد که مستقل از کنترل کننده view ایجاد شده است. سپس کد یک نقشه نمای کلی را اضافه می کند که پیکربندی شده است تا موقعیت فعلی جاده را نشان دهد.

// 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`];