본문 바로가기

Develop/Android SDK

안드로이드 구글맵 사용하기~ Google Map (com.google.android.maps)

책 + 구글링 요약으로 몇자 적어봅니다. 1번부터 순서대로 적었어요~

1. 프로젝트 속성을 변경
 프로젝트에서 오른쪽 마우스 버튼클릭해서 Properties 로 들어간다.
 그담 Adroid 탭에 보면 Project Build Target 이 Google APis 로 선택되어 있어야 한다.
 전 첨에 프로젝트 생성할때 이미 이걸로 생성했기에.. 그냥넘어감..
 보통 Android 2.2 이렇게 선택되어 있을것입니다. 바로 아래 Google APIs를 선택해주세요~^^


2. AndroidManifest.xml 파일에 빨간 부분 추가하기 (라이브러리 및 사용권한)

 <application android:icon="@drawable/icon" android:label="@string/app_name">
     <users-library android:name="com.google.android.maps" />
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main" android:screenOrientation="portrait" />
        <activity android:name="Event" android:screenOrientation="portrait" />
        <activity android:name="EventMap"></activity>
        <uses-library android:required="true" android:name="com.google.android.maps"></uses-library>
    </application>

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.RESTART_PACKAGES"/>
   <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
   <uses-sdk android:minSdkVersion="8" />



3. layout/map.xml 작성
 <?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView   
 xmlns:android="http://schemas.android.com/apk/res/android"   
 android:id="@+id/mapview"   
 android:layout_width="fill_parent"   
 android:layout_height="fill_parent"   
 android:clickable="true"   
 android:apiKey="Your API KEY"/>
  ※ 여기서 잠깐!
  API 키 생성을 해야 한다.
    1. cmd -> c:\Documents and Settings\Administrator\.android 디렉토리로 이동한다
        (안드로이드api가 제대로 설치되어 있으면 쉽게 찾을수 있음.)
    2. keytool.exe 를 이용하여 MD5 Fingerprint를 생성해야 하는데 JDK 가 설치 되어 있고 PATH가 잡혀있어야 한다.
    3. 프롬프트에서
          keytool -list -keystore debug.keystore -keypass android -storepass android -alias androiddebugkey  엔터!!
    4. 그럼 "인증서 지문<MD5>" 가 나올것이다. CMD 에서 복사하기 힘들면 오른쪽 마우스 버튼을 눌러 표시(K)를
        클릭해주고 선택해서 CTRL+C 하면 된다..
    5. 이렇게 복사해서 http://code.google.com/intl/ko/android/maps-api-signup.html 
        여기서 붙여넣기고 API KEY를 생성하여 사용하면 된다..
★ 테스트용은 debug.keysotre 를 사용하지만 실제로 마켓에 올리려면 안드로이드 개발자로 등록한 자신의 
    keystore를 사용해야 합니다.


4. src/Map.java 파일을 생성한후 아래와 같이 작성한다.

import android.os.Bundle;

import com.google.android.maps.MapActivity;  //중요

public class EventMap extends MapActivity {

 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.event_map); //layout map id랑 매칭
    }

 @Override
 protected boolean isRouteDisplayed() {
   // TODO Auto-generated method stub
   return false;
 }
}


MapActivity 를 연결 안해주면 Error inflating class com.google.android.maps.MapView 이런 에러메세지를 볼수 있다ㅠㅠ
           
그리고 실행하면 짜잔...^^  -by xranma

add. 좌표로 서울 화면만 보기
 Map.java 파일에
         MapView eventMap; //선언을 해주고

        onCreate함수 안에..

        eventMap = (MapView)findViewById(R.id.eventMapView);
       //eventMap.setSatellite(true); //위성GPS화면으로 보기
        eventMap.setBuiltInZoomControls(true);
        GeoPoint vMap = new GeoPoint(37566535, 126977969);
        MapController map = eventMap.getController();
        map.animateTo(vMap);
        map.setZoom(15);

add2. 주소로 GPS 좌표 찾기
 XML   : http://maps.google.co.kr/maps/api/geocode/xml?address=[찾을주소]&sensor=true
 JSON : http://maps.google.co.kr/maps/api/geocode/json?address=[찾을주소]&sensor=true
        ※ 위 좌표값에 1,000,000을 곱하고 반올림해서 자연수로 변환한후, "GeoPoint()"에게 넘겨줘야 합니다~

check.
   구글맵의 GPS 정보는 자바를 기준으로 JSON 방식과 XML 방식으로 데이터를 제공하는데 XML은 사람이 이해하기 쉬운
   태그 방식으로 표기 하지만 JSON은 컴퓨터가 빨리 인식하도록 하기 위해 객체와 배열 구조로 만들어졌음. 편한걸로 이용^^