https://navermaps.github.io/android-map-sdk/guide-ko/4-2.html
NaverMap API에서 제공하는 FusedLocationSource
를 사용해서 현재 위치를 추적한다.
이는 Google Play 서비스의 FusedLocationProviderClient
와 지자기, 가속도 센서를 활용해 최적의 위치를 반환하는 구현체이다.
NaverMap API는 내장 위치 트래킹 모드를 사용할 경우 센서를 활용하고 권한 처리 기능도 잘 구현되어 있는 FusedLocationSource
사용을 권장하고 있다.
위치 정확도와 같은 정보를 표현하고자 할 때는 지리적인 크기를 나타내는 오버레이인 CircleOverlay
를 사용해야 한다.
center, radius를 설정하고 오버레이를 지도에 추가한다.
이때, radius는 미터 단위의 반경을 의미한다.
미터 단위의 반경이기 때문에 축소할 시 원이 줄어드는 것을 볼 수 있다.
확대
축소
FusedLocationSource
로 위치 정보를 받도록 설정되어 있는 경우,
앱 실행 시 초기 위치가 네이버 지도가 처음 설정한 위치인 서울 시청으로 그려진다.
(현재 위치를 불러오는데 시간이 걸립니다)
이를 개선하기 위해 초기 위치를 따로 설정하려고 한다.
기기에서 마지막으로 알려진 위치를 초기 위치로 가져오는 방법 (공식 문서)
private fun setInitLocation() {
if (checkSelfPermission()) {
fusedLocationClient.lastLocation.addOnSuccessListener { location ->
if (location != null) {
locationOverlay.position = LatLng(location)
setCircleOverlay(location)
naverMap.moveCamera(CameraUpdate.scrollTo(LatLng(location)))
}
}
}
}