반응형
네이버 지도상에 현재 내 위치를 나타내보자.
1. 의존성 추가
// Google Play Service
implementation("com.google.android.gms:play-services-location:17.1.0")
2. 지도 뷰, 인터페이스 객체 얻기
class MainActivity : AppCompatActivity(), OnMapReadyCallback {
var TAG:String = "로그"
private lateinit var locationSource: FusedLocationSource
private lateinit var naverMap: NaverMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 뷰 역할을 하는 프래그먼트 객체 얻기
val fm = supportFragmentManager
val mapFragment = fm.findFragmentById(R.id.map_fragment) as MapFragment?
?: MapFragment.newInstance().also {
fm.beginTransaction().add(R.id.map_fragment, it).commit()
}
// 인터페이스 역할을 하는 NaverMap 객체 얻기
// 프래그먼트(MapFragment)의 getMapAsync() 메서드로 OnMapReadyCallback 을 등록하면 비동기로 NaverMap 객체를 얻을 수 있다고 한다.
// NaverMap 객체가 준비되면 OnMapReady() 콜백 메서드 호출
mapFragment.getMapAsync(this)
locationSource = FusedLocationSource(this, LOCATION_PERMISSION_REQUEST_CODE)
}
override fun onMapReady(naverMap: NaverMap) {
Log.d(TAG, "MainActivity - onMapReady")
this.naverMap = naverMap
naverMap.locationSource = locationSource
naverMap.uiSettings.isLocationButtonEnabled = true
}
override fun onRequestPermissionsResult(requestCode: Int,
permissions: Array<String>,
grantResults: IntArray) {
Log.d(TAG, "MainActivity - onRequestPermissionsResult")
if (locationSource.onRequestPermissionsResult(requestCode, permissions,
grantResults)) {
if (!locationSource.isActivated) { // 권한 거부됨
Log.d(TAG, "MainActivity - onRequestPermissionsResult 권한 거부됨")
naverMap.locationTrackingMode = LocationTrackingMode.None
} else {
Log.d(TAG, "MainActivity - onRequestPermissionsResult 권한 승인됨")
naverMap.locationTrackingMode = LocationTrackingMode.Follow // 현위치 버튼 컨트롤 활성
}
return
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
}
companion object {
private const val LOCATION_PERMISSION_REQUEST_CODE = 1000
}
}
3. 코드실행
지도와 좌측하단 버튼 컨트롤이 생겼다.
참고로 애뮬레이터 상에서 모바일 현재 위치(GPS 위,경도)를 설정해 줄 수 있는데
빨강색 박스 클릭하면 창이 하나 뜨는데 여기서 현재 위치를 조정해 줄 수 있는것이다.
지도 위에 마우스를 클릭 후 "SET LOCATION" 클릭하면 된다.
참고자료
네이버 지도 SDK 시작하기 : navermaps.github.io/android-map-sdk/guide-ko/1.html
'SW개발 > kotlin' 카테고리의 다른 글
[kotlin] 네이버 지도 SDK 사용하기 (1) (0) | 2021.01.02 |
---|---|
[kotlin] 날짜 구하기 (0) | 2020.12.08 |