카카오내비 길찾기 SDK or 카카오내비 길찾기 SDK with UI 관련 문의

카카오내비 SDK와 관련된 질문과 답변을 올리는 카테고리입니다.

카카오내비 길찾기 SDK로 내비를 개발할려고 하는데 몇가지 문의 사항이 있습니다.

  1. 카카오내비 길찾기 SDK를 사용할때 아래 두가지 중 어떤것을 사용해야 하나요
    또한 둘의 차이점이 뭔지에 대해 알고 싶습니다(사용가능한 api가 따로 있는지 등…)
    implementation(“com.kakaomobility.knsdk:knsdk_ui:1.9.4”)
    implementation(“com.kakaomobility.knsdk:knsdk:1.9.4”)
  2. 카카오내비 길찾기 SDK with UI의 작정된 코드로 내비를 띄웠는데
    이 경우 KNNaviView를 이용해 기존 적인 UI 및 안내 구성되 되어 표출되는데
    KNNaviView를 사용하지 않고 KNMapView 등을 이용하여 내비기능 구현이 가능한지 알고 싶습니다.
    가능하다면 주행화면(activity_navi.xml)의 com.kakaomobility.knsdk.ui.view.KNNaviView 대신
    뭘 사용해야 하는지 알고 싶습니다.

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

  1. 두 가지 모두 사용 가능합니다. 차이점은 기본 UI를 제공하느냐 제공하지 않느냐의 차이입니다.

  2. KNSDK_UI에서 제공하는 뷰를 사용하지 않고, KNMapView만으로도 내비게이션 기능 구현이 가능합니다.
    KNSDK_UI가 아닌 KNSDK만 사용해서도 구현할 수 있으며,
    XML 사용 시, <com.kakaomobility.knsdk.map.knmapview.KNMapView>를 이용하실 수 있습니다.
    맵 뷰를 사용할 때는 KNSDK.bindingMapView()를 통해 초기화(필수) 한 후에 사용하시면 됩니다.

감사합니다.

KNSDK.bindingMapView(
knMapView as KNMapView,
KNMapTheme.driveDay() // 주간 드라이브 테마
) { error →
completion?.invoke(error)
if (error != null) {
showToast(“맵 초기화 실패: [${error.code}] ${error.msg}”)
}
}
위와 같이 맵을 초기화 해서 띄워서 확인 했을 때 파란 바탕만 표시되고 맵이 표시 되지 않습니다.
혹시 초기화시 추가적으로 꼭 셋팅해야하는 것이 있는지요? 가령 표출해야 할 좌표(현위치 좌표) 등이 있는지 확인 가능할까요?

KNSDK 사용 시 initializeWithApp 키를 통해 인증이 정상적으로 되었는지 확인하고,
인증 완료 후에 맵뷰를 표시할 수 있는지 확인해 주시기 바랍니다.

맵 바인딩이 오류 없이 정상적으로 완료된 후의 작업은 아래 샘플 코드를 참고해 주시기 바랍니다.

KNSDK.bindingMapView(knMapView as KNMapView, KNMapTheme.driveDay()) { error →
    if (error != null) {
        showToast("맵 초기화 실패: [${error.code}] ${error.msg}")
    } else {
        // 완료된 이후, 
        mapView.setZOderMediaOverlay(true)
        mapView.useTiltGesture = true
        mapView.useZoomGesture = true
        mapView.useBearingGesture = true
        mapView.usePanningGesture = true

        // 위치 이동
        val cameraUpdate = KNMapCameraUpdate().apply {
            bearingTo(0f)
            tiltTo(0f)
            zoomTo(1f)
            targetTo(DoublePoint(표시할 위치 katech 좌표))
        }

        mapView.moveCamera(cameraUpdate, true)
    }
}

감사합니다.