Integración de Cámara y Galería de Fotos en Mapas Interactivos

Clase 29 de 33Curso de Android: Integración de APIs nativas

Resumen

¿Quieres mejorar la interacción visual de tus mapas en Jetpack Compose? Aquí aprenderás cómo añadir componentes de interfaz gráfica para mostrar fotos tomadas desde la cámara en marcadores ubicados en mapas dinámicos. Esta clase te guía paso a paso para integrar diálogos visuales y galerías de imágenes que aparecen al hacer clic en puntos específicos del mapa.

¿Cómo agregar nuevos 'Intents' al ViewModel?

La primera acción consiste en añadir nuevos intents dentro del TrackingIntent para facilitar la interacción del usuario. Estas acciones son simples pero fundamentales:

  • SelectLocation: al seleccionar un marcador en la ubicación, muestra un diálogo con fotos guardadas.
  • DismissDialog: cierra el diálogo abierto al dar clic.

Estos intents actualizan la localización y manejan correctamente la aparición o desaparición del diálogo con imágenes asociadas.

¿Para qué sirve el estado "SelectedLocation"?

La variable SelectedLocation se actualiza cuando se interactúa con una ubicación que contiene fotos, permitiendo mostrar el diálogo adecuado. Este estado gestiona la información visualizada del lugar seleccionado.

¿Cómo implementar un marcador personalizado (FotoCluster)?

La sección llamada FotoCluster es clave para representar visualmente cuántas fotos hay asociadas a un punto:

  • Se agrega un composable que recibe una localización con listas de fotos.
  • Por cada ubicación se crea un pequeño distintivo que indica el número de imágenes presentes.
  • Si existe una foto disponible y válida, la primera imagen de este grupo se transforma en un marcador circular visual atractivo mediante la función extension AsImageBitmap. Si no existe, muestra un ícono por defecto.

¿Cómo integrar la galería de fotos (PhotoGallery) en marcadores?

Para mostrar las imágenes de una manera amigable, se crea la sección PhotoGallery:

  • Usa HorizontalPager que permite deslizar entre fotos guardadas.
  • Al pulsar sobre una imagen individual, esta se amplía en un diálogo específico para visualización detallada.
  • Cada interacción visual es sencilla y eficiente.

Este composable mejora sustancialmente la experiencia del usuario al navegar por múltiples imágenes en cada ubicación.

¿Qué sucede cuando interactúas con los marcadores en el mapa?

Al hacer clic en un marcador, inmediatamente aparece un diálogo que muestra todas las imágenes guardadas. Durante esta interacción:

  • El seguimiento (tracking) se pausa momentáneamente.
  • Las fotos tomadas quedan asociadas al lugar exacto en que fueron capturadas.
  • Al cerrar el diálogo, el seguimiento continúa normalmente.

Finalmente, al reiniciar la aplicación, se elimina todo registro previo de marcadores y fotos. No obstante, se menciona la posibilidad de solucionar esta situación mediante los llamados "servicios en segundo plano", tema que será cubierto en futuras secciones del curso.

¡Te invitamos a explorar esta integración y proponer mejoras para nuestros marcadores y galerías visuales!