brunch

iNAVI Navigation SDK

by 아이나비시스템즈
맵스플랫폼 사업팀_브런치 (13).png



Ep.13

iNAVI Navigation SDK 소개


SDK(Software Development Kit)란 개발자를 위한 플랫폼별 구축 도구 세트로, Application에 통합할 수 있는 사전 빌드 된 구성 요소와 Library를 제공하여 개발 효율성을 높일 수 있는 도구입니다. 이러한 구성 요소와 Library를 통해 개발자는 처음부터 코딩 및 디버깅하는 데 소요되던 시간과 비용을 크게 절약할 수 있습니다.


아이나비시스템즈는 ‘아이나비 에어’ 내비게이션을 기반으로 한 Navigation SDK를 제공하여, 내비게이션 개발에 대한 부담 없이 3rd Party Application 내비게이션 서비스를 포함할 수 있도록 지원합니다.

0*4e7tkiNurHFGj4Jc



iNAVI Navigation SDK 적용 방법


아이나비의 Navigation SDK는 Android, iOS Library를 Cloud 방식인 Jflog Artifactory(Android)와 Cocoapods(iOS)로 제공하고 있습니다. 특히 새로운 버전이 업데이트되면 해당 Cloud에 업로드하고 있어, 개발자는 Library를 직접 다운로드하여 관리할 필요 없이 개발 플랫폼별 세팅을 통해 최신 버전의 Navigation SDK Library를 3rd Party 앱에 추가할 수 있습니다.


Android
SDK 세팅 방법


1. SDK 저장소 추가

a. Root Project build.gradle 파일


/* Root Project build.gradle */
allprojects {
repositories {
maven { url 'https://repo.inavi.com/artifactory/navigation/>' }
}
}



iOS
SDK 적용 방법


1. Podfile 구성

a. 참고 : CocoaPods.org

b. SDK는 CocoaPods를 통해 배포되므로, 다음과 같이 프로젝트의 Podfile에 SDK에 대한 의존성을 추가합니다.


target 'naviSDKSample' do
pod 'inavi-navigation-sdk'



Library를 적용한 후에는, Library에서 제공하는 API List를 통해 SDK 제공 기능을 확인할 수 있으며, 이를 활용하여 3rd Party 앱에서 원하는 특화 기능을 개발할 수 있습니다.


setMapPosition


fun setMapPosition(lat: Double, lon: Double, angle: Double)

Description : 지도를 특정 위치로 이동

Param
- lat : 위도 (이동 시킬 좌표의 y값 [WGS84])
- lot : 경도 (이동 시킬 좌표의 x값 [WGS84])
- angle : 각도
Return : void



zoomIn


fun zoomIn()

Description : 현재 레벨에서 한 단계 확대

Param : void
Return : void



zoomOut


fun zoomOut()

Description : 현재 레벨에서 한 단계 축소

Param : void
Return : void



초기화 성공 이후 API를 호출하면 해당하는 기능을 수행하며, 대략적인 Lifecycle은 아래와 같습니다.

0*vaS65WW7afciKmPX



제공 기능


기본적으로 내비게이션의 핵심 기능인 통합검색, 길 찾기, 주행 안내를 제공합니다. 이를 통해 사용자는 ‘아이나비 에어’와 동일한 수준의 고품질 내비게이션 서비스를 경험할 수 있습니다.


뿐만 아니라 3rd Party 앱 개발자가 자신의 앱에 추가적인 기능을 구현할 수 있도록 다양한 옵션도 제공합니다. 예를 들어, 실시간 교통정보를 표시하거나, 화물차에 특화된 경로 옵션을 설정하는 기능 등을 활용할 수 있으며 해당 기능을 통해 3rd Party 앱에서 사용자 맞춤형 내비게이션 서비스를 제공할 수 있습니다.


Navigation SDK의 검색 DB, POI DB, 교통정보 등 모든 데이터는 ‘아이나비 에어’와 동일한 최신 데이터를 사용합니다. 때문에 앱을 운영하면서 항상 고민되는 데이터 현행화를 별도 관리할 필요 없이, 항상 최신성을 유지하는 SDK 데이터를 바탕으로 정확한 내비게이션 서비스를 이용할 수 있습니다.

0*e5jcvIxsOZ7mz_eU



