Créer des conseils personnalisés

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

Ce processus diffère de celui décrit dans Parcourir un itinéraire comme suit:

  • Vous devez d'abord établir une session de navigation indépendamment et obtenir une instance de navigateur via la session plutôt qu'en appelant 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 vue de carte de navigation, GMSNavigationServices contrôle et reçoit un flux d'événements à partir 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. Définir un fournisseur de position avec alignement sur la route Utilisez le fournisseur de position si vous souhaitez que votre application dispose d'une surveillance continue de la position, par exemple lorsque vous affichez une vue de navigation avec un point bleu le long du parcours.
  3. Configurez un écouteur pour obtenir des instructions détaillées en implémentant le protocole GMSNavigatorListener. Transformez ensuite ces informations en tout ce dont vous avez besoin pour votre expérience de navigation personnalisée. Exemple :
    1. Implémentez des champs textuels uniquement pour diffuser facilement des itinéraires sur un écran.
    2. Concevez et renseignez les champs de votre propre interface utilisateur.
  4. Configurez 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 carte d'ensemble configurée pour afficher l'emplacement actuel de la route.

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

Transférer la navigation d'une expérience personnalisée vers 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`];