Cree orientación personalizada

En esta página, se describen los pasos generales que debes seguir para crear instrucciones personalizadas como parte de una experiencia de navegación personalizada.

Este proceso difiere del proceso descrito en Navega una ruta de la siguiente manera:

  • Primero, estableces una sesión de navegación de forma independiente y obtienes una instancia de navegador a través de la sesión en lugar de llamar al controlador de vista.
  • Configuras un objeto de escucha de eventos para responder a los eventos de navegación y administrarlos.
  1. Crea una sesión de navegación con GMSNavigationService.createNavigationSession y comienza la navegación con una llamada a setDestination. Cuando la experiencia de navegación de Google invoca al navegador a través de la vista de mapa de navegación, GMSNavigationServices controla y recibe una transmisión de eventos de una sesión de navegación independientemente de una instancia de IU. Esto significa que puede ejecutarse sin una IU o pasar a cualquier experiencia basada en la IU. Con este enfoque, la sesión de navegación continúa ejecutándose en tu app hasta que se quita la última referencia.

  2. Establece un proveedor de ubicación ajustada a la ruta. Usa el proveedor de ubicación si quieres que tu app tenga un monitoreo continuo de la ubicación, como cuando se muestra una vista de navegación con un punto azul a lo largo de la ruta.

  3. Configura un objeto de escucha para obtener instrucciones detalladas paso a paso mediante la implementación del protocolo GMSNavigatorListener. Luego, transforma esa información en lo que sea necesario para tu experiencia de navegación personalizada. Por ejemplo:

    1. Implementa campos solo de texto para la transmisión de pantalla simple de instrucciones.
    2. Diseña y propaga campos para tu propia IU.
  4. Configura un simulador de navegación. Esto es necesario para el desarrollo y las pruebas.

Crea una sesión de navegación independiente

En el siguiente fragmento de código de la demostración, se muestra la navegación establecida de forma independiente del controlador de vista. Luego, el código agrega un mapa general configurado para mostrar la ubicación actual ajustada a la ruta.

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

Cómo pasar la navegación de una experiencia personalizada a la experiencia de Google

En este fragmento de código, se muestra cómo tu app puede permitir que el usuario ingrese a la experiencia de navegación de Google desde una experiencia de navegación personalizada. En este fragmento de código, también se muestra cómo tu app realiza esta transición mientras comparte el mapa.

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

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

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];