태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

구글맵 API 활용하기 - (2) 구글맵 띄워보기

2010.01.08 16:05

저번 시간에는 구글맵을 띄우기 위해 API Key를 발급받는 과정까지 알아보았습니다. 이번 시간부터는 본격적으로 구글맵을 띄워보는 것에 대해 다뤄보도록 하겠습니다.

[어플리케이션 정보]

액티비티
  • HelloMaps (HelloMaps.java)

레이아웃
  • main.xml

권한 (uses-permission)
  • android.permission.INTERNET
  • android.permission.ACCESS_FINE_LOCATION

외부 라이브러리 (uses-library)
  • com.google.android.maps

API Level
  • 6 : Google APis [Android 2.0.1]

어플리케이션 소스 :
구글맵은 인터넷을 통해 실시간으로 지도 데이터를 받게 되는데, 이를 위해 메니페스트 파일에 인터넷 사용 권한 (android.permission.INTERNET)을 추가해주어야 합니다. 이를 추가하지 않으면 지도 데이터를 받아올 수 없으므로 지도가 제데로 표시되지 않습니다. 그리고, 나중을 위해서(?) GPS의 위치 정보를 받을 수 있는 권한인 ACCESS_FINE_LOCATION도 추가해주도록 하였습니다.

구글맵을 띄우려면 Activity가 아닌 MapActivity를 상속해야 합니다. 따라서 프로젝트를 생성한 후, 아래와 같이 액티비티의 코드를 수정합니다.

package com.androidhuman.example.HelloMaps;

import com.google.android.maps.MapActivity; // Activity가 아닌 MapActivity를 추가합니다.
import android.os.Bundle;

public class HelloMaps extends MapActivity { // MapActivity를 상속합니다.
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

@Override 
protected boolean isRouteDisplayed() { // MapActivity를 상속하면, 이 메소드를 추가해줘야 합니다.
	// TODO Auto-generated method stub
	return false;
}
}



설정이 끝났다면, 레이아웃에 MapView를 추가해주는 일이 남았는데요, 그 전에 권한 설정 및 라이브러리 사용 설정을 변경해주어야 합니다. AndroidManifest.xml 파일을 열어보도록 합시다.

이클립스에서 열어본 Androidmanifest,xml 파일



일단, 권한(Permission)설정을 추가해주도록 합시다. 아래 탭에서 Permission 탭을 클릭합니다.
인터넷 사용 권한과 위치정보를 받을 수 있는 권한을 추가해보도록 합시다.

Add.. 버튼을 눌러 다음 창을 띄웁니다. 여기서 Uses Permission을 클릭해줍니다.


OK를 클릭한 후, 아래와 같이 위치정보를 이용하는 권한을 추가해주고, 같은 방법으로 인터넷을 이용하는 권한까지 추가해주도록 합시다.





그 다음은, 구글맵을 사용하기 위해 라이브러리를 이용하도록 해주는 과정을 수행합니다. Application 탭을 클릭한 후,Application Nodes의 Add.. 버튼을 누른 후, Uses Library를 선택합니다.



OK를 누른 후, 아래와 같이 사용할 라이브러리를 선택해줍니다.



다 추가하였다면, main.xml을 다음과 같이 수정합니다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<com.google.android.maps.MapView
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
        android:clickable="true"
	android:apiKey="자신의 API KEY" />
</LinearLayout>



위의 코드에서, apiKey (API Key)가 가장 중요합니다. apiKey에 이전 강좌 (2009/03/16 - [안드로이드/안드로이드 입문] - #06. 구글맵 API 활용하기 - (1) MD5 Fingerprint 생성, API Key 발급받기)에서 발급받았던 API Key를 입력해야만 지도가 제데로 보이게 됩니다. 잘못된 키를 입력한다면, 지도가 제데로 뜨지 않고 회색 타일(?) 만 뜨게 되니, 주의하세요!

위에 첨부한 소스 파일을 그대로 테스트해보시려는 분들은 소스 파일에 입력되으 있는 API Key를 그대로 사용하시면 지도가 제데로 뜨지 않으니 필히 자신이 발급받은 API Key로 수정한 후 사용하셔야 합니다.

API Key를 수정하였다면, MapView 속성 중 Clickable을 true로 설정하여 맵을 클릭할 수 있도록 해줍니다. 지도롤 이동하려면 지도를 클릭한 후 움직여주어야 하니, 이 옵션은 필수입니다. :)

모두 추가해주었다면, 한번 실행해 볼까요?  다음과 같이 나온다면 성공한 것입니다!



