관리 메뉴

moozi

MapView 이용하기 3 - MapView 띄우기 본문

안드로이드개발강좌

MapView 이용하기 3 - MapView 띄우기

moozi 2010. 2. 16. 17:07

MapView는 구글 API를 사용하기 때문에 먼저 Google API를 지원하는 에뮬레이터를 생성해야 합니다.

1. 이클립스에서 AVD 매니져를 엽니다. 핸드폰 모양 버튼을 클릭하세요.



2. Andorid SDK and AVD Manager 창에서 오른쪽 next버튼을 누릅니다.



3. Create new AVD 창에서 Name 항목에 AVD 이름을 적고, Target은 Google APIs (Google Inc.) - API Level 6 를 선택합니다. 만약 SDK 2.1 로 업그레이드 했다면 Target을 Google APIs (Google Inc.) - API Level 7 로 할 수 있습니다. 다음, Create AVD 버튼을 클릭합니다.



4. 이어지는 화면에서 OK 버튼을 눌러서 완료합니다.



이제 MapView를 이용하는 예제를 작성해 보겠습니다. 이번 예제 역시 안드로이드 개발자 사이트의 내용을 토대로 살펴봅니다.

1. 다음과 같이 프로젝트를 생성합니다. Build Target을 Googles API를 선택해야 함에 유의 하기 바랍니다.



2. AndroidManifest.xml 파일을 다음과 같이 편집합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="my.HelloMyMap"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-permission android:name="android.permission.INTERNET" /> 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
     <uses-library android:name="com.google.android.maps" />
        <activity android:name=".HelloMyMap"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
    <uses-sdk android:minSdkVersion="6" />

</manifest>

코드 중    <uses-permission android:name="android.permission.INTERNET" />  는 인터넷 액세스가 가능하도록 권한을 부여한 것이며, <uses-library android:name="com.google.android.maps" /> 는 구글맵 을 사용하겠다고 지정한 것입니다.


3. main.xml 파일을 다음과 같이 편집합니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainlayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <com.google.android.maps.MapView
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"
        android:apiKey="0oet2s0L9AwWWQW_-RiVZ6tGJ5c8xs2fseCvL3Zg"
    />
       
</RelativeLayout>

코드 중에서 android:apiKey="0oet2s0L9AwWWQW_-RiVZ6tGJ5c8xs2fseCvL3Zg" 부분이 지난 강좌에서 미리 구해 놓은 API Key 값을 입력하는 부분입니다.( 필자의 글 http://moozi.tistory.com/60 를 참고하세요 ).
 0oet2s0L9AwWWQW_-RiVZ6tGJ5c8xs2fseCvL3Zg 대신에 여러분이 구해 놓은 API 키값을 입력하세요.


4. src -> HelloMyMap.java 파일을 다음과 같이 편집합니다.

package my.HelloMyMap;

import android.os.Bundle;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;

public class HelloMyMap extends MapActivity {
 
 MapView mapView;
   
 @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
 
/** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        mapView.setSatellite(true);
    }       
}

코드에서 mapView.setBuiltInZoomControls(true); 는 줌컨트롤 사용여부를 결정하는 부분이며,
mapView.setSatellite(true);  위성지도 사용여부를 지정하는 부분입니다.


5. Ctrl + F11 로 실행합니다. 참고로 실행 결과가 나오기 까지 시간이 다소 걸립니다.

[ 실행결과 ]

지도를 클릭하면 아래쪽에 줌컨트롤이 나타납니다.

[ 줌컨트롤 ]

다음은  mapView.setSatellite(true); 부분을 mapView.setSatellite(false); 로 바꿔서 실행한 결과입니다.위성지도가 아닌 일반지도가 나타납니다.

[ 실행결과 - 일반지도 ] 


 

Comments