Android 플랫폼에서 아이나비 지도를 사용하기 위한 프로젝트 기본 설정 방법을 설명합니다.
아이나비 지도 SDK를 사용하려면 다음과 같이 프로젝트 및 앱 모듈 레벨의 build.gradle 파일에 저장소 설정과 아이나비 지도 SDK에 대한 의존성을 추가합니다.
SDK 0.10.0 이후 버전부터 새로운 지도 저장소로 배포됩니다. 이전 지도 저장소를 이용하시는 경우 지도 저장소를 변경해야 합니다.
- 기존 - https://inavisystems.jfrog.io/artifactory/maps/ -신규 - https://repo.inavi.com/artifactory/maps
/* Root Project build.gradle */
allprojects {
repositories {
google()
...
// 아이나비 지도 저장소
maven {
url 'https://repo.inavi.com/artifactory/maps'
}
}
}
/* App Module build.gradle */
dependencies {
implementation 'com.inavi.mapsdk:inavi-maps-sdk:0.10.0'
}
발급받은 Appkey를 설정할 수 있도록 아래의 두 가지 방법을 제공합니다.
Appkey가 설정되지 않으면 지도 초기화 단계에서 인증 오류가 발생합니다.
AndroidManifest.xml
에 <meta-data>
를 추가하여 Appkey를 설정할 수 있습니다.
<!-- AndroidManifext.xml -->
<manifest>
<application>
<meta-data
android:name="com.inavi.mapsdk.AppKey"
android:value="YOUR_APP_KEY" />
</application>
</manifest>
Application 생성 시점에 동적으로 [InaviMapSdk] 싱글턴 객체의 함수를 호출하여 Appkey를 설정할 수 있습니다.
// Kotlin
InaviMapSdk.getInstance(context).appKey = "YOUR_APP_KEY"
지도 초기화 단계에 인증이 실패하면 SDK 내부에서 등록된 Callback으로 에러 코드와 메시지를 전달합니다. 실패에 대한 Callback을 받으려면 [InaviMapSdk] 싱글턴 객체에 [AuthFailureCallback]을 아래와 같이 설정해야 합니다.
// Kotlin
InaviMapSdk.getInstance(context).authFailureCallback =
InaviMapSdk.AuthFailureCallback { errCode: Int, msg: String ->
// 인증 실패 처리
}
인증 실패 Callback을 별도로 설정하지 않으면 기본적으로 에러 코드와 메시지가 팝업 형태로 표출됩니다.
Code | Description |
---|---|
300 | Appkey 유효하지 않음 |
401 | Appkey 설정되지 않음 |
503 | 서버 연결 실패 |
504 | 서버 연결 시간 초과 |
500 | 알 수 없는 에러 |
그 외 | 서버 에러 (추후 정의 시 업데이트) |
앱 화면에 아이나비 지도를 표출하는 방법을 설명합니다.
액티비티 레이아웃 파일에 아래와 같이 <fragment>
태그를 추가하고 [InvMapFragment]를 정의하면 지도를 표출할 수 있습니다.
<fragment
android:id="@+id/map_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.inavi.mapsdk.maps.InvMapFragment" />
지도와 관련된 모든 조작은 [InaviMap] 객체를 통해 이루어집니다. [InaviMap] 객체에 접근하기 위해서는 우선 [InvMapFragment] 객체의 getMapAsync() 함수를 호출해야 합니다. 지도 초기화가 완료되면 onMapReady() 콜백 함수를 통해 [InaviMap] 객체가 전달됩니다.
// Kotlin
val mapFragment = supportFragmentManager.findFragmentById(R.id.map_fragment) as InvMapFragment
mapFragment.getMapAsync(object : OnMapReadyCallback {
override fun onMapReady(inaviMap: InaviMap) {
// InaviMap 객체 접근 가능
}
})
지도 클릭, 더블 클릭, 롱 클릭 등 지도와 사용자간 상호작용에 대한 이벤트를 설정할 수 있습니다.
// Kotlin
inaviMap.setOnMapClickListener { pointF, latLng ->
// pointF : 클릭한 지점의 화면상 좌표
// latLng : 클릭한 지점의 지도상 좌표
Toast.makeText(context, "지도 클릭", Toast.LENGTH_SHORT).show()
}
마커 객체를 생성하고 position
속성과 map
속성을 설정하면 마커가 표출됩니다.
// Kotlin
val marker = InvMarker().apply {
position = LatLng(37.40219, 127.11077)
title = "타이틀"
map = inaviMap
}
마커 객체의 map 속성을 null
로 설정하시면 마커가 제거됩니다.
// Kotlin
marker.map = null
[CameraUpdate]의 팩토리 메서드 또는 [CameraUpdateBuilder]를 통해 [CameraUpdate] 객체를 생성한 다음 moveCamera() 함수에 파라미터를 전달하여 호출하면 카메라가 이동됩니다.
애니메이션과 카메라 이벤트에 대한 콜백을 지원하므로, 카메라 이동을 원하는 대로 구현할 수 있습니다.
// Kotlin
val cameraUpdate = CameraUpdate.targetTo(LatLng(36.99473, 127.81832))
cameraUpdate.setAnimationType(CameraAnimationType.Fly, 3000)
inaviMap.moveCamera(cameraUpdate)
Map Studio
서비스를 이용하면 폰트는 물론, 지도 색상, 범례 아이콘까지 원하는 대로 바꿔 나만의 특별한 지도를 제작할 수 있습니다. 또한, 최신 버전 SDK에서 제공하는 API를 이용하면 커스텀 스타일을 지도에 적용할 수 있습니다.
// Kotlin
InaviMapSdk.getInstance(this).authSuccessCallback = object: InaviMapSdk.AuthSuccessCallback{
override fun onAuthSuccess(mapStyleList: MutableList<MapStyle>) {
// 지도 초기화 인증이 완료되면 지도 스타일 리스트를 콜백으로 전달
}
}
// 저장된 커스텀 스타일 리스트의 첫 번째 커스텀 스타일을 지도에 적용
inaviMap.customMapStyle = InaviMapSdk.getInstance(context).savedCustomMapStyles.firstOrNull()
추가적인 Maps SDK 사용법은 iNavi Maps API 센터를 참고하시기 바랍니다.
[InaviMapSdk] : https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InaviMapSdk.html [InaviMap] : https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InaviMap.html [InvMapView] : https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InvMapView.html [InvMapFragment] : https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InvMapFragment.html [AuthFailureCallback] : https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/InaviMapSdk.AuthFailureCallback.html [CameraUpdate] : https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/CameraUpdate.html [CameraUpdateBuilder] : https://inavi-systems.github.io/inavi-maps-sdk-reference/android/com/inavi/mapsdk/maps/CameraUpdateBuilder.html
[NHN Cloud Console] : https://console.toast.com/