실행환경

 Desktop

 조립식

 CPU

 Intel(R) Core(TM) i7-3770 3.50GHz

 Memory

 4 GB

 OS

 Window 7 Professional 32bit

 Java

 1.7.0_51

 Android

 SDK : 4.4.2 (KitKat), Google APIs 4.4.2

 TEST : Galaxy S3 4.3(Jelly Bean)

 WebServer

 Apache Tomcat 7.0

 DB

 MySQL 5.6.15


Google Maps Android API v2 (구글 맵) 사용하기


구글에서 제공하는 사용 방법(링크)


1. 구글맵 라이브러리 다운로드 및 프로젝트 생성하기

2. 새 프로젝트에서 구글맵 라이브러리 프로젝트 가져오기

3. 인증키 발급받기

 3-1. 디버깅용

  3-1-1. cmd창에서 확인하기

  3-1-2. 이클립스에서 확인하기

 3-2. 릴리즈용

4. 구글맵 인증키 발급받기

5. 구글맵 사용하기



1. 구글맵 라이브러리 다운로드 및 프로젝트 생성하기

 1-1. Google Play services SDK 다운로드하기

  Android SDK Manager - Google Play services 를 설치한다.


 1-2. 구글맵 라이브러리를 가져오기.

  1-2-1. Ctrl + N -> Android Project from Existing Code 를 선택한다.


  1-2-2. Root Directory 에 설치한 구글맵 라이브러리 경로를 지정해준다.

SDK경로\extras\google\google_play_services\libproject\google-play-services_lib



2. 구글맵을 사용할 새로운 프로젝트 생성하기.

  2-1. 프로젝트를 생성하고, 프로젝트를 오른쪽 클린한 후 Properties(속성)를 선택한다.

 


  2-2. 하단의 Library창에서 Add를 통해 가져온 프로젝트 추가해준다.





3. 인증키 발급받기

 3-1. 디버깅용 키 지문 확인하기.

  3-1-1. cmd(commend)창에서 확인하기.

1. OS별로 아래 경로로 이동

 OS X, Linux

  ~/.android

 윈도우 xp

  C:/Documents and Settings/사용자 계정/.android

 윈도우 7

  C:/Users/사용자 계정/.android


2. 명령어 실행

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

 혹은 -keystore 값에 경로를 함께 지정해도 된다.


  3-1-2. 이클립스에서 확인하기

   Window - Preferences -> Android - Build


 3-2. 릴리즈용

....


4. SHA1 지문으로 구글 키 발급받기

 4-1. Google APIs console로 이동한 뒤에 프로젝트를 생성한다.


4-2. 좌측 메뉴중 APIs & auth - APIs 에서 Google Maps Android API v2 를 찾아 활성화시켜준다.


 4-3. APIs & auth - Credentials 에서 Public API access의 CREATE NEW KEY를 선택하고, Android key를 선택한다.



 4-4. 아래와 같은 창이 나오면 위에서 확인했던 SH1키와 같이 현재 작업중인 패키지를 넣는다.

예) [SHA1지문];[현재 작업중인 패키지 이름]

AF:3B:EF:67:CE:A1:5C:7D:C2:3F:C4:99:8B:63:7F:F5:92:83:E2:11;com.example.googlemap_v2



 4-5. 아래와 같이 키가 발급되었다.


5. 구글 맵 사용하기(code)

 5-1. 매니페스트 설정하기.

  5-1-1. Manifest 탭


   5-1-2. Application 탭(Meta Data 2개를 추가해야 한다.)

   5-1-3. Permissions 탭

1개의 permission과 7개의 user-permission을 추가한다.

<permission
    android:name="com.example.maptest.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" >
</permission>
<uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />



JAVA CODE

   5-1-4. AndroidManifest.xml에서 바로 추가할 수도 있다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.maptest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <permission
        android:name="com.example.maptest.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" >
    </permission>

    <uses-permission android:name="com.example.maptest.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.maptest.MapTest"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="KEY" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
    </application>

</manifest>


  5-2. layout에 fragment 추가하기

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MapTest" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <fragment 
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment"/>

</RelativeLayout>


  5-3. MainActivity에 FragmentActivity 상속 받기

public class MainActivity extends FragmentActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


참고자료


+ Recent posts