Özelleştirilmiş rehberlik oluşturma

Bu sayfada, özel gezinme deneyimi kapsamında özelleştirilmiş rehberlik oluşturmak için uyguladığınız üst düzey adımlar açıklanmaktadır.

Bu işlem, Rota üzerinde gezinme başlıklı makalede açıklanan işlemden şu şekilde farklıdır:

  • Önce bağımsız olarak bir navigasyon oturumu oluşturur ve görünüm denetleyicisini çağırmak yerine oturum aracılığıyla bir navigasyon örneği elde edersiniz.
  • Gezinme etkinliklerine yanıt vermek ve bunları yönetmek için bir etkinlik dinleyici ayarlarsınız.
  1. GMSNavigationService.createNavigationSession kullanarak bir rota izleme oturumu oluşturun ve setDestination çağrısıyla rota izlemeyi başlatın. Google navigasyon deneyimi, navigasyon haritası görünümü aracılığıyla navigatörü çağırdığında GMSNavigationServices, bir kullanıcı arayüzü örneğinden bağımsız olarak bir navigasyon oturumundan gelen etkinlik akışını kontrol eder ve alır. Bu, uygulamanın kullanıcı arayüzü olmadan çalışabileceği veya herhangi bir kullanıcı arayüzü tabanlı deneyime aktarılabileceği anlamına gelir. Bu yaklaşımda, son referans uygulamadan kaldırılana kadar navigasyon oturumu uygulamanızda çalışmaya devam eder.

  2. Yola sabitlenmiş konum sağlayıcı oluşturma Uygulamanızın sürekli konum izlemesi yapmasını istiyorsanız (ör. rota boyunca mavi noktalı bir navigasyon görünümü gösterirken) konum sağlayıcıyı kullanın.

  3. GMSNavigatorListener protokolünü uygulayarak ayrıntılı adım adım rehberlik için bir dinleyici ayarlayın. Ardından, bu bilgileri özel navigasyon deneyiminiz için gereken her şeye dönüştürün. Örneğin:

    1. Yol tariflerinin ekrana basit bir şekilde yansıtılması için yalnızca metin içeren alanlar kullanın.
    2. Kendi kullanıcı arayüzünüz için alanlar tasarlayıp doldurun.
  4. Navigasyon simülatörü ayarlama Bu, geliştirme ve test için gereklidir.

Bağımsız bir navigasyon oturumu oluşturma

Demodaki aşağıdaki kod snippet'inde, görünüm denetleyicisinden bağımsız olarak oluşturulan gezinme gösterilmektedir. Ardından kod, mevcut yola tutturulmuş konumu gösterecek şekilde yapılandırılmış bir Küçük genel bakış haritası ekler.

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

Navigasyonu özel bir deneyimden Google deneyimine geçirme

Bu kod snippet'i, uygulamanızın kullanıcının özel bir navigasyon deneyiminden Google navigasyon deneyimine girmesine nasıl izin verebileceğini gösterir. Bu kod snippet'i, uygulamanızın haritayı paylaşırken bu geçişi nasıl yaptığını da gösterir.

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];