본문으로 바로가기

GoogleMap-API-v2

category Program/Android 2014. 8. 23. 02:59

출처 : http://pphttp://pppdwer.tistory.com/entry/GoogleMap-API-v2


1. SHA1 Key를 얻어야합니다


 일종의 개발용(=디버깅키)입니다, 추출하기 위해 사용되는 Keytool이라는 프로그램을 이용, 디버킹키를 추출하는 과정입니다.


 keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android -v


 위에 적힌 키를이용하여, SHA1 키를 뽑아보겠습니다.

윈도우 7기준 디버킹키가 담겨있는 debug.keystore는 C:\User\사용자\.android 안에 담겨있습니다.









2. 구글맵 인증키를 발급받아야해요.

 Google APis Console(https://code.google.com/apis/console/) 여기서 발급받습니다!!

일단 구글맵 v2를 처음사용하시는 분들이 이포스팅을 볼테니, 프로젝트가 아직없으실겁니다.

왼쪽에 보시면 드롭다운 메뉴에 Create..을 누르신뒤 프로젝트 하나를 생성해주세요.





생성하신뒤 왼쪽 드롭박스 밑의 하단메뉴를 보시면, Services 라는 항목이 보일거에요, 거길눌러주시고

 Google Maps Android API v2 항목을 On으로 설정해줍니다.




다음에 다시 메뉴를보시면 API Access 라는 탭이있는데요, 그탭의 Create new Android Key... 항목을 선택하시고,  아래 사진에 적힌대로 적혀주시면됩니다.




키를 발급받았습니다! 이제우리는 해당프로젝트에 방금발급받은키로 맵을 띄우면 되는겁니다. 

(제가 이미지처리능력이 부족해서..포스팅도첨이고.. 모자이크를못하겠네요, 눈이 불편하시겠지만 메모장모자이크로 봐주세요..)



3. SDK 다운로드 (Google Play Services SDK) 

이클립스 실행후 Window - Android SDK Manager 실행 후 Extra 부분의

Google Play Services 킷을 인스톨해야합니다. (아래 체크되있는부분)





4. 위에 구글맵을 사용하기위해 만드신 프로젝트가있죠? 순서가 잠깐꼬였지만... 이제 그프로젝트를 설정

   해봅시다,  전 Posting 이라는 프로젝트를 예로 설명드리겠습니다~

  윗단계에서, 구글플레이킷을 다운받으셨다면, SDK폴더에 google-play-services_lib라는 라이브러리가 

생깁니다, 정확한 경로는 다음과 같습니다.


 [SDK]/extras/google/google/google_play_services/libproject/google-play-services_lib


 이 라이브러리를 임포트 시켜줘야합니다.

이클립스 상에서 File-New-Other... -Android Project From Existing Code 로 임포트시키시면 됩니다.

아 참고로, 나 혼자만 진행중인 프로젝트라면 상관없지만, 함께 진행하는 프로젝트에선 워크스페이스에 

경로 설정을 따로해주어야합니다, 고로 Copy project into workspace 에 체크해주시면 됩니다.

저같은 경우는 이미 임포트가 되있는상황이라 라이브러리가 회색으로 비활성화 되어있네요.






임포트를 성공적으로 마무리하셨다면, 다음과같은 라이브러리패키지가 추가되게됩니다. 





다음엔 사용할 프로젝트에 이 라이브러리를 집어넣어줘야합니다.

프로젝트속성에서, (Properties) Android탭을 선택한후, 하단의 Library 박스에서 Add..버튼을 누른뒤

google-play-services_lib 를 선택하시면 됩니다. 아래와 같이됫다면, 정상이므로 확인하시고 프로젝트

로 돌아가시면 됩니다






이 과정으로 베이스셋팅은 종료가 됫습니다, 추가적인 퍼미션만 잡아주시면 됩니다~ 



5. 퍼미션 설정

해당 프로젝트의 메니페스트로 들어갑니다!

좀 바뀐것은, MapView에 직접적인 API키선언으로 맵을 활성화시켰던 V1과 달리 V2는 meta-data에 API

키를 설정하고 그키를 사용하는건데요, 일단 한번 해봅시다

메니페스트로 진입후 Menifest탭의  Menigest Extras 영역으로 갑니다.

Add...을 누르신후 Uses Feature를 선택합니다.





다음, Attribute for Uses Feature 에 

버전값에 0x00020000 , Required 값에 true를 주시고 저장을 합니다 






윗 과정은, OpenGL 2.0이라는걸 구글맵V2에서 사용하게 되서, OpenGL을 지원하지 않는 단말기에서는 

맵을 활성화 시킬수 없는데요, 저위에 명령은 OpenGL을 지원하지않는 단말기에서도 실행시키는 명령

이 아니라, 지원하지 않는 단말기에는 설치자체가 되지않도록 별도로 설정을 해준 부분이에요~ 



이제 meta-data로 구글맵의 API키값을 추가해주어야합니다! 

메니페스트의 Application 탭을 누른뒤,Application Nodes 탭에서 ,똑같이 Add...-Meta Data를 선택후

Name : com.google.android.maps.v2.API_KEY

Value : 아까 위에서 발급받은 API키 입니다

요렇게 입력하시면 됩니다. 아래 사진 첨부하겠습니다.







이제 본격적인 퍼미션 작업에 들어갑시다. 구글맵 데이터로딩에 따른 추가적인 권한을 설정하는 부분인

데요, 먼저 메니페스트의 Permission 탭으로 들어가서 Add...버튼으로 각 퍼미션을 

추가시켜주시면 됩니다! 


처음으로 Add... 를 누른뒤 Permission 을 선택합니다.

 그럼 옆에 Attributes for Permission 탭이 팝업되는데요, 

Name탭에 패키지명.permission.MAPS_RECEIVE 이렇게 써주시면됩니다.

저같은 경우는 패키지가 com.example.posting 이니까 즉

com.example.posting.permission.MAPS_RECEIVE 가 되겠죠?? 한번 해볼까요?




위에처럼 하시면 되요!

그리고 추가적으로 Add...을 선택하신뒤, 이번엔 Uses permission을 선택하시고

아래적힌 다섯개의 권한을 각각 Uses Permission으로 추가시켜주시면 됩니다. 


android.permission.INTERNET

android.permission.WRITE_EXTERNAL_STORAGE

android.permission.ACCESS_COARSE_LOCATION

android.permission.ACCESS_FINE_LOCATION

com.google.android.providers.gsf.permission.READ_GSERVICES



6.자! 이제 구글맵을 띄우겠습니다 ,

레이아웃에 구글맵을 추가해야하는데요, v1에선 MapView를 띄우고 MapActivity를 상속받았던 반면

v2에선 Fragment 로 맵을띄우고 FragmentActivity나, Activity를 상속받아 맵을 출력합니다. 


첫번째로 레이아웃입니다. 



두번째로 클래스, 즉 액티비티 부분입니다 



액티비티 부분에서, 나는 단순 맵만띄우고 추가기능은 사용하지않겠다. 하시는 분들은

FragmentActivity가 아닌 단순 Activity를 상속받으셔도 맵은 띄워집니다! 

자이제 한번 실행해볼까요?? 

(참고로 AVD로 돌리시면 구글플레이서비스킷오류와함께 실행이 안되실거에요...

귀찮으시더라도, 사실상 더빠르지만;; 실제디바이스로 구동합시다.ㅎㅎ)