카카오맵 poi 클릭 이벤트 질문

[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.

안드로이드에서 카카오맵 v2 사용 시에 커스텀으로 생성한 poi 클릭 시 발생하는 이벤트를 수신하는 곳과 poi 클릭 시 이벤트를 처리하고 싶은데

private fun startMapLifeCycle() {
        map?.start(object : MapLifeCycleCallback() {
            override fun onMapDestroy() {
                Log.e("searchFragment1", "onMapDestroy")
            }

            override fun onMapError(error: Exception?) {
                Log.e("searchFragment1", "onMApError", error)
            }

        }, object : KakaoMapReadyCallback() {
            override fun getPosition(): LatLng {
                //startPosition = super.getPosition()
                return super.getPosition()
            }

            override fun getZoomLevel(): Int {
                return 17
            }

            override fun onMapReady(kakaoMap: KakaoMap) {
                Log.e("searchFragment1", "onMapReady")
                kakaoMapValue = kakaoMap
                labelLayer = kakaoMap.labelManager!!.layer
                val trackingManager = kakaoMap.trackingManager

                //선택한 값을 중심으로 poi찍기
                if (pendingLocationData != null) {
                    Log.e("pendingTest", pendingLocationData.toString())
                    loadNearbyPostData(pendingLocationData!!.postId)
                    // 현재 위치를 나타낼 label를 그리기 위해 kakaomap 인스턴스에서 LabelLayer를 가져옵니다.
                    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)
                    val handler = Handler(Looper.getMainLooper())
                    handler.postDelayed(java.lang.Runnable {
                        trackingManager.stopTracking()
                    },1000)
                }

                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 { kakaoMap, labelLayer, label ->
                    //trackingManager.stopTracking()
                    trackingManager?.startTracking(label)
                }*/

                kakaoMapValue!!.setOnCameraMoveStartListener { kakaoMap, gestureType ->
                    sBinding?.poiInfoText?.visibility = View.GONE
                }

                //kakaoMap - KakaoMap
                //position - 클릭한 POI 의 좌표
                //layerId - 클릭한 POI 의 Layer Id
                //poiId - 클릭한 POI 의 Id
                kakaoMapValue!!.setOnPoiClickListener { kakaoMap, latLng, layerId, poiId ->
                    Log.e("poi click", "popopipipipiopoiipio")
                }
}

위 와 같이 생성 후 라벨 위에 만들어진 poi 클릭 시
K3fAApi onPoiClick(id=2, layerId=label_default_layer, name=, lat: 37.636337, lng: 127.068588, x: 531.826172, y: 859.872070)
만 나오고 원하는 Log.e(“poi click”, “popopipipipiopoiipio”)의 로그는 발생하지 않아서 어디서 이벤트를 받아야하는지 질문하고자 합니다

확인해보니, PoiClickListener 로 이벤트가 들어오지 않는 부분은 API 에 문제가 있어서 오늘 중으로 새롭게 배포할 예정입니다.

새 버전으로 바꿔서 확인해 보시기 바랍니다. 그 밖에, Label 의 클릭은 LabelClickListener 에서도 이벤트 확인이 가능합니다.

2.11.9 버전에서 확인 부탁 드립니다.

1개의 좋아요

넵! 답변 감사합니다. 좋은 하루 되세요~