コンテンツにスキップ

イベントハンドラ

MapConductor は、マップとそのコンポーネントに対するユーザーインタラクションのイベント処理を包括的に提供します。 マップのイベントは MapView コンポーネントで処理し、オーバーレイのイベントは各 State に設定します。

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

マップイベント

マップ初期化

  • マップの読み込みが完了し、インタラクションの準備ができたときに呼び出されます。
onMapLoaded: OnMapLoadedHandler? = null
MapView(
...
onMapLoaded: {
println("Map loaded")
},
) {
...
}

マップインタラクション

  • ユーザーがマップ(オーバーレイではない部分)をタップしたときに呼び出されます。
onMapClick: OnMapEventHandler? = null

イベントデータ: GeoPointInterface - タップされた地理座標

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

onMapLongClick

  • ユーザーがマップ(オーバーレイではない部分)を長押ししたときに呼び出されます。
onMapLongClick: OnMapEventHandler? = null

イベントデータ: GeoPointInterface - 長押しされた地理座標

MapView(
onMapLongClick = { geoPoint ->
println("長押しした位置: ${geoPoint.latitude}, ${geoPoint.longitude}")
}
) {
// ...
}

マーカーイベント

すべてのマーカーイベントは、マーカーの現在の状態を含む MarkerState オブジェクトを受け取ります。

クリックイベント

  • マーカーがタップされたときに呼び出されます。
MarkerState(
...,
onClick: OnMarkerEventHandler? = null,
)
val markerState = MarkerState(
...,
onClick = { marker ->
println("Marker clicked at: ${marker.position.latitude}, ${marker.position.longitude}")
},
)
Marker(markerState)

ドラッグイベント

  • onDragStart: ドラッグ開始時に呼び出されます
  • onDrag: ドラッグ中に継続的に呼び出されます
  • onDragEnd: ドラッグ終了時に呼び出されます
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)

アニメーションイベント

  • マーカーアニメーションの開始時と終了時に呼び出されます。
MarkerState(
...,
onAnimateStart: OnMarkerEventHandler? = null,
onAnimateEnd: OnMarkerEventHandler? = null,
)

オーバーレイイベント

円イベント

  • 円がタップされたときに呼び出されます。
CircleState(
...,
onClick: OnCircleEventHandler? = null,
)

イベントデータ: CircleEvent

data class CircleEvent(
val state: CircleState,
val clicked: GeoPointInterface
)
Circle(
...,
onClick = { event ->
println("A circle clicked at: ${event.clicked.latitude}, ${event.clicked.longitude}")
event.state.fillColor = Color.Red.copy(
opacity = 0.7f,
)
},
)

ポリラインイベント

  • ポリラインがタップされたときに呼び出されます。
PolylineState(
...,
onClick: OnPolylineEventHandler? = null,
)

イベントデータ: PolylineEvent

data class PolylineEvent(
val state: PolylineState,
val clicked: GeoPointInterface
)
Polyline(
...,
onClick = { event ->
println("A polyline clicked at: ${event.clicked.latitude}, ${event.clicked.longitude}")
event.state.strokeColor = Color.Red
},
)