[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”)의 로그는 발생하지 않아서 어디서 이벤트를 받아야하는지 질문하고자 합니다