[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
안녕하세요. 지도 첫 표시 지연에 대해 문의드립니다.
환경
- SDK: com.kakao.maps.open:android:2.15.0
- 기기: Galaxy A15 (SM-A155N), Android 16 (API 36), MediaTek MT6789
- 구성: Flutter PlatformView 안에서 MapView를 사용합니다. 탭 진입 시
MapView를 mount하고 KakaoMapReadyCallback을 기다립니다.
실측
콜드 실행을 30fps 화면 녹화로 프레임 단위 분해하고, 같은 실행의 SDK
체크포인트를 함께 기록했습니다. MapView 생성 시각을 0으로 둔 값입니다.
+257ms 뷰 first pre-draw
+558ms child surface created (KGLSurfaceView)
+1040ms onMapReady
+1330ms 빈 지도 배경이 화면에 보이기 시작
+1600ms 타일이 처음 그려짐
+2400ms 타일이 대체로 채워짐
즉 MapView 생성부터 실제 지도가 보이기까지 약 1.6초, 충분히 채워지기까지
약 2.4초가 걸립니다. 타일은 한 순간에 나타나지 않고 약 1.3초에 걸쳐
점진적으로 상세도가 올라갑니다.
저희는 그 사이 빈 지도가 노출되지 않도록 자체 로딩 화면을 덮어두는데,
걷어낼 시점을 onMapReady로 잡고 있어 결과적으로 약 1.4초 동안 로딩
화면이 보입니다.
문의
- MapView 생성부터 onMapReady까지 약 1초가 걸립니다. 이 구간에서 SDK가
무엇을 하는지, 앱이 줄일 수 있는 부분이 있는지 알고 싶습니다.
(인증, 리소스 로드, GL 컨텍스트 생성 중 어디가 지배적인지) - 타일이 처음 그려졌음을 알 수 있는 콜백이 있나요? iOS
MapControllerDelegate/KakaoMapEventDelegate와 Android KakaoMap 리스너를
전수 확인했지만 찾지 못했습니다. 이 신호가 없으면 로딩 화면을 걷는
시점을 정확히 맞출 수 없습니다. - 타일 미도착 영역의 배경색(#A3D6EB)을 지정하는 API가 있나요? 첫 표시와
캐시 밖 영역 이동에서 이 하늘색이 전체 화면으로 노출되는데, 앱 배경과
달라 지도가 로딩 중이 아니라 바다로 보입니다. 흰색이나 앱 배경색으로
바꿀 수 있으면 좋겠습니다. - 화면에 붙이기 전에 엔진을 미리 준비해 두는 공식적인 방법이 있나요?
미리 MapView를 만들어 두는 방식은 시도했는데, 엔진 준비가 window에
attach되는 시점부터 시작되어 onMapReady 도착이 앞당겨지지 않았습니다. - 오프라인 타일 캐시나 초기 영역 프리페치처럼 첫 표시를 앞당기는
권장 방법이 있나요?
지도 앱 SDK입니다.