카카오맵 ClickLisner 느림

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

안녕하세요. 구 SDK 종료로, SDK v2.0 으로 앱 업데이트를 진행하고있습니다.

Android 와 iOS 둘다 네이티브로 진행중이고, 각각 Kotlin 과 Swift 로 개발 진행중입니다.

관련하여서, 지도에서 POI 쪽에 마커와, 마커를 클릭시에 동작을 위해서 해당 부분에 리스너를 달아 동작하고있는데,
리스너 자체가 느리게 동작하는 느낌입니다…
기존에 daum맵에서는 마커를 클릭하면 바로 리스너에 달아둔 동작이 작동했는데,
현재 변경된 부분에서는 Android는 0.2초… iOS 는 1초정도… 딜레이 이후에 리스너에 달아둔 동작이 작동하고있습니다.
내부적으로 로그를 찍어볼때는 클릭리스너 자체에서 인식하는게 느린것같아보여서,

아래에 첨부된 코드에서 혹시 문제가 되는 부분이 있다면 알려주시면 감사하겠습니다,

Android :

class MapKakaoFragment : BaseFragment(), KakaoMap.OnMapClickListener, KakaoMap.OnLabelClickListener {
// 초기 implement로 호출

    mapView!!.start(object : MapLifeCycleCallback() {
        override fun onMapDestroy() {
            mapView!!.finish()
        }

        override fun onMapError(error: Exception) {
        }
    }, object : KakaoMapReadyCallback() {
        override fun onMapReady(kakaoMap: KakaoMap) {
            // 인증 후 API 가 정상적으로 실행될 때 호출됨
            LogUtil.d(TAG, "Kakao Map onReady")
            mKakaoMap = kakaoMap
            labelLayer = kakaoMap.labelManager!!.layer!!

            // 라벨 클릭 리스너 달아두기
            mKakaoMap.setOnLabelClickListener{ kakaoMap, labelLayer, label ->
                LogUtil.d(TAG, "KakaoMap : " + kakaoMap + "  ,  LabelLayer : " + labelLayer + "  , Label : " + label )
                onLabelClicked(kakaoMap, labelLayer, label)
            }
            // 기타 내용들 불러오는 함수
            initMapView(mCurrentLocation)
        }

/// overide 된 클릭 리스너
override fun onLabelClicked(p0: KakaoMap?, p1: LabelLayer?, p2: Label?) {
// TODO(“Not yet implemented”)
LogUtil.d(TAG, "onLabelClicked(), KakaoMap : " + p0 + " , LabelLayer : " + p1 + " , Label : " + p2 )

// 이후 라벨 생성

        val pos = LatLng.from(vo.latitude.toDouble(), vo.longitude.toDouble())

        // 라벨 스타일 생성
        val styles: LabelStyles? = kakaoMap.labelManager?.addLabelStyles(
            LabelStyles.from(
                LabelStyle.from(StoreUtil.getDelegateStoreTypeIcon(vo.storeTypeIcon))
                    .setIconTransition(LabelTransition.from(Transition.None, Transition.None))
            )
        )
        // 라벨 생성
        labelLayer.addLabel(LabelOptions.from(vo.storeName, pos).setStyles(styles).setClickable(true))

안드로이드에서는 POI maker 에서 Label로 변경된것으로 공식문서상에서는 보여, Label을 이용하였습니다.

iOS. :

func addViews() {

let defaultPosition: MapPoint = MapPoint(longitude: Double(self.currentLongitude), latitude: Double(self.currentLatitude))

let mapviewInfo: MapviewInfo = MapviewInfo(viewName: “mapview”, appName: “openmap”, viewInfoName: “map”, defaultPosition: defaultPosition, defaultLevel: 16)

mapController?.addView(mapviewInfo)
}

func addViewSucceeded(_ viewName: String, viewInfoName: String) {

createPoiStyle()
}

func createPoiStyle() {

let poi = positionLayer?.addPoi(option: poiOption, at: mapPoint)
let _ = poi?.addPoiTappedEventHandler(target: self, handler: MapViewManager.poiTappedHandler(_:))
poi?.show()
}

func poiTappedHandler(_ param: PoiInteractionEventParam) {
param.poiItem.hide()
}

감사합니다

아 추가적으로 앱키가 등록된 계정은 다른계정입니다…

@gsu2520
사용자로부터 탭이 발생하면 해당 이벤트가 탭인지 추가적인 탭을 통한 더블탭을 위한 과정인지에 대한 처리를 위해 첫번째 탭을 인식했더라도 약간 대기하는 대기시간이 존재합니다. 이 시간은 현재 여유있게 450ms 정도로 잡혀있습니다. 다만 이 대기시간은 쓰레드에서 반복적으로 이벤트를 확인하면서 시간을 확인하기 때문에 약간씩 실제 처리시간은 환경이나 상황에 따라 약간씩 달라질 수 있습니다.