[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
고생 많으십니다. Kakao Map 기반의 프로젝트를 진행하고 있는 대학생 개발자(gunyu1019)입니다.
최근에 배포된 카카오맵 SDK 버전에서 문서에 설명된 내용대로 작동하지 않는 기능이 있어 버그로 제보드리고자 주제를 생성하게 되었습니다.
Android SDK에는 RouteManager.getStylesSet 함수로 등록된 RouteStylesSet를 불러올 수 있는 것으로 알고 있습니다. 관련 래퍼런스
카카오맵을 활용한 관련 프로젝트를 개발하던 도중 NullPointExceptipn
문제를 겪게되었고, 오류를 역추적한 결과 SDK의 문제인 것으로 보여 말씀드리려고 합니다.
환경은 아래와 같습니다.
- IDE 환경: Github Codespace (2-core) / Android Studio Ladybug
- Kotlin 버전: 1.9.25
- Gradle 버전: 8.5.2
- Kakao Map SDK 버전: 2.12.11
- 디버깅 환경: (VPS) MacOS Sonoma 14.7.2 (Apple M1) / Android Studio Ladybug => Android Emulator (API-v35)
문제를 재현하는 방법은 아래와 같습니다.
// kakaoMap 변수 값은 onMapReady 콜백함수가 호출되었을 때, 저장한 값입니다.
val routeManager: RouteLineManager = kakaoMap.getRouteLineManager()!!
val styleSet = routeManager.addStylesSet(
RouteLineStylesSet.from(
MapUtils.getUniqueId(), // MapUtils를 이용하여 임의 ID를 하나 생성합니다.
RouteLineStyles.from(RouteLineStyle.from(10.0F, Color.YELLOW)),
)
)
// RouteLineManager에 StyleSet 등록합니다.
//
// 아래와 같이 Logcat에도 찍히는 것을 확인할 수 있습니다.
// D/K3fAApi ( 7243): [Route] addRouteStyle(id="RouteLine Style ID") --->
val styleSetId = routeManager.addStylesSet(styleSet).let { it.styleId }
val otherStyleId = routeManager.getStylesSet(styleSetId)
// Kotlin Null-safe에 의해 Empty StyleSet이 로그로 호출됩니다.
Log.i("Style", "${otherStyleId?:"Empty Styleset"}")
문제를 추적하기 위해 getStylesSet
함수의 소스코드를 확인해보았습니다.
아래와 같이 this.delegate.getStylesSet()
함수에서 불러온 값을 반환하는 것이 아닌, null을 반환하는 것을 확인하실 수 있습니다.
비슷한 로직을 가지고 있는 PolygonManager
의 getStylesSet
함수의 소스 코드는 아래와 같습니다.
RouteLineManager
과 달리, this.delegate.getStylesSet()
함수에서 불러온 값을 바로 반환하는 것을 확인할 수 있습니다.
따라서 조치를 요청드립니다. 새해 복 많이받으세요.