Introducción a Google Maps para Android: avanzado

1. Introducción

Si bien las funciones estándar de Google Maps son increíblemente útiles, a veces querrá hacer un poco más. Afortunadamente, Google ha creado una biblioteca de código abierto que contiene un conjunto de utilidades que los desarrolladores de Android pueden usar para mejorar sus aplicaciones con mapas mejorados.

En este tutorial, aprenderá cómo usar esta biblioteca de utilidades para agregar visualizaciones de mapas de calor a sus datos, agrupar una gran cantidad de marcadores para una visualización más fácil y usar varios métodos de utilidad para trabajar con la naturaleza esférica de la Tierra o dibujar rutas en las carreteras.

Los archivos de origen de este tutorial se pueden encontrar en GitHub.

2. Instalador

En el primer tutorial de esta serie, expliqué cómo configurar un proyecto usando Google Developer Console y agregar una clave API a su manifiesto. Para este tutorial, debe obtener una clave de API y configurar su proyecto con un manifiesto como se describe aquí.

Entonces abre build.gradle y agregue dos nuevas dependencias, una para que los servicios de Play usen Google Maps y otra para la biblioteca de Google Maps Utils.

Debo señalar que la biblioteca de Google Maps Utils está técnicamente todavía en beta, aunque ha estado disponible durante dos años. Después de importar estas bibliotecas y sincronizar el proyecto, debe actualizar el archivo de diseño a MainActivity.java para que utilice el fragmento personalizado que se muestra a continuación.

Luego crea el UtilsListFragment utilizada anteriormente para mostrar una lista simple de elementos que representan las diferentes partes de la biblioteca que aprenderá en este tutorial.

Cada una de las cadenas se define y se coloca en un string-array por uniformidad.

Una vez que su lista esté disponible, debe crear BaseMapActivity.java, que gestiona todas las configuraciones comunes relacionadas con el mapa para cada una de las actividades de ejemplo que creará. Esta Activity inicializa un GoogleMap y acerca la cámara a un área específica. En este caso, esa zona es la ciudad de Denver en Colorado, Estados Unidos. Todo en esta clase debería resultar familiar a partir de los dos últimos artículos de esta serie.

Ahora que ha creado el proyecto inicial, puede pasar a la siguiente sección donde creará un nuevo Activity para cada utilidad que cubriremos en este tutorial.

3. Mapas de calor

Los mapas de calor son una excelente manera de representar visualmente las concentraciones de puntos de datos en un mapa. La biblioteca de Google Maps Utils facilita agregarlos a una aplicación. Para comenzar, cree un nuevo BaseMapActivity fijado HeatMapActivity y agrégalo a tu AndroidManifest.xml archivo. En la parte superior de esta clase, declare un HeatmapTileProvider que usaremos para crear la superposición del mapa.

Dentro BaseMapActivity, un método llamado initMapSettings se llama que le permite agregar sus personalizaciones a la tarjeta. Para esto Activity, debe anular este método para obtener un ArrayList de LatLng objetos que luego se utilizan para generar el HeatmapTileProvider objeto.

El proveedor tiene varios métodos que se pueden utilizar para cambiar la apariencia de su mapa de calor, como colores degradados, el radio de cada punto y el peso de cada punto. Una vez que se crea su proveedor, puede crear el mapa de calor TileOverlay y aplíquelo a su tarjeta.

En la implementación anterior de initMapSettings, generateLocations es un método auxiliar que genera 1000 LatLng posiciones alrededor de la ubicación central del mapa.

Una vez que haya completado la implementación initMapSettings y generateLocations, puede ejecutar su aplicación y hacer clic en la sección del mapa de calor para verla en acción.

Mapa de calor de puntos en un mapa

4. Agrupación de marcadores

Cuando un mapa tiene muchos puntos de datos en un área pequeña, puede llenarse muy rápidamente cuando el usuario se aleja. No solo eso, sino que tener demasiados marcadores mostrados a la vez puede hacer que algunos dispositivos se ralenticen considerablemente.

Para ayudar a aliviar parte de la frustración causada por estos problemas, puede utilizar la biblioteca de Google Maps Utils para animar sus marcadores agrupados. Lo primero que debe hacer es crear un nuevo objeto modelo que implemente la ClusterItem interfaz. Este modelo debe implementar el getPosition método de ClusterItem interfaz para devolver un LatLng objeto.

Una vez creado el modelo, puede crear un nuevo Activity llamado ClusterMarkerActivity y agréguelo a su manifiesto. Cuando inicializa su tarjeta, debe crear un ClusterManager, asócielo con su GoogleMapy agrega tu LatLng posiciones como ClusterMarkerLocations a la ClusterManager para que la empresa de servicios públicos sepa qué agrupar. Eche un vistazo a la implementación de initMarkers para comprender mejor cómo funciona.

En este ejemplo, creamos 1000 puntos aleatorios para mostrarlos y agregarlos al mapa. La biblioteca de Google Maps Utils maneja todo lo demás por nosotros.

Amplíe los marcadores cuando no estén agrupados
Vista ampliada de 1000 marcadores agrupados

5. Otras utilidades

Además de los dos últimos elementos, la biblioteca de Google Maps Utils está llena de pequeñas utilidades útiles. Si tiene muchos puntos diferentes que componen una ruta, puede codificarlos como polilínea luego agregue esta polilínea a su mapa usando PolyUtil. Esto mostrará una ruta entre cada uno de los puntos a lo largo del mapa.

Ruta mostrada usando PolyUtil para decodificar una polilínea

Ademas de PolyUtil, Agregó Google SphericalUtil que se puede utilizar para medir distancias o determinar geometría a lo largo de la superficie de una esfera. Si desea encontrar la distancia entre dos puntos en el mapa, puede llamar SphericalUtil.computeDistanceBetween( LatLng position1, LatLng position2 ) devolver uno double distancia en metros. Si desea encontrar el rumbo entre dos puntos, puede llamar SphericalUtil.computeHeading( LatLng point1, LatLng point2 ).

Distancia entre dos puntos SphericalUtil

En relación con esto, otro método de utilidad en el SpericalUtil La clase te permite encontrar un punto en un rumbo determinado y a una distancia determinada. Recomiendo navegar por el Documentación para aprender más sobre el SpericalUtil clase.

Conclusión

En este tutorial, acaba de arañar la superficie de la biblioteca de Google Maps Utils y todo lo que tiene para ofrecer. Otras características que puede agregar a su aplicación incluyen agregar superposiciones para datos KML, crear marcadores personalizados y métodos auxiliares para trabajar con GeoJSON.

Afortunadamente, Google tiene toda la biblioteca de código abierto, por lo que puede encontrar el código fuente y el código de demostración para la biblioteca en GitHub. Después de pasar por las últimas tres partes de esta serie, ahora debería sentirse lo suficientemente cómodo con Google Maps para agregarlos a sus propias aplicaciones para enriquecer la experiencia del usuario y crear aplicaciones de gran apariencia.

En relación :  ¿Qué es la lectura social? Las 5 mejores aplicaciones de lectura social
Moyens Staff
El personal de Moyens I/O lo ha motivado, brindándole consejos sobre tecnología, desarrollo personal, estilo de vida y estrategias que lo ayudarán.