본문 바로가기
Android 개발/지도 Api

새로나온 Google Map API(ver11) 이용해 내 위치 얻어오기

by Developer88 2017. 7. 20.
반응형

안드로이드 지도 화면 만드는 방법에 대해서 예전 글에서 정리했었는데요.

최근에, Google Play services SDK 11버전이 나오면서 API가 많이 바뀌었습니다.


오늘은 새로운 API를 이용해서, 내 위치를 얻어오는 방법을 정리해보겠습니다.



1. 이전 버전API와 달라진 점


예전 API는 GoogleApiClient객체를 만들어서 connection콜백을 붙인다음,

connection이 생성되면 내 위치를 찾는 메소드를 이용했었는데요.

이 때, connection Fail이라든가 suspend에 대해서도 구현을 해줬어야 했습니다.


하지만 이번 11.0.0 release버전 부터는 위와 같은 connection logic을 다 알아서 해준다고 합니다.

더 이상 googleApiClient객체를 생성할 필요도 없고,

OnConnectionFailedListener,ConnectionCallbacks, LocationListener 도 implement할 필요가 없게 되었습니다.


이제는, 나의 위치를 알기 위해서 FusedLocationProviderClient 만 얻어와서, 

getLastLocation메소드를 사용하고,

completion listener만 달면 위치를 얻어올 수 있다고 하는군요.


정말 심플해졌네요.

그럼 이제 실제로 구현해 보겠습니다.



2. FusedLocationProviderClient 


먼저 play-service의 location라이브러리를 추가하구요.



이전에는  GoogleApiClient를 생성하고 시작했었는데요.

이제는 FusedLocationProvideClient의 객체를 생성해서 시작합니다.




3. 위치 관련 권한 얻기

본격적으로 구현을 하기전에 , 위치관련 권한을 얻어와야 합니다.

먼저 Manifest에도 위치 관련해서, 정의가 되어있는지 확인하구요.




안드로이드6.0부터 얻어야 하는 동적권한 문제도 처리해야 하는데요.

동적 권한 얻기는는 아래 글의 링크를 참조해 주세요.(이 글에서는 자세한 설명은 제외하겠습니다)

>>> Android 에서 동적 권한 얻기 <<<



아래와 같이 getLocationPermission메소드를 만들어서 권한을 확인하고, 얻습니다.

권한을 받았다면, onRequestPermissionResult에서 true를 해주고,

위치정보를 얻는 getCurrentLocation메소드를 실행해 줍니다.

getCurrentLocation은 아래에서 구현 하겠습니다.






4. 위치 관련 권한 얻기



확인이 되었다면,  getCurrentLocation라는 메소드에서 휴대폰의 위치를 받아오구요.
mFusedLocationClient에 getLastLocation메소드를 사용하고,
addOnCompleteListener를 걸어서 Location을 얻어옵니다.

토스트메세지를 받아보기위해, 길어졌지만, 
중요한 부분은 파란색으로 하이라이트 된, addOnCompleteListener입니다.



위까지 다 구현했다면, 준비가 된 것이구요.

마지막으로 onStart에서 Permission이 있는지 확인하고, getCurrentLocation()메소드를 실행해주기만 하면 되겠습니다.



728x90

댓글