이 문서는 Kakao SDK for Android(이하 Android SDK)를 사용한 카카오내비 API 구현 방법을 소개합니다.
카카오내비 API는 길 안내의 navigateIntent()
와 목적지 공유의 shareDestinationIntent()
두 가지 주요 기능을 제공합니다.
navigateIntent()
또는 shareDestinationIntent()
는 카카오내비 앱으로 목적지 공유 및 길 안내 기능을 실행하는 Intent
를 반환합니다. 카카오내비 앱이 설치되어 있을 경우에는 앱을 호출하고, 그렇지 않을 경우에는 기본 브라우저로 설치 페이지를 엽니다.
사용자 기기에 카카오내비 앱이 설치되어 있는지 확인하려면 isKakaoNaviInstalled()
API를 사용합니다. 다음은 카카오내비 앱 실행 여부를 출력해보는 예제입니다.
if (NaviClient.instance.isKakaoNaviInstalled(context)) {
Log.i(TAG, "카카오내비 앱으로 길 안내 가능")
} else {
Log.i(TAG, "카카오내비 미설치")
}
레퍼런스 | 앱 설정 |
---|---|
[SDK] navigateIntent() [SDK] Location [SDK] NaviOption |
설치 초기화 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
- | 플랫폼 등록 | - | - |
카카오내비를 실행하여 목적지까지의 길을 안내합니다.
Android SDK 2.8.4부터 카카오내비 앱 미설치 시 웹에서 길 안내를 실행하는 기능을 더 이상 제공하지 않습니다. 카카오내비 앱이 설치돼 있지 않은 경우에는 설치 페이지로 이동합니다. 이전 버전에서 제공하는 웹 길 안내 기능 또한 추후 제공 종료될 예정이므로, 최신 버전 업데이트를 권장합니다.
NaviClient
의 navigateIntent()
를 호출해 Intent
를 반환 받아 실행하도록 구현합니다.
navigateIntent()
호출 시 목적지 정보를 담은 Location
, 검색 조건을 담은 NaviOption
객체를 전달해야 합니다. NaviOption
에는 원하는 검색 조건만 지정하여 요청할 수 있습니다. 자세한 정보는 레퍼런스를 참고합니다.
startX
, startY
, startAngle
파라미터를 사용해 경로 검색 시 참고할 출발 지점을 지정할 수 있습니다. 그러나 길 안내 시에는 사용자의 현재 위치로부터 목적지까지의 안내만을 제공하며, 별도의 출발 지점을 지정할 수는 없습니다.
// 카카오내비 앱으로 길 안내
if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
// 카카오내비 앱으로 길 안내 - WGS84
startActivity(
NaviClient.instance.navigateIntent(
Location("카카오 판교오피스", "127.108640", "37.402111"),
NaviOption(coordType = CoordType.WGS84)
)
)
} else {
// 카카오내비 설치 페이지로 이동
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(Constants.WEB_NAVI_INSTALL)
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
)
}
경유지 목록 설정이 가능합니다. 각 경유지 정보를 Location
객체에 담고, 요청 시 viaList
파라미터로 경유지 Location
의 리스트(List)를 전달합니다.
if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
// 카카오내비 앱으로 길 안내 - WGS84 - 경유지 추가
startActivity(
NaviClient.instance.navigateIntent(
Location("카카오 판교오피스", "127.108640", "37.402111"),
NaviOption(coordType = CoordType.WGS84),
// 경유지 목록 설정
listOf(
Location("판교역 1번출구", "127.111492", "37.395225")
)
)
)
} else {
// 카카오내비 설치 페이지로 이동
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(Constants.WEB_NAVI_INSTALL)
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
)
}
레퍼런스 | 앱 설정 |
---|---|
[SDK] shareDestinationIntent() [SDK] Location [SDK] NaviOption |
설치 초기화 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
- | 플랫폼 등록 | - | - |
카카오내비를 실행하여 지정한 목적지 정보를 공유합니다.
NaviClient
의 shareDestinationIntent()
를 호출해 Intent
를 반환 받아 실행하도록 구현합니다.
shareDestinationIntent()
호출 시 목적지 정보를 담은 Location
, 검색 조건을 담은 NaviOption
객체를 전달해야 합니다. NaviOption
에는 원하는 검색 조건만 지정하여 요청할 수 있습니다. 자세한 정보는 레퍼런스를 참고합니다.
startX
, startY
, startAngle
파라미터를 사용해 경로 검색 시 참고할 출발 지점을 지정할 수 있습니다. 그러나 길 안내 시에는 사용자의 현재 위치로부터 목적지까지의 안내만을 제공하며, 별도의 출발 지점을 지정할 수는 없습니다.
if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
// 카카오내비 앱으로 목적지 공유하기 - WGS84
startActivity(
NaviClient.instance.shareDestinationIntent(
Location("카카오 판교오피스", "127.108640", "37.402111"),
NaviOption(coordType = CoordType.WGS84)
)
)
} else {
// 카카오내비 설치 페이지로 이동
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(Constants.WEB_NAVI_INSTALL)
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
)
}
경유지 목록 설정이 가능합니다. 각 경유지 정보를 Location
객체에 담고, 요청 시 viaList
파라미터로 경유지 Location
의 리스트(List)를 전달합니다.
// 카카오내비 앱으로 목적지 공유하기 - 경유지 추가
if (NaviClient.instance.isKakaoNaviInstalled(requireContext())) {
// 카카오내비 앱으로 목적지 공유하기 - WGS84
startActivity(
NaviClient.instance.shareDestinationIntent(
Location("카카오 판교오피스", "127.108640", "37.402111"),
NaviOption(coordType = CoordType.WGS84),
// 경유지 목록 설정
listOf(
Location("판교역 1번출구", "127.111492", "37.395225")
)
)
)
} else {
// 카카오내비 설치 페이지로 이동
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(Constants.WEB_NAVI_INSTALL)
).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)
)
}