초기 적용 시 문제 사례


Navigation SDK 초기 적용 시 자주 겪는 어려움들은 대부분 API 호출 제약사항이 지켜지지 않아 발생하는 경우가 많습니다. Navigation SDK는 내비게이션의 모든 상태를 관리하기 때문에, 내비게이션 상태에 따라 동작하지 않는 API 호출 제약사항이 존재합니다.


즉, 호출 조건이 맞아야만 정상적으로 동작하는 API 들이 존재하며, 이와 관련된 대표적인 사례는 다음과 같습니다.


사례 1. 주행 안내 시작 API(runGuidance) 호출 시에 주행이 되지 않는 현상
사례 2. 주행 안내 시작 API(runGuidance) 호출 시에 주행이 경로 선을 따라가지 않는 현상
사례 3. 맵 아이콘 표출 API(addMapIcon)를 호출해도 맵 아이콘이 지도에 표출되지 않는 현상


사례 1 : 주행 안내 시작 API(runGuidance) 호출 시에 주행이 되지 않는 현상


주행 안내를 하기 위해서는 먼저 길 찾기 API를 통해 RouteID를 획득해야 합니다. RouteID는 마지막으로 호출된 길 찾기 API의 RouteID만 유효하나, 이전의 길 찾기를 통해 얻어온 RouteID로 안내 시작을 호출하여 주행 자체가 시작되지 않는 Case가 많습니다. 길 찾기 API를 여러번 호출할 때 SDK가 모든 RouteID를 누적하는 구조가 아니라, 마지막 길 찾기 API의 RouteID만 유효한 상태임에 대한 인지가 필요합니다.


사례 2 : 주행 안내 시작 API(runGuidance) 호출 시에 주행이 경로 선을 따라가지 않는 현상


주행 안내(runGuidance)와 모의 주행(startSimulation)은 배타적으로 동작하는 구조이며 시작과 종료 API의 Pair를 맞춰서 호출해야 하는 API입니다.


주행 안내
시작 : runGuidance
종료 : cancelRoute


모의 주행
시작 : startSimulation
종료 : finishSimulation


즉, runGuidance 상태에서 cancelRoute를 호출하지 않고, 모의주행 API인 startSimulation을 호출하여 발생하는 현상이며, 반대의 경우도 동일합니다.


원활한 주행 안내를 위해서는 runGuidance API 호출 후 startSimulation API를 호출하는 경우, runGuidance -> cancelRoute -> startSimulation을 호출해야 합니다.
반대의 경우, starSimulation -> finishSimulation -> runGuidance 순서로 호출해야 합니다.


사례3 : 맵 아이콘 표출 API(addMapIcon)를 호출해도 맵 아이콘이 지도에 표출되지 않는 현상


iNAVI Navigation SDK의 구조상 맵 아이콘을 지도에 바로 등록하는 구조가 아닌, 맵 아이콘을 관리하는 Overlay라는 투명 Layer에 추가하고, 그 이후 Overlay를 지도에 등록하는 방식으로 동작합니다. 해당 Case 는 맵 아이콘을 바로 지도에 등록하여 발생한 현상입니다.


해당 현상이 발생하는 경우 createMapOverlay API를 통해 Overlay 생성 후, addMapIcon API 호출 시 생성된 Overlay를 같이 전달하면 MapIcon이 정상 표출됩니다. Overlay 구조는 아래 이미지를 참고하시면 됩니다.

0*HNiMqM55cj2WdhhS




iNAVI Navigation SDK의 유용한 기능들을 기반으로, 내비게이션이 필요한 앱에는 모두 사용 가능하며 현재는 택시 기사 앱, 물류배송 앱 등 다양한 분야에 서비스가 지원되고 있습니다.


by 아이나비시스템즈 PmG셀


iMPS배너_최종_하얀색.png

모바일 내비게이션 개발도 iMPS라면 더욱 빠르게 가능합니다.

- (안드로이드) 아이나비 지도 SDK 개발 가이드

- (IOS) 아이나비 지도 SDK 개발 가이드


#SDK #안드로이드SDK #IOSSDK #아이나비에어 #3rdparty #지도 #내비게이션 #아이나비지도 #아이나비시스템즈

keyword
작가의 이전글개발자가 업무에 활용하는 ChatGPT