iNaviMaps
  • 소개
  • 개발 가이드
    • 준비하기
    • 준비하기 (0.20.0 미만 버전)
    • 지도 추가하기
    • 지도 유형과 스타일 설정하기
      • 지도 유형 설정하기
      • 나만의 지도 스타일 만들기
    • 지도와 상호작용하기
      • 컨트롤과 제스처
      • 지도 이벤트
      • 사용자 위치 확인
      • 카메라와 뷰
    • 지도 위에 그리기
      • 개요
      • 셰이프 이벤트
      • 마커
      • 정보 창
      • 도형
      • 위치 아이콘
      • 경로
      • 클러스터링
    • 좌표계 변환하기
  • 참고 사이트
    • API 레퍼런스
    • 변경 내역
    • 샘플 앱
  • 바로가기
    • iOS SDK
Powered by GitBook
On this page
  • 위치 데이터 사용
  • 위치 권한 설정
  • LocationProvider
  • FusedLocationProvider
  • 위치 추적 모드
  • 위치 변경 이벤트

Was this helpful?

  1. 개발 가이드
  2. 지도와 상호작용하기

사용자 위치 확인

사용자의 위치를 찾고, 변경된 위치 정보를 기반으로 지도에 표현할 수 있는 기능에 대해 설명합니다.

Previous지도 이벤트Next카메라와 뷰

Last updated 2 years ago

Was this helpful?

위치 데이터 사용

위치 권한 설정

위치 기능을 사용하기 위해서는 아래와 같이 AndroidManifest.xml에 , 권한을 명시해야 합니다.

<manifest>
...
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
...
</manifest>

LocationProvider

는 사용자의 위치를 제공하는 인터페이스입니다. 객체의 속성을 설정하여 사용자의 위치를 제공받을 수 있습니다. 설정된 의 , 함수는 내부에서 상황에 따라 호출합니다.

FusedLocationProvider

는 저전력으로 GPS 외에 센서 등을 활용하여 정확도가 높은 위치를 제공합니다. 는 내부에서 위치 권한을 요청하도록 구현되어 있기 때문에 생성자에 Activity 또는 Fragment 객체를 전달하고, 콜백으로 권한 요청에 대한 결과를 받을 수 있습니다.

class LocationActivity : AppCompatActivity(), OnMapReadyCallback {
    companion object {
        private const val LOCATION_PERMISSION_REQUEST_CODE = 10000
    }

    private val locationProvider by lazy {
         FusedLocationProvider(this) { isGranted ->
             // 권한 요청 결과 처리
         }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        ...
        mapFragment.getMapAsync(this)
        ...
    }

    override fun onMapReady(inaviMap: InaviMap) {
        inaviMap.locationProvider = locationProvider
        inaviMap.uiSettings.isLocationButtonVisible = true // 위치 버튼 표출
    }
}

위치 추적 모드

// 현위치 버튼 표출
inaviMap.uiSettings.isLocationButtonVisible = true

// 위치 추적 모드 `Tracking` 모드로 설정
inaviMap.userTrackingMode = UserTrackingMode.Tracking
  • 위치 추적을 비활성화 합니다.

  • 위치 추적이 활성화 되며, 사용자의 위치에 맞춰 위치 아이콘의 위치가 변경됩니다.

  • 위치 추적이 활성화 되며, 사용자의 위치에 맞춰 위치 아이콘의 위치와 카메라의 좌표가 변경됩니다.

위치 변경 이벤트

inaviMap.addOnLocationChangedListener { location ->
    Toast.makeText(context, "변경된 좌표 : " +
            "(${location?.latitude}, ${location?.longitude})",
        Toast.LENGTH_SHORT).show()
}

객체에 속성을 설정한 다음, 사용자가 위치 권한 사용을 승인하면 위치 추적 기능을 사용할 수 있습니다. 속성을 설정하거나 현위치 버튼을 클릭하여 위치 추적 모드를 변경할 수 있습니다.

위치 추적 모드의 종류는 아래와 같으며, 열거형에 정의되어 있습니다.

API 호출 또는 제스처 사용으로 카메라가 변경되면 으로 변경됩니다.

위치 추적이 활성화 되며, 사용자의 위치와 방향에 맞춰 위치 아이콘의 위치와 카메라의 좌표, 베어링 각도가 변경됩니다. API 호출 또는 제스처 사용으로 카메라가 변경되면 으로 변경됩니다.

메서드를 호출하여 위치 변경 리스너를 추가하면 위치 변경에 대한 이벤트를 감지할 수 있습니다. 위치 추적이 활성화된 다음, 사용자의 위치가 변경되면 콜백 함수로 변경된 사용자의 위치가 전달됩니다.

ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
LocationProvider
InaviMap
locationProvider
LocationProvider
activate()
deactivate()
InaviMap
FusedLocationProvider
FusedLocationProvider
OnPermissionResultCallback
InaviMap
locationProvider
userTrackingMode
UserTrackingMode
None
NoTracking
Tracking
NoTracking
TrackingCompass
NoTracking
InaviMap#addOnLocationChangedListener()
onLocationChanged()