오늘은 Custom 한 Poi 클릭 리스너를 등록해보겠다.
버전 2.11.9 여태 KakaoMap?.setOnPoiClickListener이 PoiClickListener 로 이벤트가 들어오지 않는 부분은 API 에 문제가 있었던 것 같습니다.
그래서 이번에 배포된 2.11.9 신 버전으로 고쳐 보도록하겠습니다.
// override fun onMapReady의 안
// 현재 위치를 나타낼 label를 그리기 위해 kakaomap 인스턴스에서 LabelLayer를 가져옵니다.
//poi 생성
val layer = kakaoMap.labelManager!!.layer
startPosition = LatLng.from(pendingLocationData!!.latitude, pendingLocationData!!.longitude)
// LabelLayer에 라벨을 추가합니다. 카카오 지도 API 공식 문서에 지도에서 사용하는 이미지는 drawable-nodpi/ 에 넣는 것을 권장합니다.
//Label 을 생성하기 위해 초기화 값을 설정하는 클래스.
centerLabel = layer!!.addLabel(
LabelOptions.from(pendingLocationData!!.postId.toString(), startPosition)
.setStyles(
LabelStyle.from(R.drawable.map_poi_sr2).setAnchorPoint(0.5f, 0.5f)
)
.setRank(1) //우선순위
)
trackingManager!!.startTracking(centerLabel)
kakaoMapValue!!.setOnMapClickListener { kakaoMap, latLng, pointF, poi ->
// POI 정보창 표시
//showInfoWindow(position, poi)
//showInfoWindow(poi, pointF)
Log.e("kakaoMapValue", "$latLng $pointF ${poi.name}")
Log.e("poi click", poi.name)
Log.e("poi click", poi.poiId)
Log.e("poi click", poi.isPoi.toString())
Log.e("poi click", poi.isPoi().toString())
Log.e("poi click", poi.getPoiId())
/*if (poi.isPoi()) {
Log.e("poi click", "popopipipipiopoiipio")
}*/
}
kakaoMapValue!!.setOnLabelClickListener { _, _, label ->
if (label != null) { //return 값이 true 이면, 이벤트가 OnLabelClickListener 에서 끝난다.
trackingManager?.startTracking(label)
return@setOnLabelClickListener true
} else { //return 값이 false 이면, 이벤트가 OnPoiClickListener, OnMapClickListener 까지 전달된다.
return@setOnLabelClickListener false
}
}
위와 같은 방식으로 poi와 label의 클릭이벤트를 처리할 수 있게 되었다.