Skip to content

Manejadores de eventos

MapConductor proporciona un sistema completo de manejo de eventos para las interacciones de usuario con el mapa y sus componentes. Todos los eventos se gestionan a través del componente MapViewContainer y se pasan como parámetros al composable MapView.

MapView(
...,
onMapLoaded: OnMapLoadedHandler? = null,
onMapClick: OnMapEventHandler? = null,
onCameraMoveStart: OnCameraMoveHandler? = null,
onCameraMove: OnCameraMoveHandler? = null,
onCameraMoveEnd: OnCameraMoveHandler? = null,
onMarkerClick: OnMarkerEventHandler? = null,
onMarkerDragStart: OnMarkerEventHandler? = null,
onMarkerDrag: OnMarkerEventHandler? = null,
onMarkerDragEnd: OnMarkerEventHandler? = null,
onMarkerAnimateStart: OnMarkerEventHandler? = null,
onMarkerAnimateEnd: OnMarkerEventHandler? = null,
onCircleClick: OnCircleEventHandler? = null,
onPolylineClick: OnPolylineEventHandler? = null,
onPolygonClick: OnPolygonEventHandler? = null,
onGroundImageClick: OnGroundImageEventHandler? = null,
) { }
  • Se llama cuando el mapa ha terminado de cargarse y está listo para recibir interacciones.

    onMapLoaded: OnMapLoadedHandler? = null
  • Ejemplo:

    MapView(
    ...
    onMapLoaded = {
    println("Map loaded")
    },
    ) {
    ...
    }
  • Se llama cuando el usuario toca el mapa (pero no sobre un overlay).

    onMapClick: OnMapEventHandler? = null

Datos del evento: GeoPoint – coordenadas geográficas donde se hizo tap.

  • Ejemplo:
    MapView(
    ...
    onMapClick = { geoPoint ->
    println("Map clicked at: ${geoPoint.latitude}, ${geoPoint.longitude}")
    }
    ) {
    ...
    }

Todos los eventos de marcador reciben un objeto MarkerState con el estado actual del marcador.

  • Se llama cuando el usuario toca un marcador.

    onMarkerClick: OnMarkerEventHandler? = null

Datos del evento: MarkerState – estado del marcador clicado.

  • onMarkerDragStart: se llama cuando el usuario comienza a arrastrar un marcador.
  • onMarkerDrag: se llama mientras el marcador se está arrastrando.
  • onMarkerDragEnd: se llama cuando el usuario suelta el marcador.

Ejemplo:

MapView(
...,
onMarkerDragStart = { markerState ->
println("Drag started at: ${markerState.position}")
},
onMarkerDrag = { markerState ->
println("Dragging: ${markerState.position}")
},
onMarkerDragEnd = { markerState ->
println("Drag ended at: ${markerState.position}")
},
) { ... }
  • onMarkerAnimateStart: se llama cuando comienza una animación de marcador.
  • onMarkerAnimateEnd: se llama cuando termina una animación de marcador.
MapView(
...,
onMarkerAnimateStart = { markerState ->
println("Animation started for: ${markerState.id}")
},
onMarkerAnimateEnd = { markerState ->
println("Animation ended for: ${markerState.id}")
},
) { ... }

MapConductor también expone eventos para overlays como círculos, polilíneas, polígonos y ground images.

onCircleClick: OnCircleEventHandler? = null

Datos del evento: CircleEvent – incluye el CircleState y el punto clicado.

onPolylineClick: OnPolylineEventHandler? = null

Datos del evento: PolylineEvent – incluye el PolylineState y el punto clicado.

onPolygonClick: OnPolygonEventHandler? = null

Datos del evento: PolygonEvent – incluye el PolygonState y el punto clicado.

onGroundImageClick: OnGroundImageEventHandler? = null

Datos del evento: GroundImageEvent – incluye el GroundImageState y la posición clicada (cuando está disponible). Solo está soportado en Google Maps.

Los eventos de movimiento de cámara permiten reaccionar a cambios de posición y zoom.

onCameraMoveStart: OnCameraMoveHandler? = null,
onCameraMove: OnCameraMoveHandler? = null,
onCameraMoveEnd: OnCameraMoveHandler? = null,
  • onCameraMoveStart: se llama cuando la cámara empieza a moverse (por gesto del usuario o animación).
  • onCameraMove: se llama mientras la cámara se está moviendo.
  • onCameraMoveEnd: se llama cuando la cámara deja de moverse.

Estos eventos están disponibles en los proveedores que exponen callbacks de movimiento de cámara.