Biblioteca de utilidades del SDK de Maps para Android

¿Estás buscando funciones avanzadas para agregarlas a tus mapas? La biblioteca de utilidades del SDK de Maps para Android es una biblioteca de clases de código abierto que resulta útil para diferentes aplicaciones. En el repositorio de GitHub se incluyen las clases de utilidades y una app de demostración en la que se muestra cómo se usa cada clase.

En este video, Chris Broadfoot habla acerca de la biblioteca de utilidades y hace hincapié en la decodificación de polilíneas, la geometría esférica y los íconos de burbujas.

Configuración rápida

Para instalar la biblioteca de utilidades del SDK de Maps para Android, sigue la guía de configuración.

Las utilidades

Mapa con una capa GeoJSON

Cómo importar GeoJSON a tu mapa

Puedes almacenar elementos en formato GeoJSON y usar esta utilidad para renderizarlas como una capa sobre el mapa. Llama a addLayer() para agregar tus datos de GeoJSON al mapa. También puedes agregar elementos individuales si llamas a addFeature() y pasas un objeto GeoJsonFeature.

Para obtener información detallada, consulta la documentación sobre la utilidad GeoJSON para Google Maps en Android.

Mapa con una capa KML

Cómo importar KML a tu mapa

Con esta utilidad, puedes convertir objetos KML en formas geográficas y renderizarlas como una capa sobre el mapa. Llama a addLayerToMap() para agregar tu capa al mapa. Puedes acceder a las propiedades de un objeto KML si llamas a getProperties() en cualquier objeto Placemark, GroundOverlay, Document o Folder.

Para obtener información detallada, consulta la documentación sobre la utilidad KLM para Google Maps en Android.

Mapa con un mapa de calor

Cómo agregar mapas de calor a tu mapa

Los mapas de calor permiten a los usuarios comprender la distribución y la intensidad relativa de los puntos de datos de un mapa de manera sencilla. En los mapas de calor, en lugar de incluirse un marcador en cada ubicación, se usan colores y formas para representar la distribución de los datos. Crea una clase HeatmapTileProvider y pásale una colección de objetos LatLng que representen lugares de interés en el mapa. Luego, crea un objeto TileOverlay nuevo, pásale el proveedor de mosaicos de mapas de calor y agrega la superposición de mosaicos al mapa.

Para obtener información detallada, consulta la documentación sobre la utilidad de mapa de calor para Google Maps en Android.

Mapa con íconos de burbujas

Cómo personalizar marcadores mediante íconos de burbujas

Agrega un objeto IconGenerator para mostrar fragmentos de información en tus marcadores. Esta utilidad ofrece una manera de hacer que tus íconos de marcadores se asemejen a las ventanas de información, en el sentido de que el propio marcador pueda incluir texto y otro contenido. La ventaja reside en que puedes mantener abierto más de un marcador al mismo tiempo, mientras que en el caso de las ventanas de información solo puedes mantener una abierta a la vez. También puedes aplicar ajustes de estilo a los marcadores, modificar su orientación o contenido y cambiar su imagen de fondo o NinePatch.

Mapa con marcadores agrupados en clústeres

Cómo administrar clústeres de marcadores

ClusterManager te permite administrar varios marcadores con diferentes niveles de zoom. Esto significa que puedes incluir muchos marcadores en un mapa sin que esto dificulte su lectura. Cuando un usuario visualiza el mapa con un alto nivel de zoom, aparecen los marcadores individuales. Cuando el usuario aleja el mapa, los marcadores se agrupan en clústeres para facilitar su visualización.

Para obtener información más detallada, consulta la documentación sobre la utilidad de agrupamiento de marcadores en clústeres para Google Maps en Android.

Mapa con varias capas

Cómo agregar varias capas al mismo mapa

Puedes mostrar elementos de GeoJSON, KML y clústeres, además de tus propios marcadores, polilíneas y polígonos, todo en el mismo mapa. Si deseas que estas capas sean interactivas, agrega un objeto de escucha de clics a cada capa. Simplemente crea instancias de las clases MarkerManager, GroundOverlayManager, PolygonManager y PolylineManager, y pásalas a los constructores de GeoJsonLayer, KmlLayer. ClusterManager cuando las configures. Luego, puedes usar las clases Manager anteriores directamente para agregar tus propios marcadores, polilíneas y polígonos al mapa.

Para obtener información más detallada, consulta la documentación sobre la demostración de varias capas para Google Maps en Android.

Mapa con una polilínea codificada

Cómo codificar y decodificar polilíneas

La clase PolyUtil resulta útil para convertir polilíneas y polígonos codificados en coordenadas de latitud y longitud, y viceversa.

En Google Maps, las coordenadas de latitud y longitud que definen una polilínea o un polígono se almacenan como una string codificada. Consulta una explicación detallada sobre la codificación de polilíneas. Puedes recibir esta string codificada en una respuesta de una API de Google, como la API de Directions.

Puedes usar PolyUtil en la biblioteca de utilidades del SDK de Maps para Android a fin de codificar una secuencia de coordenadas de latitud y longitud ("LatLngs") en una string de ruta de acceso codificada y también a fin de decodificar una string de ruta de acceso codificada en una secuencia de LatLngs. Esto garantizará la interoperabilidad con los servicios web de las API de Google Maps.

Distancia calculada entre dos puntos de un mapa

Cómo calcular distancias, áreas y direcciones mediante geometría esférica

Con las utilidades de geometría esférica de SphericalUtil, puedes calcular distancias, áreas y direcciones basados en latitudes y longitudes. A continuación, se muestran algunos de los métodos disponibles en la utilidad:

  • computeDistanceBetween(): muestra la distancia, en metros, entre dos coordenadas de latitud y longitud.
  • computeHeading(): muestra el rumbo, en grados, entre dos coordenadas de latitud y longitud.
  • computeArea(): muestra el área, en metros cuadrados, de una ruta cerrada en la Tierra.
  • interpolate(): muestra las coordenadas de latitud y longitud de un punto que se encuentra a una fracción de la distancia entre dos puntos determinados. Puedes usar esto para animar un marcador entre dos puntos, por ejemplo.

Consulta la documentación de referencia para obtener una lista completa de los métodos de la utilidad.