어때요? 생각보다 어렵지는 않죠? :)
다음 시간에는 지도를 확대/축소하는 것에 대해서 알아보도록 하겠습니다.
저작자 표시 비영리 변경 금지
신고

커니 위치 기반 서비스 사용하기/구글 지도 (Google Maps) , , , , ,

  1. 이전 댓글 더보기
  2. Blog Icon
    라르크

    지도를 맵뷰가 아닌 웹뷰로 띄우려고 하는데요 . 웹 페이지는 만들어놨구요. 웹페이지에 들어가면 제 위치를 중심으로 주변 맵을 띄워줍니다. 그런데 웹뷰로 링크를 걸면 에뮬레이터에서는 보여지는데 단말기에서는 안보여져요 ㅠ
    이유 아시나요?

  3. 글쎄요.... 웹뷰라면,...웹페이지상에서 구글맵을 띄우도록 한것 아닌가ㅇㅛ??

    단말기 브라우저에서 자바스크립트 실행 설정이 혹시 체크되어 있지 않은 것은 아닐까요?

  4. Blog Icon
    라르크

    답변감사합니다. 그런데 웹 페이지를 단말기 웹 브라우저에서 주소를 치고 들어가면 지도가 나와요. 그 주소를 웹뷰에 링크를 걸면 하얗게만 나오고 안나오구요. 커니님께서 말씀하신것처럼 단말기내에 설정이 안되어있다면 웹 브라우저에서 들어갔을때도 안나와야 되는거 아닌가요 ㅠㅠ

  5. 그렇다면 혹시 웹뷰에서 javascript 옵션을 활성화해보는건 어떠려나요? 에뮬레이터와 단말기가 조금 다를 수도 있으니, WebView 설정에 javascript 옵션을 활성화해보면 되지 않을까요?

  6. Blog Icon
    라르크

    mWeb.getSettings().setJavaScriptEnabled(true);
    이렇게 선언해줬는데 아닌가요?
    제가 잘 몰라서 ㅠ

  7. Blog Icon
    갑시다

    안녕하세요
    정말 좋은정보 감사드립니다.
    다 잘되는데 나중에 구글맵이 아니라 검정색화면이 뜨는데 무슨 문제인지 혹시 아시나 해서 이렇게 글 남깁니다.
    답변주세요.

  8. 구글맵 뷰가 포함된 레이아웃을 액티비티의 레이아웃으로 선언하셨나요? setContentView()를 사용하셨는지 확인하는 것이 좋을 것 같습니다.

  9. Blog Icon
    Mr.Haam

    저기 죄송하지만 구글맵 api말구 다른 맵api가 있다면 사용할 수 있는 방법도 있을까요?

  10. 다른 API를 사용하시려면 라이브러리 형태로 된걸 사용하시거나, 직접 구현하셔야 합니다.

  11. Blog Icon
    bacteria

    구글맵 연동후 일정 크기 이상 확대하면
    지도가 아니라 깨진 도트만 출력되는데 ..
    일정크기 이상 확대하려면 gps를 연동해야하는건가요?

  12. GPS와 지도가 확대되지 않는건 상관이 없습니다.
    네트워크 상태가 좋지 않거나, 로케일 설정에 따른 확대 제한 문제가 원인으로 추정됩니다.

  13. Blog Icon

    커니님 글 잘 보고있습니다 ^.^

    한가지 궁금한게 있어서요..

    한 액티비티에서 위에는 동영상 아래에는 맵을띄우고 싶은데요,

    혹시 MapActivity를 상속받지 않고 가능한 방법이 있을까요??

  14. MapView를 사용하려면 항상 MapActivity를 사용해야 합니다. :) 이를 사용하지 않는 방법은 없습니다.

    MapActivity를 상속하더라도 동영상을 띄우는 것은 전혀 지장이 없으니 그냥 레이아웃에 영상 표시 영역 설정하시고 영상 표시하면 될듯 합니다.

  15. Blog Icon

    답변 감사드립니다 ^^

  16. Blog Icon
    1111

    빌드 타켓을 android2-2로 설정하고 외부라이브러리를 통해 구글 맵을 가져와서 실행하면 sorry가 뜨던데 꼭 빌드타켓을 google APIs로 설정해야만 맵을 띄울 수 있는 건가요?

  17. 네. Google APIs가 아닌 일반 타겟에는 구글맵과 관련된 라이브러리가 포함되어있지 않습니다.

  18. Blog Icon
    공부하는학생

    에러도 안뜨고 잘되는데 왜 지도가 안나타나고 격자무늬만 나올까요..?

  19. Blog Icon
    공부하는학생

    제가 덕수궁을 경도와 위도를 설정해서 나타내는거랑
    gps켜서 하는거 두개로 했는데 gps켜서하는건 지도가 나오는데 첫번째꺼는 격자무늬만나오네요 ㅠㅠ

  20. 구글맵 API Key를 발급받으셨나요? 애플리케이션 서명에 사용하는 key에 따라 API Key를 발급받아야 합니다~~

  21. MD5 받고
    사이트에 가서 사용자 키받았습니다.
    그런데 회색 타일만 보이는 이유는 뭣때문일까요?
    커니님 올려놓은 소스에 key 만 바꿔서 넣었는데도 그렇네요...
    키값 보내드려볼까요? 답답합니다 뭐가 문제인지 ㅠ.ㅠ

  22. Blog Icon
    음음

    빌드타겟을 Android 2.2로 설정하면 어떻게 맵정보를 읽어올 수 있죠??
    Google API로 하면 되는데 Android 2.2환경에 작업해보고 싶어서요..

  23. Google APIs가 별도로 존재하는 것이 아니라 안드로이드 2.2 버전의 Google Api가 들어가있는 이미지가 있는 겁니다.

  24. 아무리 구글키 값받고 적어도 바둑판모양만 뜨네요 ㅜㅜ

  25. Blog Icon
    어려워

    에뮬로는 안떠도 기기로는 뜨더라구요. 한번 해보세요!

  26. Blog Icon
    안드로이드 정복할거야

    빌트패스가아니라 빌드 타겟입니ㅏ

    프로젝트 속성 (Properties)를 선택해보면 Build Target에 Android 1.6, 2.0, 2.0.1 등등..과 Google APIs 가 있습니다.

    Google APIs에서 사용하고 싶은 SDK 버전 (API 레벨)을 선택하서서 맞는 걸로 선택해주시면 됩니다.

    제가 궁금한것은 프로젝트 속성을 Google APis를 빌드 타겟으로 설정안하고 안드로이드 2.3을 선택해서 그소스에 지도를 못불러오나요?

  27. 빌드타겟을 구글맵으로 설정하지 않으면 컴파일조차 안될걸요?
    구글맵을 표시하는 클라스들을 참조할 수 없으니 컴파일도 불가능하죠.

  28. 좋은글 출처를 표시하고 블로그에 담아갑니다. ^^

  29. Blog Icon
    맵문제

    v2로 바뀌면서 제 구글api키 받아서 제대로 넣었는데도 위치정보는 뜨는데 맵은 회색만 뜨네요
    혹시 v2 api키 받으려고 패키지명까지 입력할때 그 패키지명에 문제가 있어서 그러는건가요??
    예상되는 문제 있으시면 지적 좀 부탁드려요

  30. 패키지명에 문제가 있다면 오타(..)말곤 없습니다.
    패키지명 외에도 각종 권한 입력할 때 오타가 자주 발생하는 편이니 (저도 한번 그런 적이 있었는데, 끝까지 뭐가 틀렸는지는 못 알아내고 그냥 처음부터 다시 해서 고친 기억이...) 해당 부분은 복사-붙여넣기 하는 식으로 다시 해보는 것을 추천드립니다.

  31. Blog Icon
    구글맵

    ㅠ_ㅠ 나와있는 것 그대로 했고 에뮬로 인터넷도 되고 api key도 제대로 입력했는데 계속 회색격자무늬만 뜨는데 ㅠㅠㅠ 뭐가 문제 인걸까요?ㅠㅠ

  32. 에뮬레이터에서는 정상적으로 출력되지 않을 수도 있습니다.
    실제 기기로 한번 테스트해보세요~

  33. Blog Icon
    질문용!

    이것 대체 몇버전이나요? 아무리 가상머신으로 돌려도 지도는 안보이네요 가상머신 몇정도 돌려야지 이 파일의 맵이 정상적으로 볼수가 있나요? api 제걸로 했는대도 그냥 오목판빠게 안보이네요

  34. 가상머신과는 상관없고, API Key혹은 MD5 Hash 입력 과정에서 실수가 있지 않을까 생각됩니다. 저도 그부분에서 실수를 많이 했거든요..

  35. Blog Icon
    질문입니당

    안녕하세요! 올려주신 정보로 필요한 어플을 잘 만들었습니다.!

    그런데 이제 apk파일로 변환을 하려고 추출을 하였는데요. 구글맵이 안뜹니다ㅠㅠ
    무슨 구글키같은게 잘못된 걸까요?

    답변좀 꼭 부탁드릴게요ㅠ.ㅜ

  36. 로그를 확인해보세요~~
    서명 키가 바뀌어서 안 뜰 가능성이 높습니다.