지도 첫 표시가 2.4초 — onMapReady 1초, 타일 신호 부재

[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초 동안 로딩
화면이 보입니다.

문의

  1. MapView 생성부터 onMapReady까지 약 1초가 걸립니다. 이 구간에서 SDK가
    무엇을 하는지, 앱이 줄일 수 있는 부분이 있는지 알고 싶습니다.
    (인증, 리소스 로드, GL 컨텍스트 생성 중 어디가 지배적인지)
  2. 타일이 처음 그려졌음을 알 수 있는 콜백이 있나요? iOS
    MapControllerDelegate/KakaoMapEventDelegate와 Android KakaoMap 리스너를
    전수 확인했지만 찾지 못했습니다. 이 신호가 없으면 로딩 화면을 걷는
    시점을 정확히 맞출 수 없습니다.
  3. 타일 미도착 영역의 배경색(#A3D6EB)을 지정하는 API가 있나요? 첫 표시와
    캐시 밖 영역 이동에서 이 하늘색이 전체 화면으로 노출되는데, 앱 배경과
    달라 지도가 로딩 중이 아니라 바다로 보입니다. 흰색이나 앱 배경색으로
    바꿀 수 있으면 좋겠습니다.
  4. 화면에 붙이기 전에 엔진을 미리 준비해 두는 공식적인 방법이 있나요?
    미리 MapView를 만들어 두는 방식은 시도했는데, 엔진 준비가 window에
    attach되는 시점부터 시작되어 onMapReady 도착이 앞당겨지지 않았습니다.
  5. 오프라인 타일 캐시나 초기 영역 프리페치처럼 첫 표시를 앞당기는
    권장 방법이 있나요?

지도 앱 SDK입니다.

우선, 지도 타일 로딩 자체 걸리는 시간은 캐싱여부와 인터넷 환경 또는 드물게 오래된 기기에 따라 편차가 큽니다.

답변 드리기 앞서 원인을 제대로 파악하기 위해, 지도가 늦게 로딩되는 상황에 대한 동영상을 첨부해주실 수 있을까요?

  • 지도를 첫번째 띄우고, 종료했다가 다시 두번째 띄우고 종료하고, 세번째까지 뜨는 짧은 영상이면 될 것 같습니다.