주행 전 설정하기 링크 복사
출발지, 경유지 및 목적지 설정과 차량 정보, 원하는 경로 옵션 등 주행 전에 필요한 정보를 설정합니다.
1. 출발지 및 목적지 설정하기 링크 복사
출발지와 목적지를 설정하여 주행 경로를 생성합니다. Android 길찾기 UI SDK는 카텍(KATEC) 좌표계를 사용하여 위도와 경도를 표시합니다.
주소 값은 선택 사항이며 위도/경도 값과 주소 값이 다를 경우 위도/경도 값을 우선으로 안내합니다.
// 출발지 설정
val start = KNPOI({name}, {longitude}, {latitude}, {address})
// 목적지 설정
val goal = KNPOI({name}, {longitude}, {latitude}, {address})
// 경로 생성
val trip = KNSDK.makeTripWithStart(start, goal, {wayPoints : MutableList<KNPOI>?})
// 출발지 설정
val start = KNPOI({name}, {longitude}, {latitude}, {address})
// 목적지 설정
val goal = KNPOI({name}, {longitude}, {latitude}, {address})
// 경로 생성
val trip = KNSDK.makeTripWithStart(start, goal, {wayPoints : MutableList<KNPOI>?})
2. 상세 정보 설정하기 링크 복사
보다 정확한 길 안내를 위해 차량의 종류, 하이패스 장착 여부, 교통사고 또는 공사 등으로 인한 도로 통행 제한 정보(이하 유고 정보) 반영 여부 등을 설정합니다.
// 차량 정보 및 유고 정보 반영 여부 설정
val routeConfig = KNRouteConfiguration(
{KNCarType}, // 차량의 종류
{KNCarUsage} // 차량의 용도
{Boolean}, // 하이패스 장착 여부
{Boolean}, // 유고 정보 반영 여부
{Int}, // 차량의 전폭
{Int}, // 차량의 전고
{Int}, // 차량의 전장
{Int}) // 차량의 중량
trip?.routeConfig = routeConfig
// 차량 정보 및 유고 정보 반영 여부 설정
val routeConfig = KNRouteConfiguration(
{KNCarType}, // 차량의 종류
{KNCarUsage} // 차량의 용도
{Boolean}, // 하이패스 장착 여부
{Boolean}, // 유고 정보 반영 여부
{Int}, // 차량의 전폭
{Int}, // 차량의 전고
{Int}, // 차량의 전장
{Int}) // 차량의 중량
trip?.routeConfig = routeConfig
3. 경로 옵션 설정하기 링크 복사
경로 안내 시 우선적으로 고려하는 항목(KNRoutePriority
)과 경로 안내에서 회피하고 싶은 구간(KNRouteAvoidOption
)을 선택합니다.
// 경로 옵션 설정
val curRoutePriority = {KNRoutePriority} // 경로 안내에서 우선적 고려 항목
val curAvoidOptions = {KNRouteAvoidOption} // 경로 회피 구간
// 경로 옵션 설정
val curRoutePriority = {KNRoutePriority} // 경로 안내에서 우선적 고려 항목
val curAvoidOptions = {KNRouteAvoidOption} // 경로 회피 구간
예를 들어, 추천 경로로 경로를 안내하되 유고 정보 구간과 교통 약자 보호 구역을 경로에서 회피하고 싶다면, 아래와 같이 value
값을 할당하면 됩니다.
// 경로 옵션 설정
curRoutePriority = KNRoutePriority.KNRoutePriority_Recommand.value
curAvoidOptions = KNRouteAvoidOption.KNRouteAvoidOption_RoadEvent.value or KNRouteAvoidOption.KNRouteAvoidOption_SZone.value
// 경로 옵션 설정
curRoutePriority = KNRoutePriority.KNRoutePriority_Recommand.value
curAvoidOptions = KNRouteAvoidOption.KNRouteAvoidOption_RoadEvent.value or KNRouteAvoidOption.KNRouteAvoidOption_SZone.value
길 안내하기 링크 복사
선택한 옵션들을 바탕으로 경로를 요청하고 요청 성공 시 길 안내를 시작합니다.
경로 요청 시 사용자가 직접 델리게이트 값을 입력하여 자신의 서비스에 맞게 맞춤 설정할 수 있습니다. 입력한 델리게이트 값은 naviView
로 전달해야 합니다.
// 경로 요청
trip.routeWithPriority(curRoutePriority, curAvoidOptions) { error, _ ->
if (error != null) {
handleError(trip, aError)
// 경로 요청 실패
} else {
// 경로 요청 성공
GlobalApplication.knsdk.sharedGuidance()?.apply {
// 각 가이던스 델리게이트 등록
guideStateDelegate = this@KNNaviActivity
locationGuideDelegate = this@KNNaviActivity
routeGuideDelegate = this@KNNaviActivity
safetyGuideDelegate = this@KNNaviActivity
voiceGuideDelegate = this@KNNaviActivity
citsGuideDelegate = this@KNNaviActivity
naviView.initWithGuidance(
this,
trip,
curRoutePriority,
curAvoidOptions
)
}
}
}
// 경로 요청
trip.routeWithPriority(curRoutePriority, curAvoidOptions) { error, _ ->
if (error != null) {
handleError(trip, aError)
// 경로 요청 실패
} else {
// 경로 요청 성공
GlobalApplication.knsdk.sharedGuidance()?.apply {
// 각 가이던스 델리게이트 등록
guideStateDelegate = this@KNNaviActivity
locationGuideDelegate = this@KNNaviActivity
routeGuideDelegate = this@KNNaviActivity
safetyGuideDelegate = this@KNNaviActivity
voiceGuideDelegate = this@KNNaviActivity
citsGuideDelegate = this@KNNaviActivity
naviView.initWithGuidance(
this,
trip,
curRoutePriority,
curAvoidOptions
)
}
}
}
아래의 델리게이트 정보를 참고하여 naviView
와 연동하세요.
정보를 입력한 각각의 델리게이트를 naviView와 연동하지 않을 시 주행 화면이 정상적으로 표시되지 않습니다. 반드시 연동하여 사용하세요.
// KNGuidance_GuideStateDelegate
// 길 안내 시작 시 호출
override fun guidanceGuideStarted(guidance: KNGuidance) {
naviView.guidanceGuideStarted(guidance)
}
// 경로 변경 시 호출. 교통 변화 또는 경로 이탈로 인한 재탐색 및 사용자 재탐색 시 전달
override fun guidanceCheckingRouteChange(guidance: KNGuidance) {
naviView.guidanceCheckingRouteChange(guidance)
}
// 수신 받은 새 경로가 기존의 안내된 경로와 동일할 경우 호출
override fun guidanceRouteUnchanged(guidance: KNGuidance) {
naviView.guidanceRouteUnchanged(guidance)
}
// 경로에 오류가 발생 시 호출
override fun guidanceRouteUnchangedWithError(guidnace: KNGuidance, error: KNError) {
naviView.guidanceRouteUnchangedWithError(guidnace, error)
}
// 경로에서 이탈한 뒤 새로운 경로를 요청할 때 호출
override fun guidanceOutOfRoute(guidance: KNGuidance) {
naviView.guidanceOutOfRoute(guidance)
}
// 수신 받은 새 경로가 기존의 안내된 경로와 다를 경우 호출. 여러 개의 경로가 있을 경우 첫 번째 경로를 주행 경로로 사용하고 나머지는 대안 경로로 설정됨
override fun guidanceRouteChanged(guidance: KNGuidance) {
naviView.guidanceRouteChanged(guidance)
}
// 길 안내 종료 시 호출
override fun guidanceGuideEnded(guidance: KNGuidance) {
naviView.guidanceGuideEnded(guidance)
}
// 주행 중 기타 요인들로 인해 경로가 변경되었을 때 호출
override fun guidanceDidUpdateRoutes(guidance: KNGuidance, routes: List<KNRoute>, multiRouteInfo: KNMultiRouteInfo?) {
naviView.guidanceDidUpdateRoutes(guidance, routes, multiRouteInfo)
}
// KNGuidance_LocationGuideDelegate
// 위치 정보가 변경될 경우 호출. `locationGuide`의 항목이 1개 이상 변경 시 전달됨.
override fun guidanceDidUpdateLocation(guidance: KNGuidance, locationGuide: KNGuide_Location) {
naviView.guidanceDidUpdateLocation(guidance, locationGuide)
}
// KNGuidance_RouteGuideDelegate
// 경로 안내 정보 업데이트 시 호출. `routeGuide`의 항목이 1개 이상 변경 시 전달됨.
override fun guidanceDidUpdateRouteGuide(guidance: KNGuidance, routeGuide: KNGuide_Route) {
naviView.guidanceDidUpdateRouteGuide(guidance, routeGuide)
}
// KNGuidance_SafetyGuideDelegate
// 안전 운행 정보 업데이트 시 호출. `safetyGuide`의 항목이 1개 이상 변경 시 전달됨.
override fun guidanceDidUpdateSafetyGuide(guidance: KNGuidance, safetyGuide: KNGuide_Safety?) {
naviView.guidanceDidUpdateSafetyGuide(guidance, safetyGuide)
}
// 주변의 안전 운행 정보 업데이트 시 호출
override fun guidanceDidUpdateAroundSafeties(guidance: KNGuidance, safeties: List<KNSafety>?) {
naviView.guidanceDidUpdateAroundSafeties(guidance, safeties)
}
// KNGuidance_VoiceGuideDelegate
// 음성 안내 사용 여부
override fun shouldPlayVoiceGuide(guidance: KNGuidance, voiceGuide: KNGuide_Voice, newData: MutableList<ByteArray>): Boolean {
return naviView.shouldPlayVoiceGuide(guidance, voiceGuide, newData)
}
// 음성 안내 시작
override fun willPlayVoiceGuide(guidance: KNGuidance, voiceGuide: KNGuide_Voice) {
naviView.willPlayVoiceGuide(guidance, voiceGuide)
}
// 음성 안내 종료
override fun didFinishPlayVoiceGuide(guidance: KNGuidance, voiceGuide: KNGuide_Voice) {
naviView.didFinishPlayVoiceGuide(guidance, voiceGuide)
}
// KNGuidance_CitsGuideDelegate
// CITS 정보 변경 시 호출
override fun didUpdateCitsGuide(guidance: KNGuidance, citsGuide: KNGuide_Cits) {
naviView.didUpdateCitsGuide(guidance, citsGuide)
}
// KNGuidance_GuideStateDelegate
// 길 안내 시작 시 호출
override fun guidanceGuideStarted(guidance: KNGuidance) {
naviView.guidanceGuideStarted(guidance)
}
// 경로 변경 시 호출. 교통 변화 또는 경로 이탈로 인한 재탐색 및 사용자 재탐색 시 전달
override fun guidanceCheckingRouteChange(guidance: KNGuidance) {
naviView.guidanceCheckingRouteChange(guidance)
}
// 수신 받은 새 경로가 기존의 안내된 경로와 동일할 경우 호출
override fun guidanceRouteUnchanged(guidance: KNGuidance) {
naviView.guidanceRouteUnchanged(guidance)
}
// 경로에 오류가 발생 시 호출
override fun guidanceRouteUnchangedWithError(guidnace: KNGuidance, error: KNError) {
naviView.guidanceRouteUnchangedWithError(guidnace, error)
}
// 경로에서 이탈한 뒤 새로운 경로를 요청할 때 호출
override fun guidanceOutOfRoute(guidance: KNGuidance) {
naviView.guidanceOutOfRoute(guidance)
}
// 수신 받은 새 경로가 기존의 안내된 경로와 다를 경우 호출. 여러 개의 경로가 있을 경우 첫 번째 경로를 주행 경로로 사용하고 나머지는 대안 경로로 설정됨
override fun guidanceRouteChanged(guidance: KNGuidance) {
naviView.guidanceRouteChanged(guidance)
}
// 길 안내 종료 시 호출
override fun guidanceGuideEnded(guidance: KNGuidance) {
naviView.guidanceGuideEnded(guidance)
}
// 주행 중 기타 요인들로 인해 경로가 변경되었을 때 호출
override fun guidanceDidUpdateRoutes(guidance: KNGuidance, routes: List<KNRoute>, multiRouteInfo: KNMultiRouteInfo?) {
naviView.guidanceDidUpdateRoutes(guidance, routes, multiRouteInfo)
}
// KNGuidance_LocationGuideDelegate
// 위치 정보가 변경될 경우 호출. `locationGuide`의 항목이 1개 이상 변경 시 전달됨.
override fun guidanceDidUpdateLocation(guidance: KNGuidance, locationGuide: KNGuide_Location) {
naviView.guidanceDidUpdateLocation(guidance, locationGuide)
}
// KNGuidance_RouteGuideDelegate
// 경로 안내 정보 업데이트 시 호출. `routeGuide`의 항목이 1개 이상 변경 시 전달됨.
override fun guidanceDidUpdateRouteGuide(guidance: KNGuidance, routeGuide: KNGuide_Route) {
naviView.guidanceDidUpdateRouteGuide(guidance, routeGuide)
}
// KNGuidance_SafetyGuideDelegate
// 안전 운행 정보 업데이트 시 호출. `safetyGuide`의 항목이 1개 이상 변경 시 전달됨.
override fun guidanceDidUpdateSafetyGuide(guidance: KNGuidance, safetyGuide: KNGuide_Safety?) {
naviView.guidanceDidUpdateSafetyGuide(guidance, safetyGuide)
}
// 주변의 안전 운행 정보 업데이트 시 호출
override fun guidanceDidUpdateAroundSafeties(guidance: KNGuidance, safeties: List<KNSafety>?) {
naviView.guidanceDidUpdateAroundSafeties(guidance, safeties)
}
// KNGuidance_VoiceGuideDelegate
// 음성 안내 사용 여부
override fun shouldPlayVoiceGuide(guidance: KNGuidance, voiceGuide: KNGuide_Voice, newData: MutableList<ByteArray>): Boolean {
return naviView.shouldPlayVoiceGuide(guidance, voiceGuide, newData)
}
// 음성 안내 시작
override fun willPlayVoiceGuide(guidance: KNGuidance, voiceGuide: KNGuide_Voice) {
naviView.willPlayVoiceGuide(guidance, voiceGuide)
}
// 음성 안내 종료
override fun didFinishPlayVoiceGuide(guidance: KNGuidance, voiceGuide: KNGuide_Voice) {
naviView.didFinishPlayVoiceGuide(guidance, voiceGuide)
}
// KNGuidance_CitsGuideDelegate
// CITS 정보 변경 시 호출
override fun didUpdateCitsGuide(guidance: KNGuidance, citsGuide: KNGuide_Cits) {
naviView.didUpdateCitsGuide(guidance, citsGuide)
}
길 안내 종료하기 링크 복사
목적지까지의 주행이 완료되면 naviViewGuideEnded()
를 통해 주행 종료에 대한 콜백을 전달합니다.
KNNaviView.guideStateDelegate = this
KNNaviView.guideStateDelegate = this