Özelleştirilmiş rehberlik oluşturma

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

Bu işlem, aşağıdaki Güzergahta gezinme bölümünde açıklanan işlemden farklıdır:

  • Önce bağımsız olarak gezinme oturumu oluşturur ve görünüm denetleyicisini çağırmak yerine oturum aracılığıyla bir gezgin örneği edinirsiniz.
  • Gezinme etkinliklerini yanıtlamak ve yönetmek için bir etkinlik işleyici ayarlarsınız.
  1. GMSNavigationService.createNavigationSession kullanarak gezinme oturumu oluşturun ve setDestination çağrısıyla navigasyonu başlatın. Google gezinme deneyiminin gezinme haritası görünümü aracılığıyla gezgini çağırdığı durumlarda, GMSNavigationServices bir kullanıcı arayüzü örneğinden bağımsız olarak bir gezinme oturumundan etkinlik akışını kontrol eder ve alır. Yani, kullanıcı arayüzü olmadan çalışabilir veya kullanıcı arayüzü tabanlı herhangi bir deneyime geçirilebilir. Bu yaklaşımda, gezinme oturumu son referans kaldırılana kadar uygulamanızda çalışmaya devam eder.
  2. Yola kapalı bir konum sağlayıcı oluşturun. Uygulamanızın sürekli konum izleme özelliğine sahip olmasını istiyorsanız (ör. rota üzerinde mavi bir nokta olan bir navigasyon görünümü görüntülerken) konum sağlayıcıyı kullanın.
  3. GMSNavigatorListener protokolünü uygulayarak adım adım ayrıntılı rehberlik için bir dinleyici ayarlayın. Ardından bu bilgileri, özel gezinme deneyiminiz için ihtiyaca uygun olana dönüştürün. Örneğin:
    1. Yol tariflerinin basit ekran yayını için salt metin alanları uygulayın.
    2. Alanları kendi kullanıcı arayüzünüz için tasarlayın ve doldurun.
  4. Navigasyon simülatörü kurma. Bu, geliştirme ve test için gereklidir.

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

Demoda yer alan aşağıdaki kod snippet'inde, görünüm denetleyicisinden bağımsız olarak oluşturulan gezinme gösterilmektedir. Daha sonra kod, mevcut yol tutturulan 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;

Navigasyonu özel deneyimden Google deneyimine geçirme

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