
지도를 사용하는 앱은 사용자의 위치를 추척하고 지도에 표현하는 경우가 많습니다.
네이버 지도 SDK는 이런 기능을 손쉽게 구현할 수 있도록 위치 오버레이와 위치 추적 기능을 제공합니다.
내장된 위치 추적 기능을 사용하지 않고 직접 위치 관련 기능을 구현할 수도 있습니다.
네이버 지도 SDK는 기본적으로 사용자의 위치 정보를 사용하지 않으므로 사용자에게 위치와 관련된 권한을 요구하지 않습니다.
따라서 위치 추적 기능을 사용하고자 하는 앱은 AndroidManifest.xml에 ACCESS_COARSE_LOCATION 또는 ACCESS_FINE_LOCATION 권한을 명시해야 합니다.

또한 setLocationSource()를 호출해 LocationSource 구현체를 지정해야 합니다.
LocationSource는 네이버 지도 SDK에 위치를 제공하는 인터페이스입니다.
activate(), deactivate() 등 LocationSource의 메서드는 지도 객체가 호출하므로 개발자가 직접 호출해서는 안됩니다.
네이버 지도 SDK의 FusedLocationSource는 Google Play 서비스의 FusedLocationProviderClient와 기기의 지자기 및 가속도 센서를 결합하여 최적의 위치 정보를 제공하는 구현체입니다.
이를 통해 GPS 신호가 약하거나 실내 환경에서도 보다 정확한 위치 데이터를 제공받을 수 있습니다.
FusedLocationSource는 다양한 소스로부터 위치 데이터를 수집하고 통합하여 정확도를 높이며, 효율적인 배터리 관리를 돕습니다.
FusedLocationSource를 사용하려면 앱 모듈의 build.gradle에 play-services-location 21.0.1 이상 버전에 대한 의존성을 추가해야 합니다.

FusedLocationSource는 런타임 권한 처리를 위해 액티비티 또는 프래그먼트를 필요로 합니다.
생성자에 액티비티나 프래그먼트 객체를 전달하고 권한 요청 코드를 지정해야 합니다.
그리고 onRequestPermissionResult()의 결과를 FusedLocationSource의 onRequestPermissionsResult()에 전달해야 합니다.

NaverMap에 LocationSource를 지정하면 위치 추적 기능을 사용할 수 있습니다.

None
: 위치를 추적하지 않습니다.
NoFollow
: 위치 추적이 활성화되고, 현위치 오버레이가 사용자의 위치를 따라 움직입니다.
그러나 지도는 움직이지 않습니다.
Follow
: 위치 추적이 활성화되고, 현위치 오버레이와 카메라의 좌표가 사용자의 위치를 따라 움직입니다.
API나 제스처를 사용해 임의로 카메라를 움직일 경우 모드가 NoFollow로 바뀝니다.
Face
: 위치 추적이 활성화되고, 현위치 오버레이, 카메라의 좌표, 베어링이 사용자의 위치 및 방향을 따라 움직입니다.
API나 제스처를 사용해 임의로 카메라를 움직일 경우 모드가 NoFollow로 바뀝니다.
현위치 버튼 컨트롤 사용
: UiSettings.setLocationButtonEnabled(true)로 현위치 버튼 컨트롤을 활성화하면 사용자의 클릭에 따라 위치 추적 모드를 변경할 수 있습니다.
addOnLocationChangeListener() 메서드로 OnLocationChangeListener를 등록하면 위치 변경에 대한 이벤트를 받을 수 있습니다.
위치 추적 모드가 활성화되고 사용자의 위치가 변경되면 onLocationChange() 콜백 메서드가 호출되며, 파라미터로 사용자의 위치가 전달됩니다.

네이버 지도 SDK는 개발자가 위치 기반 기능을 간편하게 통합할 수 있도록 다양한 기능과 설정 옵션을 제공하고 있습니다.
강력한 기능과 직관적인 설정 방식은 Android 애플리케이션에 지도를 추가하고 조작하는 과정을 크게 단축해 줍니다.
이를 통해 사용자에게 지도와 관련된 위치 기반 서비스를 효과적으로 제공할 수 있으며, 화면 설정, 좌표 관리, 카메라 조작 등 지도 관련 기능을 유연하게 구성할 수 있습니다.
네이버 지도 SDK를 활용해 앱의 사용자 경험을 더욱 향상시키고, 다양한 위치 기반 기능을 제공할 수 있기를 기대합니다.