Créer des conseils personnalisés

Cette page décrit les grandes étapes à suivre pour créer des conseils personnalisés dans le cadre d'une expérience de navigation personnalisée.

Ce processus diffère du processus décrit dans la section Parcourir un itinéraire comme suit:

  • Vous établissez d'abord une session de navigation de manière indépendante et obtenez une instance de navigateur via la session au lieu d'appeler le contrôleur de vue.
  • Vous configurez un écouteur d'événements pour répondre aux événements de navigation et les gérer.
  1. Créez une session de navigation à l'aide de GMSNavigationService.createNavigationSession et commencez la navigation avec un appel setDestination. Lorsque l'expérience de navigation Google appelle le navigateur via la carte de navigation, GMSNavigationServices contrôle et reçoit un flux d'événements d'une session de navigation indépendamment d'une instance d'UI. Cela signifie qu'il peut s'exécuter sans UI ou être transmis à n'importe quelle expérience basée sur l'UI. Avec cette approche, la session de navigation continue de s'exécuter dans votre application jusqu'à ce que la dernière référence en soit supprimée.
  2. Établissez un fournisseur de localisation de capture de route. Utilisez le fournisseur de localisation si vous souhaitez que votre application surveille la position en continu, par exemple lorsque vous affichez une vue de navigation avec un point bleu sur l'itinéraire.
  3. Configurez un écouteur pour obtenir des instructions détaillées en implémentant le protocole GMSNavigatorListener. Ensuite, transformez ces informations en celles dont vous avez besoin pour votre expérience de navigation personnalisée. Exemple :
    1. Implémentez des champs de texte uniquement pour caster facilement des itinéraires à l'écran.
    2. Concevez et remplissez des champs pour votre propre interface utilisateur.
  4. Configurer un simulateur de navigation Cela est nécessaire pour le développement et les tests.

Créer une session de navigation indépendante

L'extrait de code suivant de la démonstration montre la navigation établie indépendamment du contrôleur de vue. Le code ajoute ensuite une vue d'ensemble configurée pour afficher la position actuelle de la route fermée.

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

Transmettre la navigation d'une expérience personnalisée à l'expérience Google

Cet extrait de code montre comment votre application peut permettre à l'utilisateur d'accéder à l'expérience de navigation Google à partir d'une expérience de navigation personnalisée. Cet extrait de code montre également comment votre application effectue cette transition lors du partage de la carte.

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

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

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];