관리 메뉴

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); 로 바꿔서 실행한 결과입니다.위성지도가 아닌 일반지도가 나타납니다.

[ 실행결과 - 일반지도 ] 


 

19 Comments
  • 프로필사진 초보자 2010.02.18 15:23 항상 이해하기 쉬운 강좌를 펼쳐 주셔서 감사드립니다.

    덕분에 빠르게 배워나가고 있네요^^

    근데 다음 강좌는 Notepad 강좌인가용?
  • 프로필사진 moozi 2010.02.18 15:38 신고 감사합니다.

    다음 강좌는 MapView에서 위도 , 경도를 사용해서 원하는 위치이동, 표시 에 대한 내용입니다.

    ^^
  • 프로필사진 Sad7Dayz 2010.02.20 17:47 Wow!! 안드로이드 공부해볼려고 따라해봣는데 잼잇네요!! ㅇ_ㅇ)
    강좌 감사합니다.
  • 프로필사진 moozi 2010.02.20 17:50 신고 제 블로그에 방문해주셔서 감사해요.. ^^
  • 프로필사진 052 2010.03.09 13:36 안녕하세요
    항상 와서 공부하고 있습니다 많은 도움이 되고 있고요^^
    감사합니다.
    그런데 이번 강좌에서 하는데 화면이 이상하게 나오네요^^;;
    이미지를 보여드리고 싶은데 여기선 이미지가 업로드가 안되나보네요
    본 강좌대로 한 후 실행시키면 지도는 안 나오고 격자무늬의 바탕에 작은동그라미가 나오네요
    혹은 mms 어쩌구 하면서 제대로 화면이 안 뜨네요~
    왜 그런걸까요?
  • 프로필사진 moozi 2010.03.09 14:53 신고 저도 그런적이 있는데요... 이렇게 한번 해보세요...

    일단 실행을 한 후에

    에뮬레이터에서 오른쪽에 버튼들중에 menu버튼을 누르면 초기 화면으로 나가는데 여기서 아랫쪽에 위로 당기는 바(bar)같은 버튼이 있어요 그걸 누르면 여러 아이콘이 있을거에요...

    거기서 방금 실행한 앱을 찾아서 클릭해보세요...

    MapView가 로딩하는데 시간이 오래 걸리고, 인터넷을 이용하다보니 그런경우가 있는것 같습니다.

    ^^
  • 프로필사진 052 2010.03.10 11:06 아..정말 그렇게 하니 되네요^^
    감사합니다
    그럼 또 다른 강의보러 가야겟어요 ㅎㅎ
  • 프로필사진 moozi 2010.03.10 12:00 신고 아 그러세요 ^^

    잘되셨다니 다행입니다...
  • 프로필사진 열공 2010.03.17 20:24 이전까지는 했는데요..에뮬레이터를 만드려고 하니까 구글 API가 안보여요.ㅜㅜ
    안드로이드2.1 밖에 없어요..
    이전까지는 똑같이 따라했는데.. ㅠㅠ
    뭔가 따로 또해야하는것이 있나요??
  • 프로필사진 moozi 2010.03.17 21:42 신고 아마 구글 API가 설치가 안된거 같습니다.

    http://moozi.tistory.com/25 이글을 참고 하셔서 google api 를 추가 설치 하세요

    ^^
  • 프로필사진 열공 2010.03.18 10:47 그러네요.. 처음할때똑같이따라서했었는데 안깔렸었나보네요.. 감사해요..
  • 프로필사진 완초 2010.03.21 14:22 자바파일 R.id.mapview 에 있는 R.id 는 뭔가요? 이 부분이 계속 빨갛게 에러뜨는데

    어떻게 처리해줘야하는지 모르겠네요 ;; 좀 알려주세요-
  • 프로필사진 moozi 2010.03.21 19:19 신고 R.id 는 Resource ID 를 의미합니다.

    <com.google.android.maps.MapView
    android:id="@+id/mapview 에서 mapview가 id가 됩니다.

    xml에 작성한 id와 일치하는지 확인해 보세요....
  • 프로필사진 이상호 2010.03.30 18:47 저도 실행시켜봤는데 흰색바탕에 격자무늬 그이상은 안나오덴데
    왜그런거죠? 아무리 기다려봐도 맵이 생기지가 않아요
  • 프로필사진 moozi 2010.03.30 20:03 신고 저도 그런 경우가 있었습니다.

    에뮬레이터에서 오른쪽에 버튼들중에 menu버튼을 누르면 초기 화면으로 나가는데 여기서 아랫쪽에 위로 당기는 바(bar)같은 버튼이 있어요 그걸 누르면 여러 아이콘이 있을거에요...

    거기서 방금 실행한 앱을 찾아서 클릭해보세요...

    MapView가 로딩하는데 시간이 오래 걸리고, 인터넷을 이용하다보니 그런경우가 있는것 같습니다.
  • 프로필사진 라미엘 2010.03.30 19:22 줌컨트롤을 제가 원하는 위치로 이동시킬순 없나요?

    그리고, 점컨트롤을 가로로 말고 세로로 세울수는 없는지 알고 싶어요~

    main.xml에 그냥 줌컨트롤을 추가해서 위치이동은 시켜봤는데.. (세로로 세우기는 안보이는.. ㅠ)

    자동으로 줌+ 줌- 기능은 적용되지 않더라구요 ㅎㅎ .java에다가 클릭시 기능을 추가해야하는건가요?

    그리고 줌컨트롤 사이즈도 좀 줄여보고 싶은데 어디서 건드려야되는지 안보여요 ㅠㅠ

    여기저기 검색 해봐도 자료가 많이 없어서 OTL.. 궁금해요~ 꼭 알려쥬세요 흑흑..
  • 프로필사진 moozi 2010.03.30 20:04 신고 라미엘님 반갑습니다.

    줌컨트롤 부분은 저도 테스트 안해봐서 잘 모르겠습니다.

    나중에라도 알게되면 이 포스트 밑에 답글 달아 놓을께요 ^^;;;;
  • 프로필사진 moozi 2012.06.07 11:40 신고 혹시 SHA1의 지문만 보인다면 keytool -list -v -keystore debug.keystore 를 입력하면 MD5지문을 볼 수 있습니다.
  • 프로필사진 androi 2013.08.21 16:31 혹시 맵뷰를 다이아로그 안에다가 띄워서 쓸수는 없나요 ??
    액티비티를 다이아로그처럼 띄워서해봤는대 주변이 어둡게 되서요 ..ㅠ
댓글쓰기 폼