미니 프로젝트를 진행하는 중에 NaverMap 에 현재 위치를 표기하고 싶어서 공부를 해 보았다.
0-1. Gradle
// 네이버 지도 SDK
implementation 'com.naver.maps:map-sdk:3.15.0'
// 현재 위치를 가져오기 위한 google 서비스
implementation 'com.google.android.gms:play-services-location:20.0.0'
0-2 Manifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1. MainActivity.kt
- OnMapReadyCallback 을 상속받음으로서 onMapReady 를 오버라이딩하여 사용할 수 있다.
class MainActivity : AppCompatActivity(), OnMapReadyCallback {
private lateinit var binding : ActivityMainBinding
private lateinit var locationSource: FusedLocationSource
private lateinit var naverMap: NaverMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.mapView.onCreate(savedInstanceState)
binding.mapView.getMapAsync(this)
}
override fun onMapReady(map: NaverMap) {
naverMap = map
naverMap.maxZoom = 18.0
naverMap.minZoom = 10.0
//카메라 위치 업데이트 (강남역 )
val cameraUpdate = CameraUpdate.scrollTo(LatLng(37.498095, 127.027610))
naverMap.moveCamera(cameraUpdate)
//현재 위치 UI 셋팅
val uiSetting = naverMap.uiSettings
uiSetting.isLocationButtonEnabled = true
//location 정보를 가져오기위한
locationSource = FusedLocationSource(this@MainActivity, 1000)
naverMap.locationSource = locationSource
}
현재 위치를 가져오기 위한 함수
- requestCode 가 1000이 아닐때는 return 해주고
- 권한이 거부되었을 경우에 네이버맵에 사용할수 없음을 알려준다
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if(requestCode != 1000){
return
}
if(locationSource.onRequestPermissionsResult(requestCode, permissions, grantResults)){
if(!locationSource.isActivated){
//권한이 거부되었음을 네이버에 알려줌
naverMap.locationTrackingMode = LocationTrackingMode.None
}
return
}
}
[결과물]
허용 팝업이 뜨고 허용 되었다면 에뮬레이터에 현재 위치로 지정한 곳에 현위치가 뜬다!
반응형
'개발 > Android' 카테고리의 다른 글
[Android] 외부에 공유하기 (0) | 2022.08.19 |
---|---|
[Android] TMap POI 사용기1 (0) | 2022.08.19 |
[Android] Manifest Error(Merging Errors) (0) | 2022.08.17 |
[Android] Database Inspector (0) | 2022.08.16 |
[Android] Unsolved reference (0) | 2022.08.15 |
댓글