Bu sayfada, özel gezinme deneyiminin bir parçası olarak özelleştirilmiş rehberlik oluşturmak için uygulayacağınız üst düzey adımlar ele alınmaktadır.
Bu işlem, Rotada gezinme bölümünde açıklanan işlemden aşağıdaki açılardan farklıdır:
- Önce bağımsız bir gezinme oturumu oluşturur ve görüntüleme denetleyicisini çağırarak değil, oturum üzerinden bir gezgin örneği elde edersiniz.
- Gezinme etkinliklerine yanıt vermek ve bu etkinlikleri yönetmek için bir etkinlik işleyicisi oluşturursunuz.
GMSNavigationService.createNavigationSession
kullanarak bir gezinme oturumu oluşturun vesetDestination
çağrısıyla gezinmeye başlayın. Google navigasyon deneyimi, navigasyon haritası görünümü aracılığıyla navigasyon cihazını çağrdığındaGMSNavigationServices
, bir kullanıcı arayüzü örneğinden bağımsız olarak bir navigasyon oturumundan etkinlik akışı kontrol eder ve alır. Bu, kullanıcı arayüzü olmadan çalışabileceği veya kullanıcı arayüzüne dayalı herhangi bir deneyime aktarılabileceği anlamına gelir. Bu yaklaşımda, son referans kaldırılana kadar gezinme oturumu uygulamanızda çalışmaya devam eder.- Yola göre konum sağlayıcı oluşturma. Uygulamanızın sürekli konum izleme yapmasını istiyorsanız (ör. rota üzerinde mavi nokta içeren bir navigasyon görünümü görüntülerken) konum sağlayıcıyı kullanın.
GMSNavigatorListener
protokolünü uygulayarak ayrıntılı adım adım yol tarifi 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:- Talimatları kolayca ekrana yansıtmak için yalnızca metin içeren alanlar uygulayın.
- Kendi kullanıcı arayüzünüz için alanlar tasarlayın ve doldurun.
- Gezinme simülasyon aracı oluşturma. Bu, geliştirme ve test için gereklidir.
Bağımsız bir gezinme oturumu oluşturma
Demodaki aşağıdaki kod snippet'i, gezinmenin görünüm denetleyicisinden bağımsız olarak oluşturulduğunu gösterir. Ardından kod, yol üzerinde yakalanan mevcut 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;
Gezinme özelliğini özel deneyimden Google deneyimine aktarma
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'inde, uygulamanızın haritayı paylaşırken bu geçişi nasıl yaptığı da gösterilir.
`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];
[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];
`…`
[`_mapView enableNavigationWithSession:_navigationSession`];