셰이프 이벤트

사용자가 셰이프 이벤트를 통해 지도와 상호 작용하도록 하는 방법을 설명합니다.

클릭 이벤트

InvShapeonClickListener 속성으로 사용자가 셰이프를 클릭했을 때의 이벤트를 감지할 수 있습니다. 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 // 이벤트를 소비하지 않음.
}

Last updated