Google Maps API v2에서 변경된 점 중 직접적으로 영향이 있는 부분은,
- 기존 MapView (View) 에서 MapFragment (fragment) 로 변경
- Google Play Services 의 일부로 들어감
정도이다.
기본적인 ADT 설정이 되어 있어야 함.
1. Google Play Service Library 설정
Android SDK Manager를 열어 Google Play services를 추가한다.
설치가 완료되면 [SDK폴더]/extras/google/google_play_services 위치에 소스가 있다.
이 소스를 이클립스로 불러온다.
File - Import - Android - Existing Android Code Into Workspace
Root Directory에 파일이 위치한 폴더를 지정하면 여러 데모 프로젝트가 같이 뜨는데,
이 샘플 데모는 각자 필요에 따라 추가하거나 uncheck.
이클립스에 프로젝트가 추가되면, 개발중인 어플리케이션에 google play service를 라이브러리로 걸어주어야 한다.
프로젝트 Properties - Android - Library - Add
다른 블로그 글을 보면 소스에서 필요한부분을 복사해서 넣는다든가 하는 방법이 소개되어 있는데,
궂이 그렇게 할 필요 없이 라이브러리로 추가해주면 된다.
여기서 주의할점은, Build path에 지정하는것이 아닌, Android 전용 메뉴에서 추가가 된다는 것.
2. Google APIs 키 발급
키 발급을 위해 api console로 접속. 당연히 구글 로그인 필요.
https://code.google.com/apis/console
기존에 만들어놓은 프로젝트가 있다면 콘솔이 바로 뜨고, 없으면 위처럼 프로젝트 생성 팝업이 표시된다.
Create project를 누르면 자동적으로 API Project 라는 이름으로 프로젝트가 생성된다.
당연히 이용약관은 동의해야 사용할 수 있을거고....
왼쪽 메뉴에서 APIs&Auth - APIs 메뉴를 눌러 들어간다.
Google Maps Android API v2 를 찾아 들어가서,
OFF로 되어있는 버튼을 누르면 녹색 ON으로 변경된다.
간단히 목록에서 ON/OFF도 가능.
다음으로, 앱에서 서비스를 사용하기 위한 키를 발급받아야 한다.
왼쪽 메뉴에서 Credentials 로 들어간다.
Public API access 에서 CREATE NEW KEY를 누르고
Android Key를 클릭.
그러면 이런 입력창이 뜨는데, 여기에 apk를 sign할 때 쓰는 키 값과 패키지명을 입력해줘야 한다.
signing key의 SHA1 fingerprint와 앱 패키지명을 ; (세미콜론)을 구분자로 하여 입력.
사인 키의 SHA1을 얻는 방법으로는 keytool을 이용하는 방법도 있지만 ADT(이클립스)를 사용중이라면 바로 확인이 가능.
프로젝트 Properties - Android - Build 로 이동.
apk를 export한 적이 없거나 하면 아래 Custom debug keystore 와 그 아래는 비어있을거다.
기본적으로 생성된 디버그키의 SHA1 fingerprint 값을 복사하여 사용하면 된다.
Custom key를 사용중인 개발자라면 궂이 추가 설명은 필요 없을듯.
당연한 이야기지만, 나중에 maps api를 사용한 어플을 개인 키로 사인하여 export 하거나,
동일한 소스로 다른 PC에서 빌드하는 경우엔 사인키가 바뀌므로 SHA1이 바뀌고, 때문에 구글 인증키값도 새로 받아야 한다.
입력하고 나면 API key가 발급된다. 이 키를 복사하여 AndroidManifest.xml에 넣어줘야 한다.
3. Application 적용
AndroidManifest.xml 수정
permission 추가 및 meta-data 추가. (빨간색으로 표시한 부분)
layout에 MapFragment 추가
이 부분은 MapFragment.getInstance()로 인스턴스를 얻어와 FragmentTransaction으로 직접 사용할 수도 있다.
이렇게만 하면 지도 띄우기 성공.
덧.
지도에 대한 제어는 아래 코드로 Map 인스턴스를 얻어와 사용이 가능하다.
GoogleMap mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
참고 : https://developers.google.com/maps/documentation/android/map
'Knowledge > Android' 카테고리의 다른 글
AOSP 직접 빌드하여 넥서스4에 설정하기 #1 - 커널 빌드 (3) | 2014.08.01 |
---|---|
안드로이드 NFC 읽고/쓰기 구현 (0) | 2014.06.09 |
안드로이드 init.rc 문법 이해하기 (Android Init Language) (0) | 2014.03.25 |
[안드로이드] USB Attached event 수신받기 (0) | 2014.03.23 |
안드로이드 프레임워크 빌드환경 구축 (14/03/13 확인) (0) | 2014.03.15 |