Event Handlers
MapConductor provides comprehensive event handling for user interactions with the map and its components. Map events are handled on the MapView component, and overlay events are configured on each State.
MapView( ..., onMapLoaded: OnMapLoadedHandler? = null, onMapClick: OnMapEventHandler? = null, onMapLongClick: OnMapEventHandler? = null, onCameraMoveStart: OnCameraMoveHandler? = null, onCameraMove: OnCameraMoveHandler? = null, onCameraMoveEnd: OnCameraMoveHandler? = null,) { }Map Events
Map Initialization
- Called when the map has finished loading and is ready for interaction.
onMapLoaded: OnMapLoadedHandler? = null- Example
MapView( ... onMapLoaded: { println("Map loaded") },) { ...}Map Interactions
- Called when the user taps the map (an area that is not an overlay).
onMapClick: OnMapEventHandler? = nullEvent data: GeoPointInterface - geographic coordinate that was tapped
- Example
MapView( ... onMapClick = { geoPoint -> println("Map clicked at: ${geoPoint.latitude}, ${geoPoint.longitude}") }) { ...}onMapLongClick
- Called when the user long-presses the map (an area that is not an overlay).
onMapLongClick: OnMapEventHandler? = nullEvent data: GeoPointInterface - geographic coordinate that was long-pressed
- Example
MapView( onMapLongClick = { geoPoint -> println("Long-pressed at: ${geoPoint.latitude}, ${geoPoint.longitude}") }) { // ...}Marker Events
All marker events receive a MarkerState object that contains the marker’s current state.
Click Event
- Called when a marker is tapped.
MarkerState( ..., onClick: OnMarkerEventHandler? = null,)- Example
val markerState = MarkerState( ..., onClick = { marker -> println("Marker clicked at: ${marker.position.latitude}, ${marker.position.longitude}") },)
Marker(markerState)Drag Events
onDragStart: Called when dragging startsonDrag: Called continuously while draggingonDragEnd: Called when dragging ends
MarkerState( ..., onDragStart: OnMarkerEventHandler? = null, onDrag: OnMarkerEventHandler? = null, onDragEnd: OnMarkerEventHandler? = null,)var markerState = MarkerState( ..., draggable = true, onDragStart = { draggedMarker -> println("Drag started: ${draggedMarker.id}") }, onDrag = { draggedMarker -> if (draggedMarker.id == markerState.id) { markerState = markerState.copy(position = draggedMarker.position) } }, onDragEnd = { draggedMarker -> println("Drag ended: ${draggedMarker.id}") },)
Marker(markerState)Animation Events
- Called when marker animations start and end.
MarkerState( ..., onAnimateStart: OnMarkerEventHandler? = null, onAnimateEnd: OnMarkerEventHandler? = null,)Overlay Events
Circle Events
- Called when a circle is tapped.
CircleState( ..., onClick: OnCircleEventHandler? = null,)Event data: CircleEvent
data class CircleEvent( val state: CircleState, val clicked: GeoPointInterface)- Example
Circle( ..., onClick = { event -> println("A circle clicked at: ${event.clicked.latitude}, ${event.clicked.longitude}")
event.state.fillColor = Color.Red.copy( opacity = 0.7f, ) },)Polyline Events
- Called when a polyline is tapped.
PolylineState( ..., onClick: OnPolylineEventHandler? = null,)Event data: PolylineEvent
data class PolylineEvent( val state: PolylineState, val clicked: GeoPointInterface)- Example
Polyline( ..., onClick = { event -> println("A polyline clicked at: ${event.clicked.latitude}, ${event.clicked.longitude}")
event.state.strokeColor = Color.Red },)