지도 추가하기

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

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" />

지도 초기 옵션

카메라 위치, 제스쳐 활성화 여부, 지도 컨트롤러 사용 여부 등 지도 초기 옵션을 사용자화하여 다양한 지도를 표현할 수 있습니다. 지도 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

Was this helpful?