Skip to content

Manejadores de eventos

MapConductor ofrece manejo integral de eventos para las interacciones del usuario con el mapa y sus componentes. Los eventos del mapa se manejan en el componente MapView, y los eventos de overlays se configuran en cada State.

MapView(
...,
onMapLoaded: OnMapLoadedHandler? = null,
onMapClick: OnMapEventHandler? = null,
onMapLongClick: OnMapEventHandler? = null,
onCameraMoveStart: OnCameraMoveHandler? = null,
onCameraMove: OnCameraMoveHandler? = null,
onCameraMoveEnd: OnCameraMoveHandler? = null,
) { }

Eventos del mapa

Inicialización del mapa

  • Se llama cuando el mapa terminó de cargar y está listo para la interacción.
onMapLoaded: OnMapLoadedHandler? = null
  • Ejemplo
MapView(
...
onMapLoaded: {
println("Mapa cargado")
},
) {
...
}

Interacciones del mapa

  • Se llama cuando el usuario toca el mapa (una parte que no es un overlay).
onMapClick: OnMapEventHandler? = null

Datos del evento: GeoPointInterface - coordenadas geográficas tocadas

  • Ejemplo
MapView(
...
onMapClick = { geoPoint ->
println("Mapa tocado en: ${geoPoint.latitude}, ${geoPoint.longitude}")
}
) {
...
}

onMapLongClick

  • Se llama cuando el usuario mantiene presionado el mapa (una parte que no es un overlay).
onMapLongClick: OnMapEventHandler? = null

Datos del evento: GeoPointInterface - coordenadas geográficas mantenidas presionadas

  • Ejemplo
MapView(
onMapLongClick = { geoPoint ->
println("Pulsación larga en: ${geoPoint.latitude}, ${geoPoint.longitude}")
}
) {
// ...
}

Eventos de marcador

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

Evento de clic

  • Se llama cuando se toca un marcador.
MarkerState(
...,
onClick: OnMarkerEventHandler? = null,
)
  • Ejemplo
val markerState = MarkerState(
...,
onClick = { marker ->
println("Marcador tocado en: ${marker.position.latitude}, ${marker.position.longitude}")
},
)
Marker(markerState)

Eventos de arrastre

  • onDragStart: Se llama cuando inicia el arrastre
  • onDrag: Se llama continuamente durante el arrastre
  • onDragEnd: Se llama cuando termina el arrastre
MarkerState(
...,
onDragStart: OnMarkerEventHandler? = null,
onDrag: OnMarkerEventHandler? = null,
onDragEnd: OnMarkerEventHandler? = null,
)
var markerState = MarkerState(
...,
draggable = true,
onDragStart = { draggedMarker ->
println("Arrastre iniciado: ${draggedMarker.id}")
},
onDrag = { draggedMarker ->
if (draggedMarker.id == markerState.id) {
markerState = markerState.copy(position = draggedMarker.position)
}
},
onDragEnd = { draggedMarker ->
println("Arrastre finalizado: ${draggedMarker.id}")
},
)
Marker(markerState)

Eventos de animación

  • Se llama cuando las animaciones del marcador inician y terminan.
MarkerState(
...,
onAnimateStart: OnMarkerEventHandler? = null,
onAnimateEnd: OnMarkerEventHandler? = null,
)

Eventos de overlays

Eventos de círculo

  • Se llama cuando se toca un círculo.
CircleState(
...,
onClick: OnCircleEventHandler? = null,
)

Datos del evento: CircleEvent

data class CircleEvent(
val state: CircleState,
val clicked: GeoPointInterface
)
  • Ejemplo
Circle(
...,
onClick = { event ->
println("Círculo tocado en: ${event.clicked.latitude}, ${event.clicked.longitude}")
event.state.fillColor = Color.Red.copy(
opacity = 0.7f,
)
},
)

Eventos de polilínea

  • Se llama cuando se toca una polilínea.
PolylineState(
...,
onClick: OnPolylineEventHandler? = null,
)

Datos del evento: PolylineEvent

data class PolylineEvent(
val state: PolylineState,
val clicked: GeoPointInterface
)
  • Ejemplo
Polyline(
...,
onClick = { event ->
println("Polilínea tocada en: ${event.clicked.latitude}, ${event.clicked.longitude}")
event.state.strokeColor = Color.Red
},
)