KNSDK_UI 최초 실행시 맵이 표시 안되는 현상이 있습니다

카카오내비 SDK와 관련된 질문과 답변을 올리는 카테고리입니다.
KNSDK_UI 버전 1.9.4 앱 최초 설치 실행시 지도가 표시되지 않는 현상이 있습니다.(이미지1)에러는 발생되지 않으며 2번째 시도 부터는 지도가 잘 표시 됩니다. 왜 그런지 알 수 있을까요?

그리고 화살표 대신 차종 아이콘으로 나타나게 하고 싶은데 가능한 방법이 있을까요?(이미지2의 빨간표시부분)
그리고 하단 오른쪽 메뉴 버튼의 안내종료 버튼클릭 이벤트를 받는 방법이 있을까요?
guideStateDelegate 연결했는데 해당 버튼 클릭시 override fun naviViewGuideEnded() 함수 호출이 안됩니다. (이미지3)



안녕하세요, 카카오모빌리티 기술 제휴 담당자입니다.

  1. 지도 표시 관련
    → 카카오내비 SDK 1.9.4 버전에서 발생했던 지도 표시 오류는 최신 버전에서 수정되었습니다. 정상적인 사용을 위해 최신 버전(1.10.5 또는 1.10.5-hotfix01)으로 업데이트해 주시기 바랍니다.

  2. 차종 아이콘 관련
    → 아래 코드 참고 부탁드립니다.

val imageIds_d = mutableListOf(주간 On 아이콘 resource ID, 주간 Off 아이콘  resource ID)
val imageIds_n = mutableListOf(야간 On 아이콘 resource ID, 야간 Off 아이콘  resource ID)
var aRect = RectF(0f, 0f, 84f, 84f) //표시될 영역 사이즈
KNNaviView.mapComponent.setCustomCarImages(aRect, FloatPoint(.5f, .5f), imageIds_d, imageIds_n)
  1. 안내 종료 버튼 클릭 이벤트 관련
    → 해당 부분은 주행 시작 부분의 구현부가 어떻게 작성이 되어있는지 확인이 필요할 것 같습니다.

감사합니다.

  1. 지도표시 관련
    ->sdk1.9.4 버전으로 수정 후에도 동일한 현상이 발생됩니다… 뭔가 설정을 잘못해서 그런 걸까요??

1.9.4는 버그픽스가 되지 않은 버전입니다.

1.10.5 또는 1.10.5-hotfix01으로 사용해 주시면 됩니다.

감사합니다.

버전을 제가 잘못 적었네요… 말씀하신 1.10.5 적용시에도 동일합니다.
혹시 몰라 1.10.5-hotfix01 버전으로도 적용해서 테스트 했는데 지도가 표시되지 않습니다.

아래 항목들 확인 부탁드립니다.

  • initializeWithAppKey 호출 이후, Error가 발생하지 않고 초기화가 완료되었는지 확인이 필요할 것 같습니다. 그리고, 초기화 이후에 주행시작이 진행된 것인지 확인부탁드립니다
  • KNSDK 인증 전,후로 하여 KNMapView를 별도로 설정하신 부분이 있는지 확인부탁드립니다.
    Ex) KNSDK.bindingMapView 호출 등

에러는 발생되지 않았고 지도캡은 따로 설정하지 않았습니다.
내비화면에서 카카오내비 사용을 위한 초기설정 및 주행요청 소스 첨부해봅니다.
fun knsdkAuth() {
KNApplication.knsdk.apply {
initializeWithAppKey(
aAppKey = BuildConfig.REAL_APP_KEY, // 카카오디벨로퍼스에서 부여 받은 앱 키
aClientVersion = BuildConfig.VERSION_NAME, // 현재 앱의 클라이언트 버전
aAppUserId, // 사용자 id
aLangType = KNLanguageType.KNLanguageType_KOREAN, // 언어 타입
aCompletion = {

                // Toast는 UI를 갱신하는 작업이기 때문에 UIThread에서 동작되도록 해야 합니다.
                runOnUiThread {
                    if (it != null) {
                        Toast.makeText(applicationContext, "인증에 실패하였습니다", Toast.LENGTH_LONG).show()

                    } else {
                        Toast.makeText(applicationContext, "인증 성공하였습니다", Toast.LENGTH_LONG).show()

                        requestRoute();
                    }
                }
            })
    }
}

fun requestRoute(){
Thread{

        var point: DoublePoint = KNApplication.knsdk.convertWGS84ToKATEC(lan.toDouble(),lat.toDouble())//목적지

        var curPoint:DoublePoint = KNSDK.sharedGpsManager()?.recentGpsData?.pos?:DoublePoint(
            KN_DEFAULT_POS_X.toDouble(), KN_DEFAULT_POS_Y.toDouble())

// val nowPos = (KNSDK.sharedGpsManager()?.lastValidGpsData?.pos ?: FloatPoint(314870f,542995f))
// 출발지와 목적지를 설정합니다.//KATEC좌표계

        val startPoi = KNPOI("현위치", curPoint.x.toInt(),curPoint.y.toInt(),"현위치")//val startPoi = KNPOI("현위치", (KNSDK.sharedGpsManager()?.lastValidGpsData?.pos?.x?.toInt():314870))// val startPoi = KNPOI("현위치", 309840,552483,"현위치")
        val goalPoi = KNPOI(name, point.x.toInt(),point.y/*.toString().split(".")[0]*/.toInt(),addr)//val goalPoi = KNPOI("목적지", 321497,532896,"목적지")
        KNApplication.knsdk.makeTripWithStart(
            aStart = startPoi,
            aGoal = goalPoi,
            aVias = null
        )
        { aError, aTrip ->
            //경로 요청이 성공하면 aError는 Null이 됩니다.
            if (aError == null) {
                startGuide(aTrip)
            }
        }
    }.start()
}