지도 추가하기

앱 화면에 아이나비 지도를 표출하는 방법을 설명합니다.

Activity에 지도 Fragment 추가

Activity의 레이아웃 XML 파일에 <fragment> 태그를 추가하여 지도를 표출할 수 있습니다.

<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() 함수를 호출해야 합니다. 지도 초기화가 완료되면 OnMapReadyCallback#onMapReady() 콜백 함수의 파라미터로 InaviMap 객체가 전달됩니다.

val mapFragment = supportFragmentManager.findFragmentById(R.id.map_fragment) as InvMapFragment
mapFragment.getMapAsync(object : OnMapReadyCallback {
    override fun onMapReady(inaviMap: InaviMap) {
        // InaviMap 객체 접근 가능
    }
})

지도 View 직접 추가

Activity 레이아웃 XML 파일에 InvMapView를 직접 추가하여 지도를 표출할 수 있습니다.

<com.inavi.mapsdk.maps.InvMapView
    android:id="@+id/map_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

InvMapView를 사용하여 지도를 표출할 경우, 해당 뷰를 사용하는 Activity 또는 Fragment에서 InvMapView의 생명 주기(Life Cycle)를 반드시 직접 관리해야 합니다.

지도 초기 옵션

카메라 위치, 제스쳐 활성화 여부, 지도 컨트롤러 사용 여부 등 지도 초기 옵션을 사용자화하여 다양한 지도를 표현할 수 있습니다. 지도 XML 방식과 InvMapOptions 를 지도와 함께 생성하는 방식을 지원합니다.

지도 XML 속성

지도 XML 속성은 InvMapView 또는 InvMapFragment 에 추가하여 초기 옵션을 설정할 수 있습니다. 아이나비 지도 XML 속성은 inv 접두사를 가집니다.

<com.inavi.mapsdk.maps.InvMapView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    ...
    
    app:inv_cameraTargetLat="37.55628"
    app:inv_cameraTargetLng="126.97202"
    app:inv_cameraZoom="14.0"
    app:inv_cameraBearing="45.0"
    app:inv_cameraTilt="45.0"
    
    app:inv_uiZoomControlVisible="true"
    app:inv_uiRotateGestures="false" />

InvMapOptions

InvMapOptions 객체를 이용하여 지도의 초기 옵션을 설정할 수 있습니다. InvMapView 를 사용하는 경우 InvMapView(Context, InvMapOptions) 생성자, InvMapFragment 를 사용하는 경우 newInstance(InvMapOptions) 정적 팩토리 메서드를 사용하여 설정합니다.

val invMapOptions = InvMapOptions()
    .camera(CameraPosition(LatLng(37.55628, 126.97202), 14.0))
    .zoomControlVisible(true)

// InvMapView 생성
val invMapView = InvMapView(context, invMapOptions)

// InvMapFragment 생성
val mapFragment = InvMapFragment.newInstance(invMapOptions)

Last updated