Preguntas frecuentes
Datos sobre el producto
- ¿Cómo se debe mostrar el aviso de las Condiciones del Servicio del SDK de Navigation?
- ¿Qué idiomas son compatibles con las indicaciones por voz?
- ¿Se mantiene el rumbo cuando el conductor sale del modo de navegación?
- ¿Hay polilíneas disponibles cuando inicias o cambias una ruta?
- ¿Los usuarios de la app deben tener instalado Google Maps para dispositivos móviles?
- ¿El SDK de Navigation puede identificar el estacionamiento cerca de restaurantes y otros destinos?
- ¿El SDK de Navigation muestra la dirección del tráfico en los carriles cuando se acerca un punto de inflexión?
Issues
Red
- ¿Cómo controla el SDK de Navigation la conectividad deficiente?
- ¿Hay un modo sin conexión disponible?
Datos
- ¿Puedo recuperar todas las paradas o destinos de un viaje antes de comenzar la ruta?
- ¿Está disponible la guía de ruta paso a paso al comienzo de una ruta?
- ¿Cómo se comunica la hora estimada de llegada (ETA) a los usuarios de la app?
- ¿Se puede usar
RoadSnappedLocationProvider
para obtener la ubicación ajustada actual del conductor si la navegación no está en primer plano? - ¿El SDK de Navigation admite el geovallado?
- ¿Puedo inhabilitar las notificaciones cuando la app de Navigation está en segundo plano?
Personalización de la IU
- ¿Puedo codificar por color la mejor opción de ruta?
- ¿El SDK de Navigation puede mostrar la hora de llegada estimada del destino final?
- ¿Cómo puedo ocultar las actualizaciones de la hora de llegada?
- ¿Qué personalizaciones de IU están disponibles para las tarjetas del encabezado y el pie de página?
Enrutamiento
- ¿Puedo proporcionar una ruta específica a un conductor o quitar rutas alternativas?
- ¿Puedo mostrarle al conductor una etiqueta de destino diferente a la predeterminada?
- ¿Puedo usar el SDK de Navigation para hacer un seguimiento de las desviaciones de una ruta definida?
- ¿El conductor puede salir de la navegación sin completar la ruta?
Simulador
Workflows
Datos sobre el producto
- Tu app debe implementar un cuadro de diálogo con el aviso de las Condiciones del Servicio del SDK de Navigation que cada controlador debe aceptar. Este cuadro de diálogo le da al conductor la oportunidad de aceptar las Condiciones del Servicio. Con el SDK de Navigation, se proporciona un archivo de texto de los términos.
- En Android, usa el método
NavigationApi.showTermsAndConditionsDialog
para mostrar el cuadro de diálogo que contiene los términos. - En iOS, llama a
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName
. - Todos los idiomas compatibles con Google Maps para dispositivos móviles están disponibles automáticamente para el SDK de Navigation. Un dispositivo tiene un idioma de sistema predeterminado, y una app no puede cambiar esa configuración. Sin embargo, la app tiene acceso a más de 70 idiomas.
-
Sí. En Android, una vez que se inicia,
LocationListener
continúa ejecutándose en segundo plano. Tu app continúa ajustando la posición y mantiene el rumbo.En iOS, para seguir recibiendo actualizaciones de ubicación de posición y rumbo en segundo plano, implementa el ajuste de la ruta y establece
allowsBackgroundLocationUpdates
enYES
. -
Sí. Cuando se crea o modifica una ruta,
RouteChangeListener
proporciona polilíneas. - No, el SDK de Navigation no requiere que Google Maps para dispositivos móviles esté instalado en el dispositivo.
- No, el SDK de Navigation no proporciona esta funcionalidad en este momento.
- Sí. La dirección del tráfico está disponible y se muestra de forma predeterminada.
Issues
- En Xcode 12, las apps no se compilan correctamente para el simulador. ¿Cómo puedo solucionar este problema?
-
Para solucionar este problema, abre la configuración de compilación de tu proyecto de Xcode y agrega
arm64
aExcluded Architectures
solo para compilaciones de "Simulador de iOS".Para obtener más información, consulta la siguiente conversación sobre StackOverflow.
Red
- ¿Cómo controla el SDK de Navigation la conectividad deficiente?
- El SDK de Navigation almacena en caché previamente la ruta para cada recorrido. La información prealmacenada en caché incluye datos de ruta durante 15 a 20 minutos, y rutas alternativas en caso de que el conductor se desvíe de la ruta. El SDK de Navigation aproxima la posición con el GPS y los sensores del dispositivo.
- ¿Hay un modo sin conexión disponible?
- No. El SDK de Navigation no ofrece un modo sin conexión en este momento. Sin embargo, proporciona información almacenada en caché previamente para un recorrido.
Datos
- ¿Puedo recuperar todas las paradas y destinos de un viaje antes de iniciar la ruta?
-
Sí. En Android, para obtener las instrucciones sobre cómo llegar de una ruta, llama a
Navigator.getRouteSegments()
.En iOS, llama a
GMSNavigator.routeLegs(read)
. - ¿La guía de ruta paso a paso está disponible al comienzo de la ruta?
- Sí. El SDK de Navigation proporciona una lista de segmentos de ruta. Además, el conductor puede deslizar la tarjeta de instrucciones sobre cómo llegar en el encabezado para ver cada maniobra.
- ¿Cómo se comunica la hora de llegada estimada a los usuarios de la app?
-
En Android, sigue estos pasos para brindar información sobre la hora de llegada estimada a los usuarios de la app:
- Recupera el tiempo y la distancia de todos los puntos de referencia mediante
Navigator.getTimeAndDistanceList()
. - Reenvía esta información a la aplicación cliente como lo haces actualmente con la hora de llegada estimada del conductor.
En iOS, sigue estos pasos para brindar información sobre la hora de llegada estimada a los usuarios de la aplicación:
- Recupera los tramos del viaje con
Navigator.getRouteSegments()
. - Llama a
GMSNavigator.timeToNextDestination
para cada etapa del recorrido. - Reenvía la información de hora a la aplicación cliente como lo haces actualmente con la hora de llegada del conductor.
- Recupera el tiempo y la distancia de todos los puntos de referencia mediante
-
¿Se puede usar
RoadSnappedLocationProvider
para obtener la ubicación ajustada actual del conductor si la navegación no está en primer plano? -
Sí. En Android,
RoadSnappedLocationProvider
se ejecuta en segundo plano de forma predeterminada.En iOS, para que la navegación se siga ejecutando en segundo plano, implementa el objeto de escucha de
GMSRoadSnappedLocationProviderListener
y configura la propiedadallowsBackgroundLocationUpdates
comoTRUE
. - ¿El SDK de Navigation admite el geovallado?
-
No. En el contexto de la navegación,
remainingTimeOrdistanceChangeListener
tiene una ventaja sobre un geovallado simple. Es posible que el perímetro virtual no tenga en cuenta la geometría de la ruta y que no esté centrado en el punto exacto hasta el que navega el conductor.Puedes aproximar esta funcionalidad con
remainingTimeOrdistanceChangeListener
.- Establece el umbral para determinar la frecuencia de las devoluciones de llamada.
- Verifica la distancia restante hasta el destino.
Por ejemplo, si configuras el umbral en 100 m, recibirás una devolución de llamada cuando la distancia al destino cambie 100 m. A medida que disminuya la distancia, podrás actualizar este umbral a un valor más pequeño y recibir devoluciones de llamadas más frecuentes. Luego, inspecciona la distancia restante para determinar si estás lo suficientemente cerca del punto de partida o de destino.
En iOS, implementa el objeto de escucha
GMSNavigatorListener.didUpdateRemainingDistance
para administrar la distancia entre notificaciones. - ¿Puedo inhabilitar las notificaciones cuando la app de Navegación está en segundo plano?
-
Sí. En Android, usa
Navigator.setHeadsUpNotificationEnabled
para controlar las notificaciones. Este método tiene un argumento booleano.FALSE
inhabilita las notificaciones;TRUE
las habilita.En iOS, configura
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates
como NO para inhabilitar las notificaciones en segundo plano para las ubicaciones tomadas en la ruta.Para inhabilitar el procesamiento en segundo plano para otras notificaciones de ubicación, llama a
GMSNavigator.sendsBackgroundNotifications(NO)
.
Personalización de la IU
- ¿Puedo codificar por color la mejor opción de ruta?
- No. En este momento, no se admite la codificación por color de una opción de ruta específica.
- ¿El SDK de Navigation puede mostrar la hora de llegada estimada para el destino final?
-
Sí. En Android, usa los siguientes métodos:
- Recupera el tiempo y la distancia de todos los puntos de referencia mediante
Navigator.getTimeAndDistanceList()
. - Oculta la hora de llegada estimada del punto de referencia actual con
NavigationFragment.setEtaCardEnabled(false)
. - Renderiza la hora de llegada estimada de destino final.
En iOS, usa lo siguiente:
- Llamar a
GMSNavigator.routeLegs(read)
- En el último segmento, llama a
GMSNavigator.timeToNextDestination
. - Para ocultar la hora de llegada estimada del punto de referencia actual, usa
MSMapView.settings.navigationFooterEnabled=NO
en FALSE. - Renderiza la hora de llegada estimada de destino final.
- Recupera el tiempo y la distancia de todos los puntos de referencia mediante
- ¿Cómo puedo ocultar las actualizaciones de la hora de llegada estimada?
-
Puedes inhabilitar las tarjetas de hora de llegada con los siguientes métodos:
- En Android, usa
navigationView.setEtaCardEnabled(false)
. - En iOS, usa
GMSMapView.settings.navigationFooterEnabled=NO
.
- En Android, usa
-
En Android, usas
StylingOptions
para establecer el estilo del color de fondo. Para ocultar o mostrar el encabezado y el pie de página, usa las funciones miembrosetHeaderEnabled
ysetFooterEnabled
deNavigationFragment
.En iOS, usa
GMSMapView.settings.navigationHeaderPrimaryBackgroundColor
para configurar el estilo del color de fondo. Para ocultar o mostrar el encabezado y el pie de página, usa las propiedadesnavigationFooterEnabled
ynavigationHeaderEnabled
deGMSUISettings
.
Enrutamiento
- ¿Puedo proporcionar una ruta específica a un conductor o quitar rutas alternativas?
- No. De forma predeterminada, se proporcionan varias rutas, y la más rápida tiene prioridad. Puedes modificar la ruta predeterminada si agregas preferencias a tu solicitud, como "evitar autopistas y peajes". Agregar puntos de referencia también afecta la ruta.
- ¿Puedo mostrarle al usuario de la app una etiqueta de destino diferente de la predeterminada?
-
Sí. En Android, crea un objeto
Marker
con un título personalizado para el destino y la latitud y longitud. El SDK de Navigation muestra el título personalizado y las coordenadas en elNavigationMap
.En iOS, puedes crear y mostrar un
GMSMarker
para el destino. - ¿Puedo usar el SDK de Navigation para hacer un seguimiento de las desviaciones de una ruta definida?
-
Sí. En Android, usa
Navigator.setRouteChangedListener
para recibir notificaciones cuando una ruta cambie o se recomiende una nueva:- Registra un objeto de escucha que verifique la posición del dispositivo en la ruta con el método
Navigator.setRouteChangedListener
. - Agrega código al controlador de eventos de devolución de llamada,
onRouteChanged
:- Envía un mensaje al usuario de la aplicación con información actualizada de la hora de llegada estimada y la distancia.
- Realizar un seguimiento de la ubicación del dispositivo
- [Opcional] Agrega otra funcionalidad requerida por tu app para controlar cuando el conductor se desvíe de la ruta prescrita.
En iOS, usa
GMSNavigator
y sus objetos de escucha para recibir notificaciones cuando una ruta cambie o se recomiende una nueva:- En el controlador de vistas del mapa, implementa los protocolos
GMSNavigatorListener
yGMSRoadSnappedLocationProviderListener
. - Implementa
GMSNavigatorListener.navigatorDidChangeRoute
. - Accede a la ruta nueva con las propiedades
routeLegs
ycurrentRouteLeg
deGMSNavigator
.
- Registra un objeto de escucha que verifique la posición del dispositivo en la ruta con el método
-
Sí. En Android, llama al método
Navigator.stopGuidance()
para detener la navegación.En iOS, llama a
GMSNavigator.clearDestinations
.
Simulador
- ¿El simulador admite cambios de ruta?
-
Sí. En Android, llama a
simulateLocationsAlongNewRoute
para simular un viaje que incluya un cambio de ruta. El métodosimulateLocationsAlongExistingRoute
ignora los cambios en la ruta existente.En iOS, usa
GMSLocationSimulator.simulateAlongNewRouteToDestinations
para simular un viaje que incluya un cambio de ruta. Si no prevés ningún cambio en la ruta, puedes usarGMSLocationSimulator.simulateLocationsAlongExistingRoute
oGMSLocationSimulator.simulateAlongNewRouteToDestinations
.
Workflows
- ¿Cómo descarto la notificación después de cerrar una actividad que contiene un fragmento de Navigation?
-
La notificación de navegación permanecerá visible durante la navegación cuando la actividad esté cerrada. Cuando el vehículo llega al destino, la navegación se detiene y la notificación desaparece.
Para controlar los clics en la notificación, usa el
Navigator.startGuidance(intent resumeIntent)
. Elresume intent
se activa cuando el usuario de la app hace clic en la notificación. Por lo general, se llama aNavigator.startguidance(getIntent())
desde la actividad principal, que recupera la actividad cuando el usuario de la app hace clic en la notificación.