Preguntas frecuentes
Detalles del producto
- ¿Cómo se debe mostrar el aviso de las Condiciones del Servicio del SDK de Navigation?
- ¿En qué idiomas están disponibles las indicaciones por voz?
- ¿Se mantiene la orientación cuando el conductor sale del modo de navegación?
- ¿Las polilíneas están disponibles cuando se inicia o se cambia una ruta?
- ¿Los usuarios de la app deben tener instalada la versión para dispositivos móviles de Google Maps?
- ¿El SDK de Navigation puede identificar estacionamientos 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 giro?
Problemas
- En Xcode 12, las apps no se compilan correctamente para el simulador. ¿Cómo puedo solucionar este problema?
GMSMapViewno se carga.
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 los destinos de un viaje antes de iniciar la ruta?
- ¿La guía de ruta paso a paso está disponible al comienzo de una ruta?
- ¿Cómo se comunica la hora estimada de llegada (ETA) a los usuarios de la app?
- ¿Se puede usar
RoadSnappedLocationProviderpara obtener la ubicación ajustada actual del conductor si la navegación no está en primer plano? - ¿El SDK de Navigation admite 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?
- ¿Puede el SDK de Navigation mostrar la hora estimada de llegada al destino final?
- ¿Cómo puedo ocultar las actualizaciones de la hora estimada de llegada?
- ¿Qué personalizaciones de la IU están disponibles para las tarjetas de encabezado y pie de página?
Enrutamiento
- ¿Puedo proporcionar una ruta específica a un conductor o quitar rutas alternativas?
- ¿Puedo mostrarle al conductor una etiqueta diferente para el destino que no sea la ubicación de destino predeterminada?
- ¿Puedo usar el SDK de Navigation para hacer un seguimiento de las desviaciones de una ruta definida?
- ¿Puede el conductor salir de la navegación sin completar la ruta?
- ¿El SDK de Navigation admite la generación de rutas y la navegación para camiones y vehículos grandes?
de Pixel
Workflows
Servicios de movilidad
- ¿En qué se diferencia el uso del SDK de Navigation para los clientes de los Servicios de movilidad?
- ¿Cómo puedo saber si soy cliente de los Servicios de movilidad?
- ¿Cómo se factura el SDK de Navigation a los clientes de Servicios de movilidad?
- ¿Qué APIs del SDK de Navigation solo deben usar los clientes de Mobility Services?
- Si soy cliente de Mobility Services, ¿puedo usar también una implementación del SDK de Navigation que no sea de Mobility Services?
Detalles del producto
- Tu app debe implementar un diálogo con el aviso de las Condiciones del Servicio del SDK de Navigation que cada conductor debe aceptar. Este diálogo le da al conductor la oportunidad de aceptar las Condiciones del Servicio. Se proporciona un archivo de texto con las condiciones junto con el SDK de Navigation.
- En Android, usa el método
NavigationApi.showTermsAndConditionsDialogpara mostrar el diálogo que contiene las condiciones. - En iOS, llama a
GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName. - Todos los idiomas que admite Google Maps para dispositivos móviles están disponibles automáticamente para el SDK de Navigation. Los dispositivos tienen un idioma predeterminado del sistema, y las apps no pueden cambiar ese parámetro de configuración. Sin embargo, las apps tienen acceso a más de 70 idiomas.
-
Sí. En Android, una vez que se inicia, el
LocationListenersigue ejecutándose en segundo plano. La app sigue ajustando la posición a la ruta y mantiene el rumbo.En iOS, para seguir recibiendo actualizaciones de ubicación de la posición y el rumbo en segundo plano, implementa el ajuste a la ruta y establece
allowsBackgroundLocationUpdatesenYES. -
Sí. Cuando se crea o cambia una ruta,
RouteChangeListenerproporciona 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.
Problemas
- 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
arm64aExcluded Architecturessolo para compilaciones de "Simulador de iOS".Para obtener más información, consulta la siguiente conversación sobre StackOverflow.
- GMSMapView no se carga.
-
Si el GMSMapView no se carga, haz lo siguiente:
- Verifica que el SDK de Navigation esté habilitado en la consola de Cloud.
- Si el SDK de Navigation está instalado, pero tu proyecto no usa las APIs del SDK de Navigation, quítalo de tu objeto binario.
Red
- ¿Cómo maneja el SDK de Navigation la conectividad deficiente?
- El SDK de Navigation almacena previamente en caché la ruta de cada viaje. La información de almacenamiento previo en caché incluye información de planificación de ruta para 15 a 20 minutos y alternativas de ruta en caso de que el conductor se desvíe de la ruta. El SDK de Navigation calcula la posición aproximada 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, el SDK proporciona información almacenada previamente en caché para un viaje.
Datos
- ¿Puedo recuperar todas las paradas o destinos de un viaje antes de iniciar la ruta?
-
Sí. En Android, para recuperar 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 una ruta?
- Sí. El SDK de Navigation proporciona una lista de tramos de ruta. Además, el conductor puede deslizar el dedo por la tarjeta de instrucciones en el encabezado para ver cada maniobra.
- ¿Cómo se comunica la hora estimada de llegada a los usuarios de la app?
-
En Android, sigue estos pasos para proporcionar información de la hora estimada de llegada a los usuarios de la app:
- Recupera el tiempo y la distancia de todos los puntos de referencia con
Navigator.getTimeAndDistanceList(). - Reenvía esta información a la aplicación cliente como lo haces con la hora de llegada estimada del conductor.
En iOS, sigue estos pasos para proporcionar información de la hora estimada de llegada a los usuarios de la app:
- Recupera los tramos del recorrido con
Navigator.getRouteSegments(). - Llama a
GMSNavigator.timeToNextDestinationpara cada tramo del viaje. - Reenvía la información de la hora a la aplicación cliente, como lo haces con la hora estimada de llegada del conductor.
- Recupera el tiempo y la distancia de todos los puntos de referencia con
-
¿Se puede usar el
RoadSnappedLocationProviderpara obtener la ubicación ajustada actual del conductor si la navegación no está en primer plano? -
Sí. En Android,
RoadSnappedLocationProviderse ejecuta en segundo plano de forma predeterminada.En iOS, para mantener la navegación en segundo plano, implementa el objeto de escucha para
GMSRoadSnappedLocationProviderListenery establece la propiedadallowsBackgroundLocationUpdatesenTRUE. - ¿El SDK de Navigation admite el geovallado?
-
No. En el contexto de la navegación,
remainingTimeOrdistanceChangeListenertiene una ventaja sobre un geovallado. Es posible que el geovallado no tenga en cuenta la geometría de la ruta y que no esté centrado en el punto exacto al que se dirige 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 estableces el umbral en 100 m, recibirás una devolución de llamada cuando la distancia al destino cambie en 100 m. A medida que disminuye la distancia, puedes actualizar este umbral a un valor menor y recibir devoluciones de llamada con más frecuencia. Luego, inspecciona la distancia restante para determinar si estás lo suficientemente cerca de la ubicación de retiro o llegada.
En iOS, implementa el objeto de escucha
GMSNavigatorListener.didUpdateRemainingDistancepara administrar la distancia entre las notificaciones. - ¿Puedo inhabilitar las notificaciones cuando la app de Navigation está en segundo plano?
-
Sí. En Android, usa
Navigator.setHeadsUpNotificationEnabledpara controlar las notificaciones. Este método tiene un argumento booleano.FALSEinhabilita las notificaciones;TRUElas habilita.En iOS, inhabilita las notificaciones en segundo plano para las ubicaciones ajustadas a la ruta estableciendo
GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdatesen NO.Para inhabilitar el procesamiento en segundo plano de otras notificaciones de ubicación, llama a
GMSNavigator.sendsBackgroundNotifications(NO).
Personalización de la IU
- ¿Puedo usar un código de colores para la mejor opción de ruta?
- No. Por el momento, no se admite la codificación por colores de una opción de ruta específica.
- ¿Puede el SDK de Navigation mostrar la hora estimada de llegada al destino final?
-
Sí. En Android, usa los siguientes métodos:
- Recupera el tiempo y la distancia de todos los puntos de referencia con
Navigator.getTimeAndDistanceList(). - Oculta la hora de llegada estimada del punto de referencia actual con
NavigationFragment.setEtaCardEnabled(false). - Renderiza la hora de llegada estimada al destino final.
En iOS, usa lo siguiente:
- Llamar a
GMSNavigator.routeLegs(read) - En el último tramo, llama a
GMSNavigator.timeToNextDestination. - Oculta la hora estimada de llegada del punto de referencia actual estableciendo
MSMapView.settings.navigationFooterEnabled=NOen FALSE. - Renderiza la hora de llegada estimada al destino final.
- Recupera el tiempo y la distancia de todos los puntos de referencia con
- ¿Cómo puedo ocultar las actualizaciones de la hora estimada de llegada?
-
Puedes inhabilitar las tarjetas de hora de llegada estimada con los siguientes métodos:
- En Android, usa
navigationView.setEtaCardEnabled(false). - En iOS, usa
GMSMapView.settings.navigationFooterEnabled=NO.
- En Android, usa
-
En Android, usas
StylingOptionspara establecer el estilo del color de fondo. Para ocultar o mostrar el encabezado y el pie de página, usa las funciones de miembrosetHeaderEnabledysetFooterEnableddeNavigationFragment.En iOS, usa
GMSMapView.settings.navigationHeaderPrimaryBackgroundColorpara establecer el estilo del color de fondo. Para ocultar o mostrar el encabezado y el pie de página, usa las propiedadesnavigationFooterEnabledynavigationHeaderEnableddeGMSUISettings.
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 agregando preferencias, como "evitar autopistas y peajes", a tu solicitud. Agregar puntos de referencia también afecta la ruta.
- ¿Puedo mostrarle al usuario de la app una etiqueta para el destino que sea diferente de la ubicación de destino predeterminada?
-
Sí. En Android, crea un
Markercon un título personalizado para el destino y la latitud/longitud. El SDK de Navigation muestra el título personalizado y las coordenadas en elNavigationMap.En iOS, creas y muestras un
GMSMarkerpara el destino. - ¿Puedo usar el SDK de Navigation para hacer un seguimiento de las desviaciones de una ruta definida?
-
Sí. En Android, usa
Navigator.setRouteChangedListenerpara recibir notificaciones cuando cambia una ruta o se recomienda 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 app con información actualizada sobre la hora de llegada estimada y la distancia.
- Hacer un seguimiento de la ubicación del dispositivo
- [opcional] Agrega otras funciones que requiera tu app para controlar cuándo el conductor se sale de la ruta prescrita.
En iOS, usa
GMSNavigatory sus objetos de escucha para recibir notificaciones cuando cambie una ruta o se recomiende una nueva:- En el controlador de vista del mapa, implementa el protocolo
GMSNavigatorListenery el protocoloGMSRoadSnappedLocationProviderListener. - Implementa
GMSNavigatorListener.navigatorDidChangeRoute. - Accede a la ruta nueva con las propiedades
routeLegsycurrentRouteLegdeGMSNavigator.
- 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. - ¿El SDK de Navigation admite la planificación de rutas y la navegación para camiones y vehículos grandes?
-
Sí. Con la planificación de rutas para vehículos grandes (LVR), puedes pasar tokens de ruta específicos para camiones generados por la API de Routes o la API de Route Optimization al SDK de Navigation. El SDK proporciona navegación paso a paso con leyendas de ruta (restricciones de altura, peso, materiales peligrosos y camiones) y mantiene el perfil físico del vehículo durante el cambio de ruta dinámico. Para obtener más detalles, consulta Cómo navegar por rutas para vehículos grandes.
de Pixel
- ¿El simulador admite cambios de ruta?
-
Sí. En Android, llama a
simulateLocationsAlongNewRoutepara simular un viaje que incluya un cambio de ruta. El métodosimulateLocationsAlongExistingRouteignora los cambios en la ruta existente.En iOS, usa
GMSLocationSimulator.simulateAlongNewRouteToDestinationspara simular un viaje que incluya un cambio de ruta. Si no prevés ningún cambio de ruta, puedes usarGMSLocationSimulator.simulateLocationsAlongExistingRouteoGMSLocationSimulator.simulateAlongNewRouteToDestinations.
Workflows
- ¿Cómo descarto la notificación después de cerrar una actividad que contiene un fragmento de navegación?
-
La notificación de navegación permanece visible durante la navegación, cuando se cierra la actividad. 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
Navigator.startGuidance(intent resumeIntent). El eventoresume intentse 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.
Servicios de movilidad
Los servicios de movilidad de Google Maps Platform ofrecen una colección de APIs y SDKs para ayudar a satisfacer las necesidades empresariales de las empresas de transporte y logística. En el caso de los clientes de Mobility Services, el SDK de Navigation suele usarse junto con servicios relacionados para la optimización de rutas, el despacho, el seguimiento de tareas, el análisis de flotas y mucho más. El SDK de Navigation también se factura de manera diferente para los clientes de servicios de movilidad. Para obtener más información, consulta la documentación de los servicios de movilidad.
Los productos de movilidad solo están disponibles para clientes seleccionados. Comunícate con tu representante de ventas para obtener más información.
ReportBillableEvent en tu código. Solo los clientes de Mobility Services deben llamar al método ReportBillableEvent.
Hay varias APIs en el SDK de Navigation que solo están diseñadas para que las usen los clientes de Servicios de movilidad, a quienes Google les factura por transacción. Si no eres cliente de Mobility Services, los siguientes métodos no realizan ninguna operación:
Sí, los clientes de Mobility Services pueden usar las implementaciones del SDK de Navigation de Mobility Services y de otros servicios. Sin embargo, solo puedes usar un tipo de implementación en una app a la vez. También debes crear un proyecto de Google Cloud, una cuenta de facturación y una clave de API nuevos, independientes de los que usas con tu implementación de los servicios de movilidad. Para obtener más información, consulta la descripción general de la configuración del SDK de Navigation.
Para obtener más información sobre cómo usar una implementación del SDK de Navigation que no sea de Mobility Services, incluida la migración de una app de un tipo de implementación a otro, comunícate con tu representante de cuenta de Google.
Nota: Si no eres cliente de Mobility Services y te interesa obtener más información sobre la colección de APIs y SDKs de Mobility Services, comunícate con el equipo de ventas de Google Maps Platform.