셰이프 이벤트
사용자가 셰이프 이벤트를 통해 지도와 상호 작용하도록 하는 방법을 설명합니다.
클릭 이벤트
InvShape
의 onClickListener
속성으로 사용자가 셰이프를 클릭했을 때의 이벤트를 감지할 수 있습니다. onClick()
콜백 함수로 클릭된 셰이프 객체가 전달됩니다. 하나의 셰이프에는 하나의 클릭 리스너만 설정할 수 있습니다.
marker.setOnClickListener {
Toast.makeText(this, "마커 클릭", Toast.LENGTH_SHORT).show()
true // 이벤트 소비 여부. true로 설정 시 지도로 클릭 이벤트가 전달되지 않는다.
}
클릭 리스너를 해제하려면 onClickListener
속성을 null
로 설정하면 됩니다.
marker.onClickListener = null
이벤트 전파 및 소비
셰이프의 클릭 이벤트는 로직 수행 후 지도의 클릭 이벤트로 전달될 수 있습니다. 필요에 따라서 셰이프 클릭 이벤트에서 이벤트를 소비시켜 클릭 이벤트가 지도로 전달되지 않도록 할 수도 있습니다.
// 지도 클릭 리스너 설정
inaviMap.setOnMapClickListener {
Toast.makeText(context, "지도 클릭", Toast.LENGTH_SHORT).show()
}
// 클릭 이벤트를 소비하는 마커.
// 클릭 시 "마커1 클릭" 토스트 메시지만 표출된다.
marker1.setOnClickListener {
Toast.makeText(this, "마커1 클릭", Toast.LENGTH_SHORT).show()
true // 이벤트를 소비.
}
// 지도까지 클릭 이벤트가 전달되는 마커.
// 클릭 시 "마커2 클릭" 토스트 메시지 -> "지도 클릭" 토스트 메시지 순서대로 표출된다.
marker2.setOnClickListener {
Toast.makeText(this, "마커2 클릭", Toast.LENGTH_SHORT).show()
false // 이벤트를 소비하지 않음.
}