사용자가 셰이프 이벤트를 통해 지도와 상호 작용하도록 하는 방법을 설명합니다.
Last updated 5 years ago
Was this helpful?
의 속성으로 사용자가 셰이프를 클릭했을 때의 이벤트를 감지할 수 있습니다. 콜백 함수로 클릭된 셰이프 객체가 전달됩니다. 하나의 셰이프에는 하나의 클릭 리스너만 설정할 수 있습니다.
marker.setOnClickListener { Toast.makeText(this, "마커 클릭", Toast.LENGTH_SHORT).show() true // 이벤트 소비 여부. true로 설정 시 지도로 클릭 이벤트가 전달되지 않는다. }
클릭 리스너를 해제하려면 속성을 null로 설정하면 됩니다.
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 // 이벤트를 소비하지 않음. }
InvShape
onClickListener
onClick()