El SDK de Maps para Android permite publicar una imagen de mapa de bits de un mapa y ofrecer interactividad limitada al usuario. Esto se conoce como un mapa en modo lite.
Muestras de código
El repositorio ApiDemos en GitHub incluye ejemplos que muestran el uso del modo lite:
- LiteDemoActivity - Java: Conceptos básicos para usar un mapa en el modo lite en Java
- LiteDemoActivity - Kotlin: Conceptos básicos para usar un mapa en el modo lite en Kotlin
- LiteListDemoActivity - Java: Cómo mostrar mapas de manera eficiente en ListViews con el modo lite en Java
- LiteListDemoActivity - Kotlin: Cómo mostrar mapas de manera eficiente en ListViews con el modo lite en Kotlin
Descripción general del modo lite
El modo lite muestra una imagen de mapa de bits correspondiente a un mapa de una ubicación determinada y con un nivel de zoom específico. Además, este modo es compatible con todos los tipos de mapa (normal, híbrido, satelital y de terreno), así como con un subconjunto de las funcionalidades proporcionadas por la API completa. Resulta útil cuando deseas proporcionar una serie de mapas en un flujo o un mapa demasiado pequeño como para admitir una interacción significativa.
Los usuarios que vean el mapa no podrán desplazarse lateralmente por él ni aplicarle zoom. Los íconos del mapa les brindan a los usuarios la posibilidad de ver el mapa en la app de Google Maps para dispositivos móviles y de solicitar instrucciones para llegar a un lugar.
Cómo agregar un mapa en el modo lite
El modo lite utiliza las mismas interfaces y clases que la API completa de Google Maps para Android. Puedes configurar un objeto GoogleMap
en el modo lite de las siguientes maneras:
- Mediante un atributo XML de un objeto
MapView
oMapFragment
- Directamente en el objeto
GoogleMapOptions
Mediante un atributo XML de un objeto MapView
o MapFragment
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraZoom="13"
map:mapType="normal"
map:liteMode="true"/>
Directamente en el objeto GoogleMapOptions
Kotlin
val options = GoogleMapOptions() .liteMode(true)
Java
GoogleMapOptions options = new GoogleMapOptions() .liteMode(true);
Para obtener detalles acerca de cómo configurar el estado inicial del mapa, consulta la guía sobre el objeto de mapa.
Intents para iniciar una vista de mapa o una solicitud de instrucciones sobre cómo llegar
De forma predeterminada, se muestra una barra de herramientas en la esquina inferior derecha del mapa con íconos que proporcionan acceso a una vista de mapa o a una solicitud de instrucciones sobre cómo llegar en la app de Google Maps para dispositivos móviles. Para inhabilitar la barra de herramientas, llama a UiSettings.setMapToolbarEnabled(false)
. Para obtener más detalles, consulta la documentación sobre la barra de herramientas.
También de forma predeterminada, cuando un usuario presiona el mapa, la API inicia la app de Google Maps para dispositivos móviles. Puedes anular esta función con GoogleMap.setOnMapClickListener()
para configurar tu propio objeto de escucha. También puedes inhabilitar los eventos de clic en el mapa si llamas a setClickable()
en la vista que contiene el objeto MapView
o MapFragment
. Para obtener más detalles sobre estas dos técnicas, consulta la documentación sobre eventos.
Eventos de ciclo de vida
Cuando se utiliza la API en el modo completamente interactivo, los usuarios de la clase MapView
deben reenviar todos los métodos de ciclo de vida de la actividad a los métodos correspondientes de la clase MapView
. Algunos ejemplos de métodos de ciclo de vida son onCreate()
, onDestroy()
, onResume()
y onPause()
.
Cuando se utiliza la clase MapView
en el modo lite, el reenvío de eventos de ciclo de vida es opcional, excepto en las siguientes situaciones:
- Es obligatorio llamar a
onCreate()
. De lo contrario, no aparecerá ningún mapa. - Si deseas mostrar el punto de Mi ubicación en el mapa en el modo lite y utilizar la fuente de ubicación predeterminada, deberás llamar a
onResume()
yonPause()
, ya que la fuente de ubicación solo se actualizará entre estas llamadas. Si utilizas tu propia fuente de ubicación, no es necesario llamar a estos dos métodos.
Funciones de API compatibles
En la siguiente tabla, se describe el comportamiento de un mapa en el modo lite para cada área de funcionalidades de la API. Si una app llama a un método que no es compatible en el modo lite, la API registrará un mensaje de advertencia.
Funcionalidad | |
---|---|
Tipos de mapas | ¿Compatible? Sí
Los siguientes tipos de mapas están disponibles a través de GoogleMapOptions.mapType() y GoogleMap.setMapType() : MAP_TYPE_NORMAL , MAP_TYPE_SATELLITE , MAP_TYPE_TERRAIN , MAP_TYPE_HYBRID , MAP_TYPE_NONE |
Polilíneas, polígonos y círculos | ¿Compatible? Sí
Las funcionalidades relacionadas con las formas en el modo lite son las mismas que las de la API completa. |
Proyección | ¿Compatible? Sí
Las funcionalidades relacionadas con la proyección en el modo lite son las mismas que las de la API completa. |
Mi ubicación | ¿Compatible? Sí
Las funcionalidades relacionadas con la capa Mi ubicación en el modo lite son las mismas que las de la API completa. |
Mapas con padding | ¿Compatible? Sí
La compatibilidad de los mapas con padding en el modo lite es la misma que la de la API completa. |
Ventanas de información | ¿Compatible? Sí
Si configuras el método title() de un marcador, aparecerá la ventana de información predeterminada cuando el usuario presione el marcador. Puedes mostrar la ventana de información de manera programática si llamas a showInfoWindow() en el marcador.
También puedes crear ventanas de información personalizadas a través de la interfaz InfoWindowAdapter . |
Diseños personalizados del mapa base | ¿Compatible? En parte
El SDK de Maps para Android es compatible con los diseños personalizados del mapa base. El modo lite solo es compatible con el diseño personalizado basado en JSON, no con el diseño basado en Cloud, que requiere un ID de mapa para procesar un mapa con diseños. |
Marcadores | ¿Compatible? En parte
Puedes agregar un marcador y responder a un evento de clic. También puedes agregar íconos de marcadores personalizados. No es posible configurar un marcador para que sea arrastrable. En el modo lite, los marcadores del mapa son planos y no se pueden rotar. |
Posición de la cámara, zoom y animación | ¿Compatible? En parte
Puedes configurar el nivel de zoom y el objetivo de la cámara, pero no la inclinación ni el rumbo.
En el modo lite, el nivel de zoom se redondea al valor entero más cercano.
Si llamas a Si llamas a |
Eventos de mapa | ¿Compatible? En parte
El modo lite es compatible con los métodos Para inhabilitar los eventos de clic en un mapa en el modo lite, llama a Para obtener más detalles, consulta la documentación sobre eventos. |
Mapas de interiores y edificios | ¿Compatible? No
El modo lite mostrará los mismos mosaicos que la API de Maps Static.
Esto significa que el plano del interior del edificio aparecerá si se integra al mosaico predeterminado. De lo contrario, no aparecerá. Además, no puedes cambiar el piso que se muestra ni controlar un selector de pisos. |
Capa de tráfico | ¿Compatible? No
El modo lite no es compatible con el método GoogleMap.setTrafficEnabled() . |
Superposiciones de suelo | ¿Compatible? No
El modo lite no es compatible con el método GoogleMap.addGroundOverlay() . |
Superposiciones de mosaicos | ¿Compatible? No
El modo lite no es compatible con el método GoogleMap.addTileOverlay() . |
Gestos | ¿Compatible? No
El modo lite no es compatible con los gestos. La habilitación o inhabilitación de los gestos no tendrá ningún efecto. |
Street View | ¿Compatible? No
El modo lite no es compatible con Street View. |