Özelleştirilmiş rehberlik oluşturma

Bu sayfada, özel gezinme deneyiminin bir parçası olarak özelleştirilmiş rehberlik oluşturmak için uyguladığınız üst düzey adımlar ele alınmaktadır.

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

  • Öncelikle bağımsız olarak bir gezinme oturumu oluşturur ve görünüm denetleyicisini çağırmak yerine oturum aracılığıyla bir gezinme örneği alırsınız.
  • Geçiş etkinliklerine yanıt vermek ve bunları yönetmek için bir etkinlik işleyici ayarlarsınız.
  1. GMSNavigationService.createNavigationSession kullanarak bir gezinme oturumu oluşturun ve setDestination çağrısıyla gezinmeyi 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, arayüz olmadan çalışabileceği veya herhangi bir arayüz tabanlı deneyime aktarılabileceği anlamına gelir. Bu yaklaşımla, son referans kaldırılana kadar gezinme oturumu uygulamanızda çalışmaya devam eder.
  2. Yola sabitlenmiş bir konum sağlayıcı oluşturun. Uygulamanızın sürekli konum izlemesi yapmasını istiyorsanız (ör. rota boyunca mavi nokta içeren 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 yol tarifi için bir dinleyici ayarlayın. Ardından, bu bilgileri özel gezinme deneyiminiz için gereken her şeye dönüştürün. Örneğin:
    1. Yol tariflerinin basit bir şekilde ekran yayını için yalnızca metin içeren alanlar uygulayın.
    2. Kendi kullanıcı arayüzünüz için alanlar tasarlayıp doldurun.
  4. Gezinme simülatörü ayarlama Bu, geliştirme ve test için gereklidir.

Bağımsız bir gezinme 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 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;

Özel deneyimden Google deneyimine gezinme aktarımı

Bu kod snippet'i, uygulamanızın kullanıcının özel bir gezinme deneyiminden Google gezinme 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`];