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? = nullDatos 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? = nullDatos 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 arrastreonDrag: Se llama continuamente durante el arrastreonDragEnd: 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 },)