Google Map API 사용하기

devvace ㅣ 2016. 12. 20. 15:03

1. API Key 획득 및 적용

- 구글 지도 API를 사용하려면 자신의 앱을 인증할 수 있는 API Key가 필요하다. API Key는 앱 정보를 구글에 등록하면 발급 받을 수 있다.


(1) 앱 서명용 인증서 위치 확인

앱을 빌드할 때, 빌드를 수행한 주체를 확인하는 서명(Signing)을 수행한다. 이 때 사용한 서명 정보를 통해 앱이 올바른 곳에서 빌드되었는지 확인이 가능하다.


구글 지도 API에서는 API의 무분별한 사용을 방지하기 위해 앱을 서명할 때 사용하는 서명을 기반으로 API Key를 발급한다. 따라서, 사전에 구글에 등록한 서명으로 서명된 앱이 아닐 경우 지도 API를 사용할 수 없다.


앱 서명시 사용하는 인증서 종류로는 일반적으로 디버그(Debug)릴리즈(Release) 두가지가 있으며, 디버그 인증서는 일반적으로 개발 환경을 설치했을 때 기본으로 제공되는 인증서를 사용한다.


* 디버그 용 인증서 기본 경로 

- Windows :  C:\Users\{사용자계정}\.android\debug.keystore

- OS X, Linux : ~/.android/debug.keystore


(2) SHA-1 지문 얻기

서명에 사용하는 인증서를 구분하기 위해 인증서의 모든 내용을 등록할 필요는 없다(나는 이름만 넣음). 대신, 인증서의 SHA-1 지문을 등록한다.


인증서의 SHA-1 지문을 얻기 위해 명령 프롬프트(Windows) 혹은 터미널(OS X, Linux)를 열어 다음 명령어를 입력한다. 


[Windows]

keytool -list -v -keystore C:\Users\gwang\.android/debug.keystore -alias androiddebugkey -storepass android -keypass android


[OS X, Linux]

keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android


위 명령을 실행하면 다음과 유사한 결과가 표시된다.(그림은 내가 실행했을 때 나온 화면)


(3) Google API 프로젝트 생성

구글 지도 API를 사용하려면 Google API 콘솔에 새 프로젝트를 추가해야 한다.

Google Maps Android API용 프로젝트 등록 페이지로 접속해서 새 프로젝트 만들기를 한다.


필요한 사용자 인증 정보의 종류에 Google Maps Android API를 선택하고, API를 호출할 위치로 Android를 선택한다.


(4) 인증 정보 입력

인증 정보를 입력하라는 창이 나온다. 이름은 API를 구분할 수 있게 적절한 이름으로 정하고, 패키지 이름은 자신이 적용할 앱의 패키지 풀 네임을, 인증서 지문은 위 과정에서 받은 SHA1 지문을 넣고 생성버튼을 누르면 API Key가 생성된다.


2. 앱에 구글 지도 API 적용하기

- 원하는 설정으로 새 프로젝트를 생성한다.


(1) 구글 플레이 서비스 라이브러리 추가

구글 지도 API를 사용하려면 구글 플레이 서비스(Google Play Services)를 라이브러리로 추가해야 한다.


Application Module의 빌드스크립트(build.gradle)을 열어 dependencies 항목에 compile 'com.google.android.gms:play-services-maps:{플레이 서비스 버전}' 을 입력한다.


dependencies {

...

compile 'com.android.support:appcompat-v7:24.1.1'

compile 'com.google.android.gms:play-services:9.4.0' // 추가

}

변경 후 동기화를 한다(Sync).


만약 플레이 서비스 라이브러리를 찾을 수 없다는 오류가 발생하면 SDK Manager를 실행하여 Google Repository 가 설치되어 있는지 확인 후, 설치되어 있지 않다면 설치 후 다시 시도해본다.


(2) 문자열 리소스에 지도 API 키 추가하기

사용하는 방식에 따라 디버그와 릴리즈 빌드에 사용하는 API Key를 별도로 지정할 수 있고, 하나의 API Key를 모든 빌드에 사용할 수도 있는데, 이 글은 각 빌드 별로 다른 API Key를 사용하는 경우로 가정한다.


Application Module의 빌드스크립트(build.gradle)을 열어 buildTypes 항목에 다음을 입력한다.


buildTypes {

        release {

...

// 배포용 KEY

           resValue "string", "google_maps_key", "{API_Key 입력}"

        }

        debug {

...

         // 개발용 KEY

       resValue "string", "google_maps_key", "{API_Key 입력}"

   }

}

변경 후 동기화를 한다(Sync).


위에서 추가한 지도 API 키는 매니페스트 파일에 선언해야 한다.

매니페스트 파일을 연 후, <application> 태그 내 <meta_data> 내에 지도 API키를 선언한다.

<manifest>

<application>

...

<meta-data

android:name="com.google.android.geo.API_KEY"

android:value="@string/google_maps_key" />


<activity... />

</application>

</manifest>


(3) 레이아웃 설정

화면 전체에 지도를 표시하는 레이아웃을 작성한다. SupportMapFragment를 사용한다.


[activity_maps.xml]


<fragment android:id="@+id/map"

 android:name="com.google.android.gms.maps.SupportMapFragment"

      xmlns:android="http://schemas.android.com/apk/res/android"

      android:layout_width="match_parent"

      android:layout_height="match_parent" />



(4) 엑티비티 설정

레이아웃을 설정하는 것 외에 엑티비티에서 추가로 설정해야 할 항목은 없다.


[MapsActivity.java]


public class MapsActivity extends FragmentActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_maps);

    }

}




ref) http://kunny.github.io/lecture/maps/2016/04/03/google_maps_android_v2_2016/