펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


GoogleMap gmap =  ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();


gmap.setOnCameraChangeListener(new OnCameraChangeListener() {

@Override

public void onCameraChange(CameraPosition arg0) {

LatLng location_center = arg0.target;

}

});



이외에도 

double latitude = arg0.target.latitude;

double longitude = arg0.target.latitude;

또는

double latitude = location.latitude;

double longitude = location.longitude;


등으로 추출


이벤트 발생 시기는 맵이 처음 로딩됬을때와, 지도를 움직이다가 정지상태로 들어가게되면

(손가락으로 드래그하다가 멈췄을 때)


리스터가 동작하여 멈췄을때 맵의 중앙 좌표를 가져온다.

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 dh 2014.12.01 20:37

    혹시 구글맵을 tab 내부에 구현해 보셨는지요...
    요며칠 고생하는데 잘안되네요 ㅎㅎ..

Android/구글맵 v2 | Posted by 덩치 2013. 12. 27. 16:38

구글맵(GoogleMap) v2 띄우기 (최신)

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

작성일에 직접 만들어가면서 포스팅한것이기 때문에,

작성일 기준으로 가장 최신 자료입니다.


1. 맵 표시를 위해 SDK Manager를 이용해 Google Play Service 최신버전 업데이트 


작은 빨간네모안의 SDK Manager를 누르면 Android SDK Manager 창이 위와같이 뜬다.

휠을 내려서 Extras 를 찾아서 하위의 Google Play services 를 체크하고 Install packages... 를 누른다

(필자는 이미 최신버전이라 단추가 비활성화상태)


이까지 마친 뒤 SDK 폴더로 이동 한 다음,

sdk/extras/google/google_play_services/libproject/google-play-services_lib 파일을 import해 준다.

밑의 사진을 보고 따라한다.







이 그림은 필자와 약~간 다를건데 필자는 이미 라이브러리를 import 해놨기때문에 위와같이 나온다. 상관하지않는다.




그럼 이렇게 프로젝트가 생성되고,


생성된 프로젝트를 우클릭 > Properties 한 다음 설정을 위와 같이 맞춘다.

Build Target은 꼭 2.3.3 이 아니라도 상관 없다. (보다 낮은것은 추천하지 않는다.)



그리고 이제 지도를 띄울 프로젝트를 만들어 보겠다.


File > New > Android Application Project 순서로 실행 

(Android Application Project 가 없는사람은 당황하지 말고 Other... > Android > Android Activity 순으로 실행한다.



Next 한 다음 대충 다음 다음 Finish 해 주면 프로젝트 생성 완료.



만들어진 프로젝트에 우클릭 > Properties 을 해 주고,





Android 클릭, Add.. 클릭 , google-play-services_lib 클릭 후 ok > ok 해 준다.

아까와는 달리 Is Library는 체크하지 않는다.


이까지 했다면 이제 맵을 띄울 바탕은 끝났다. 본격적으로 맵을 띄워보자.



2. 구글맵 API Console 등록

우선 구글계정이 필수, 로그인 하였다면

https://code.google.com/apis/console로 접속한다.


보는바와 같이 APIs & auth의 APIs 카테고리에서

구글맵 서비스를 이용하기 위해 Google Maps Android API v2 를 OFF > ON 으로 바꿔준다. 필수



3. API Key 발급

맵을 띄우기 위해서는 자신만의 고유한 API Key를 발급받아야한다.


이를 발급받기 위해서는 컴퓨터의 디버그용 키스토어를 발급받아야하는데, 간단히 설명하자면

개발을 할 때는 디버그 키스토어라는것을 이용해 어플에 서명(자신을 각인)하여 개발하고,

상용할 때는 배포용 디버그 키스토어를 이용해 어플에 서명을 하고 배포해야 사용이 가능하다.

여기서는 디버그 키스토어를 사용하는데, 잘 이해가 안간다면 깊히 생각하지 않아도 된다.


시작 > 실행 > cmd 를 이용해 명령프롬프트창을 띄운다(단축키  윈도우키 + R 후 cmd 엔터)

디버그용 키스토어가 저장되는 위치로 이동하기 위해 본인의 운영체제에 따라 다음과 같이 입력한다. 

Windows XP : C:\Documents And Settings\사용자 계정\.android

Windows Vista/7 : C:\Users\사용자 계정\.android

OSX/Linux : ~/.android


필자는 윈7에 사용자계정은 fureun 이므로




엔터를 치면 경로가 이동하게 되고, 그 다음 위 사진과 같이

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

이렇게 입력후 엔터를 치면


이렇게 나오는데, 여기서 맵을 띄우기 위해 필요한것은 SHA1: 뒤의 16진수이다.

창을 닫기 전에 따로 메모장등에 적어서 보관해놓는다.


그리고 아까 API Console로 돌아가서



누르면 창이하나 뜨는데 Android를 선택 하고,


위와같이 입력한 뒤 Create Client ID 를 누른다.

큰 네모에는 아까 명령프롬프트에서 추출한 SHA1값;패키지명


드디어 API key가 나왔다.


위의 키값을 따로 저장한 뒤, 다시 프로젝트로 돌아가보겠다.


매니패스트를 켠 뒤 AndroidManifest.xml 에서

다음과 같이 빨간네모부분을 추가한다






맨밑의 android:value= 에는 조금전 발급받은 Api key를 입력하면 된다.

따라치기 귀찮으면 밑의 글 복붙


    <uses-feature

        android:glEsVersion="0x00020000"

        android:required="true" />

    

    <permission

        android:name="com.example.SearchMJ.permission.MAPS_RECEIVE"

        android:protectionLevel="signature" >

    </permission>


    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

-------------------------------------------------

<meta-data

            android:name="com.google.android.maps.v2.API_KEY"

            android:value="Api key" />

<meta-data

            android:name="com.google.android.gms.version"

            android:value="@integer/google_play_services_version" />


그리고 메인액티비티의 레이아웃(res > layout > activity_main.xml)으로 이동해서


입력. 소스는

    <fragment

   android:id="@+id/map"

   android:name="com.example.GoogleMapVersion2.Fragment"

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   class="com.google.android.gms.maps.SupportMapFragment" />




다음과 같이 MainActivity extends ActivityFragmentActivity 로 바꿔준다

그리고 실행 하면



짜잔 ~ 하고 맵이 나타난다.

최초 시작 위치나 카메라 줌 레벨 등은 동일 카테고리 내의 다른 포스팅을 참조하기 바란다.



혹시 에러사항이 있거나 문의사항이 있다면 댓글 남기면 친절히 답변 달아드리겠음

한참걸렸네 ..



댓글을 달아 주세요

  1. 이전 댓글 더보기
  2.  댓글주소  수정/삭제  댓글쓰기 덩치 2014.09.23 10:44 신고

    ActionBarActivity를 사용하셔서 그런것같습니다.
    새로운 액티비티를 만드시고, extends Activity를 FragmentActivity로 변경하신 다음, 컨트롤+시프트+O로 임포트 해주시고
    기존 액티비티에서 맵 액티비티로 intent 시키는 방식으로 하시면 될듯합니다.

    •  댓글주소  수정/삭제 구글맵한번 2014.09.23 13:58

      네... 그렇군요.. 감사 드립니다.

      (초보인 저에게도 친절하게 답변주셔서 완전 감사드려요^^)

  3.  댓글주소  수정/삭제  댓글쓰기 DungChi Plz 2014.10.09 19:27

    안녕하세요 글을 읽고 따라하다가..cmd 창에서 keytool -list ~~ 이런 명령어를 입력하는데 keytool은 내부 또는 외부 명령, 실행할 수 없는 프로그램, 또는 배치 파일이 아닙니다. 라고 뜨는데...이거 어떡하죠??ㅜㅜ진도가 안나가네용....

  4.  댓글주소  수정/삭제  댓글쓰기 2014.10.20 23:01

    비밀댓글입니다

  5.  댓글주소  수정/삭제  댓글쓰기 강민경 2014.10.28 13:11

    위에 있는 예제대로해서 핸드폰으로 확인했는데 지도화면만 안뜨네요ㅠㅠㅠ이거 어떡해해야 지도가 화면에 나올까요????ㅠㅠ

    •  댓글주소  수정/삭제 덩치 2014.10.31 11:07 신고

      지도만 나타나지 않는 에러의 경우 대부분 api 키값이 정상적이지 않을 경우 발생합니다.
      api키가 정확한지 다시한번 확인해보세요

  6.  댓글주소  수정/삭제  댓글쓰기 꺌갸루 2014.11.04 00:48

    핸드폰을 통해 실행하자 마자 바로 종료되었는데 로그캣을 봐도 어떤 오류인지 모르겠어서요..
    무엇이 잘못 되었을까요..

    11-04 00:32:02.243: W/dalvikvm(32575): Unable to resolve superclass of Lcom/example/googlemap/MainActivity; (3)
    11-04 00:32:02.243: W/dalvikvm(32575): Link of class 'Lcom/example/googlemap/MainActivity;' failed
    11-04 00:32:02.243: D/AndroidRuntime(32575): Shutting down VM
    11-04 00:32:02.243: W/dalvikvm(32575): threadid=1: thread exiting with uncaught exception (group=0x41715da0)
    11-04 00:32:02.243: E/AndroidRuntime(32575): FATAL EXCEPTION: main
    11-04 00:32:02.243: E/AndroidRuntime(32575): Process: com.example.googlemap, PID: 32575
    11-04 00:32:02.243: E/AndroidRuntime(32575): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.googlemap/com.example.googlemap.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.googlemap.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.googlemap-4.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.googlemap-4, /vendor/lib, /system/lib]]
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.app.ActivityThread.access$900(ActivityThread.java:161)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.os.Handler.dispatchMessage(Handler.java:102)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.os.Looper.loop(Looper.java:157)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.app.ActivityThread.main(ActivityThread.java:5356)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at java.lang.reflect.Method.invokeNative(Native Method)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at java.lang.reflect.Method.invoke(Method.java:515)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at dalvik.system.NativeStart.main(Native Method)
    11-04 00:32:02.243: E/AndroidRuntime(32575): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.googlemap.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.googlemap-4.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.googlemap-4, /vendor/lib, /system/lib]]
    11-04 00:32:02.243: E/AndroidRuntime(32575): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
    11-04 00:32:02.243: E/AndroidRuntime(32575): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2222)
    11-04 00:32:02.243: E/AndroidRuntime(32575): ... 11 more

  7.  댓글주소  수정/삭제  댓글쓰기 안녕하세요 .. 2014.11.08 13:11

    안녕하세요 저는 public class MainActivity extends ActionBarActivity 되는데요 .
    그리고R.layout 이게 r을 못찾아요.. 왜이런지 아세요>>ㅠㅠ

    •  댓글주소  수정/삭제 덩치 2014.11.08 17:55 신고

      ActionBarActivity 에서
      ActionBar 를 지우시고
      빨간줄 다 떠있는 상태에서
      ctrl + shift + O
      를 눌러주신다음
      맨위쪽 import부분에 import android.R;
      이 있다면 지워주시고
      R을 제외한 빨간줄 뜨는부분을 전부 소스코드상에서 지워주신 다음
      실행해보세요

  8.  댓글주소  수정/삭제  댓글쓰기 회색창 2014.11.12 01:55

    이클립스에서 window- preferences - Android - Build에 있는 MD5와 SHA1 fingerprint를 이용하여 구글 api key를 받아와서 구글에서 api key를 만들었는데요 apk파일로 만들어서 실행시키면 아래 구글과 확대 축소 버튼만있고 지도맵에는 회색으로 뜨네요ㅠㅠ 저렇게 키를 받아오면 안되나요? 오류뜨는건 하나도없어요ㅠㅠ

    •  댓글주소  수정/삭제 덩치 2014.11.12 08:39 신고

      apk파일로 만든다는것은 사이닝을 한다는 말씀이시죠 ?
      그러면 디버그용 키스토어가 아니라 배포용 키스토어를 받으셔야합니다.
      배포용 키스토어 로 검색해보세요 ~

  9.  댓글주소  수정/삭제  댓글쓰기 안드로이드 2014.11.12 20:59

    안녕하세요 블로그 글 참고하면서 잘보고잇습니다!
    다름이 아니고 에뮬레이터에서는 구글맵이 정상적으로 뜨는데 디바이스에 들어가면
    흰색화면만 뜹니다..왜이런지 혹시 이유를 아시나요?

  10.  댓글주소  수정/삭제  댓글쓰기 안드로이드 2014.11.12 21:18

    11-12 06:20:02.587: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:02.587: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:02.587: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:02.587: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:02.597: E/SurfaceFlinger(49): glCheckFramebufferStatusOES error -537631906
    11-12 06:20:02.597: E/SurfaceFlinger(49): got GL_FRAMEBUFFER_COMPLETE_OES error while taking screenshot
    11-12 06:20:02.597: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:02.597: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:08.677: E/SoundPool(381): error loading /system/media/audio/ui/Effect_Tick.ogg
    11-12 06:20:08.677: E/SoundPool(381): error loading /system/media/audio/ui/Effect_Tick.ogg
    11-12 06:20:08.687: E/SoundPool(381): error loading /system/media/audio/ui/Effect_Tick.ogg
    11-12 06:20:08.687: E/SoundPool(381): error loading /system/media/audio/ui/Effect_Tick.ogg
    11-12 06:20:08.687: E/SoundPool(381): error loading /system/media/audio/ui/Effect_Tick.ogg
    11-12 06:20:08.687: E/SoundPool(381): error loading /system/media/audio/ui/KeypressStandard.ogg
    11-12 06:20:08.697: E/SoundPool(381): error loading /system/media/audio/ui/KeypressSpacebar.ogg
    11-12 06:20:08.697: E/SoundPool(381): error loading /system/media/audio/ui/KeypressDelete.ogg
    11-12 06:20:08.697: E/SoundPool(381): error loading /system/media/audio/ui/KeypressReturn.ogg
    11-12 06:20:08.697: E/SoundPool(381): error loading /system/media/audio/ui/KeypressInvalid.ogg
    11-12 06:20:08.817: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:08.827: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:08.827: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:08.827: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:08.827: E/SurfaceFlinger(49): glCheckFramebufferStatusOES error -537631906
    11-12 06:20:08.827: E/SurfaceFlinger(49): got GL_FRAMEBUFFER_COMPLETE_OES error while taking screenshot
    11-12 06:20:08.827: E/libEGL(49): called unimplemented OpenGL ES API
    11-12 06:20:08.827: E/libEGL(49): called unimplemented OpenGL ES API
    로그캣을 첨부하겟습니다!!!

  11.  댓글주소  수정/삭제  댓글쓰기 쎄미 2015.02.11 11:52 신고

    고맙습니다~

  12.  댓글주소  수정/삭제  댓글쓰기 초보초보 2015.03.31 13:22

    android:name="com.example.GoogleMapVersion2.Fragment"
    에서 GoogleMapVersion2.Fragment에 빨간줄이떠요.. 왜그럴까요ㅠㅠ

  13.  댓글주소  수정/삭제  댓글쓰기 완전초보임 2015.04.14 21:21

    덩치형님 맵은 일단 성공했슴돠
    저는 여기서 gps 기능을 추가 하고싶습니다ㅠㅠ
    부탁합니다 형님

  14.  댓글주소  수정/삭제  댓글쓰기 멍멍 2015.05.12 21:01

    안녕하세요. 올려주신 글 보면서 하고 있는데요, 마지막 부분에서 MainActivity extends Activity 를 FragmentActivity 로 바꿔주라고 하셔서 바꿔봤는데, 빨간 줄이 많이 뜨네요...
    그래서 그냥 ctrl + shift + o 키 눌러서 빨간줄 없애긴 했는데.. 옆에는 느낌표가 많이 뜨구요..
    이 다음에는 어떻게 해야 하나요?? 완전 초보라서..ㅠㅜ
    알려주시면 감사하겠습니다!!

  15.  댓글주소  수정/삭제  댓글쓰기 함호식 2015.05.15 23:48

    안녕하세요
    xml의 android:name="com.example.ham.childhapp"이부분에서 childapp부분이 빨강색으로 뜨는데 왜그러는걸까요?
    (package com.example.ham.childhapp;)
    그리고 따라서 실행시키니 액티비티 왼쪽아래 Google이라는 로고만 보이고 회색화면에 지도는 보이지 않는데 어느문제일까요?
    hhs9102@naver.com메일주소입니다.

  16.  댓글주소  수정/삭제  댓글쓰기 배문호 2015.05.19 02:51

    MainActivity에서 FragmentActivity로 바꾸고 ctrl + shift + o 눌렀는데
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    }
    여기에서 activity_main가 빨간줄 뜨고...
    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;
    }
    여기에서 R.menu.main, menu 이거중 main이 빨간줄...
    public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
    return true;
    }
    return super.onOptionsItemSelected(item);
    }
    여기에서 action_settings가 빨간줄 뜨네요...
    어떻게 해야될까요;;;

  17.  댓글주소  수정/삭제  댓글쓰기 2015.07.21 23:54

    비밀댓글입니다

  18.  댓글주소  수정/삭제  댓글쓰기 잇힛 2015.08.12 17:54

    저대로 따라했는데
    E/dalvikvm(17347): Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zza
    08-12 17:47:44.255: W/dalvikvm(17347): VFY: unable to resolve check-cast 26 (Landroid/app/AppOpsManager;) in Lcom/google/android/gms/common/GooglePlayServicesUtil;
    08-12 17:47:44.255: D/dalvikvm(17347): VFY: replacing opcode 0x1f at 0x000e
    08-12 17:47:44.255: I/dalvikvm(17347): Could not find method android.content.pm.PackageManager.getPackageInstaller, referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zzh
    08-12 17:47:44.255: W/dalvikvm(17347): VFY: unable to resolve virtual method 479: Landroid/content/pm/PackageManager;.getPackageInstaller ()Landroid/content/pm/PackageInstaller;
    08-12 17:47:44.255: D/dalvikvm(17347): VFY: replacing opcode 0x6e at 0x000b
    08-12 17:47:44.265: W/GooglePlayServicesUtil(17347): Google Play services out of date. Requires 7571000 but found 3159130
    08-12 17:47:44.265: W/GooglePlayServicesUtil(17347): Google Play services out of date. Requires 7571000 but found 3159130
    08-12 17:47:44.275: W/GooglePlayServicesUtil(17347): Google Play services out of date. Requires 7571000 but found 3159130
    08-12 17:47:44.275: W/GooglePlayServicesUtil(17347): Google Play services out of date. Requires 7571000 but found 3159130
    08-12 17:47:44.275: W/GooglePlayServicesUtil(17347): Google Play services out of date. Requires 7571000 but found 3159130

  19.  댓글주소  수정/삭제  댓글쓰기 잇힛 2015.08.12 17:54

    위와 같은 로그뜨면서 맵이 안뛰워지네요..

  20.  댓글주소  수정/삭제  댓글쓰기 2016.04.06 00:21

    비밀댓글입니다

    •  댓글주소  수정/삭제 덩치 2016.04.06 15:22 신고

      appcompat_v7 라이브러리가 없는 경우인것같은데요, 임시방편으로 values-v21과 같이 에러나는 파일을 모두 삭제해주시면 됩니다.
      근본적인 해결 방법은 appcompat_v7 라이브러리를 추가해주세요

  21.  댓글주소  수정/삭제  댓글쓰기 이히히 2016.04.06 00:23

    위에처럼 따라했는데 import까지 똑같이 따라했는데 안되네요....C:\Users\osoung\Documents\android\google-play-services_lib\res\values-v21\appinvite_styles.xml:5: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Material.Light.DialogWhenLarge.NoActionBar'. 이런 오류가 뜨고 res에 values-v21에 x표시가 뜨네요...이유가 알고싶습니다...

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO

GoogleMap gmap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

LatLng startingPoint = new LatLng(latitude값, longitude값);


gmap.moveCamera(CameraUpdateFactory.newLatLngZoom(startingPoint,16));

startingPoint는 시작 위치를 뒤의 숫자는 zoom level을 뜻한다.


Permission :    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


팁으로 좌표 구하는 사이트 :

http://universimmedia.pagesperso-orange.fr/geo/loc.htm

한글로 검색 가능하며, 화면 중앙에 마커가 고정돼있고 그곳의 Lat, Lng값을 알려주는 사이트.

댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 Tada 2014.01.19 16:42

    자세한 설명 감사합니다. 그런데 저는 따라하다 보니 아래 코드를 추가해야만 에러 없이 실행되더군요
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

  2.  댓글주소  수정/삭제  댓글쓰기 덩치 2014.01.20 10:13 신고

    감사합니다 퍼미션을 빼먹었군요 ㅎㅎ

  3.  댓글주소  수정/삭제  댓글쓰기 JWJ 2014.05.22 17:29

    구글맵 띄우는것 부터 따라 하고있는데요 이부분에서 막혀서요
    NullPointerException 에러가 계속 뜨네요;;

  4.  댓글주소  수정/삭제  댓글쓰기 덩치 2014.05.23 10:40 신고

    정확히 어떤 소스에서 NullPointerException 이 발생하나요? 선언을 하고 초기화를 시키지 않고 사용하거나 빈 값을 호출하게 되면 발생하는 에러인데 정확한 위치를 알면 금방 해결할 수 있는 에러입니다

  5.  댓글주소  수정/삭제  댓글쓰기 GOOOD 2014.05.30 02:21

    위도, 경도를 다르게 줘도 계속 똑같은 위치가 나오는데요? 코드오류가 있어서 계속 처음실행만 나오는건가요?

    •  댓글주소  수정/삭제 덩치 2014.05.30 08:50 신고

      테스트 해 봤지만 정상적으로 작동하는 소스코드입니다.
      혹시 카메라 줌레벨도 변함이 없이 계속 아프리카쪽만 나온다면 기본값으로 나타나고 있는것이고, 그게 아니라면 소스코드쪽에 오류가 없는지 확인 해 보시기 바랍니다

  6.  댓글주소  수정/삭제  댓글쓰기 제발ㅠ 2015.05.06 23:37

    SupportMapFragment cannot be resolved to a type 오류가 남니다...
    v2 지도 띄우기 해서 아프리카쪽 화면 나오는걸 확인 후 소스를 그대로 넣었으나 오류가 납니다... 원인이 무었인지 정확하게 모르겠습니다.

  7.  댓글주소  수정/삭제  댓글쓰기 개초보.. 2015.05.14 21:59

    이코드를 어디에 넣어야하죠 ㅠㅠ

    •  댓글주소  수정/삭제 덩치 2015.05.15 09:02 신고

      어디에 넣느냐는건 용도에 따라 너무 다양하기에,
      기본적으로 onCreate에 주실 수 있으며
      이에 대한 이해가 부족하시다면 책을 한권 보시고 안드로이드에 대한 기본적인 개념을 잡고 시작하시는게 장기적으로 도움되실것같습니다

  8.  댓글주소  수정/삭제  댓글쓰기 고맙습니다 2015.05.27 14:17

    도움이 됬어요

펌 OK (출처 표시), 상업적 이용 NO, 컨텐츠 변경 NO


GoogleMap gmap = ((SupportMapFragment) getSupportFragmentManager()

.findFragmentById(R.id.map)).getMap();


gmap.setOnMapLongClickListener(new OnMapLongClickListener() {

@Override

public void onMapLongClick(LatLng latLng) {

MarkerOptions markerOptions = new MarkerOptions();

markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_3g));

markerOptions.position(latLng); //마커위치설정


gmap.animateCamera(CameraUpdateFactory.newLatLng(latLng));   // 마커생성위치로 이동

gmap.addMarker(markerOptions); //마커 생성

}

});



onCreat에 넣어주심됩니다.


요즘한창 v2공부하고있으니 궁금하신점 질문주시면 성심껏 알려드립니다


댓글을 달아 주세요

  1.  댓글주소  수정/삭제  댓글쓰기 2014.04.30 05:39

    비밀댓글입니다

  2.  댓글주소  수정/삭제  댓글쓰기 덩치 2014.04.30 09:08 신고

    코드상으로는 문제가 안보이는데요 에러가 어디에서 나는지는 본인이 가장 잘 알 수 있습니다.
    실행을 하면 에러가 발생하는지, 소스코드상에서 에러가 나는지도 본인이 아실테고 증상을 정확하게 알려주셔야 도움드릴수 있을듯하네요

    실행 후 에러가 발생하여 어플이 죽는경우 원인을 알아내는 방법은
    http://biig.tistory.com/37 여기 나와 있습니다.

  3.  댓글주소  수정/삭제  댓글쓰기 알이즈웰 2014.05.03 00:43

    gmap = ((SupportMapFragment) getSupportFragmentManager()

    .findFragmentById(R.id.map)).getMap();

    이 코드에서 계속 null값이 발생하는데 왜 그런것인가요ㅠㅠ?

  4.  댓글주소  수정/삭제  댓글쓰기 으으 2014.06.08 15:04

    marker_3g에서 계속 에러 나네요 ㅠㅠ 어떻게 해야되죠

    •  댓글주소  수정/삭제 덩치 2014.06.08 17:26 신고

      marker_3g는 이미지파일 이름입니다. value폴더 > 이미지 폴더에 해당 이름을 가진 마커 이미지를 넣어주시면 됩니다. 디폴트이미지(안드로이드 초록색 로보트 이미지)를 사용하셔도 됩니다.
      구글맵 디폴트이미지도 쓸 수 있는데 지금 당장 생각이 안나네요

    •  댓글주소  수정/삭제 덩치 2014.06.08 17:26 신고

      아마 해당 라인을 적지 않아도 작동은 하리라생각됩니다.

  5.  댓글주소  수정/삭제  댓글쓰기 darkload 2014.06.11 19:34

    마커를 찍는 것 까지 성공 햇는데요 gmap.clear 처럼 지도를 초기화 시키는 거 말고 특정 마커만 지우는 방법 혹시 아세요?

    •  댓글주소  수정/삭제 덩치 2014.06.12 11:17 신고

      InfoWindowAdapter에 대해 검색해보시면 답을 구하실 수 있을것같습니다.
      getInfoWindow를 오버라이드 하시면 marker.remove() 메소드로 선택된 마커를 삭제 할 수 있습니다.

  6.  댓글주소  수정/삭제  댓글쓰기 sera1548 2014.07.09 12:02

    GoogleMap gmap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    이부분에서 계속 에러가 있다는데 왜그런건지알수있을까요?

  7.  댓글주소  수정/삭제  댓글쓰기 초보자 2014.07.17 21:55

    마커 생기게까지 했습니다. 좋은정보 감사합니다..
    제가 초보자라서 그러는데..
    터치했을때 마크나오면 그 마크를 찍으면 타이틀이 나오자나요??
    그 타이틀에 위도경도를 찍고싶은데 어떻게 해야될까요?..
    검색 하니까 GeoPoint 에 관한게 나오던데.. 어떤식으로 해야할지도 모르곘습니다...
    도와주세요.

    •  댓글주소  수정/삭제 덩치 2014.07.18 09:29 신고

      마커 옵션을 이용하여 마커를 심을 때 정보 몇가지를 포함할수 있었던걸로 기억합니다. 마커 옵션에 위치를 입력하시고 인포윈도우를 띄울 때 저장한 옵션을 호출하면 되지 않을까 합니다

  8.  댓글주소  수정/삭제  댓글쓰기 초보자 2014.07.20 00:53

    답변 감사합니다.
    답변주신 내용중에 위치를 입력하시라고 했는데
    지도상에 터치했을때 그부분의 위경도는 알아올수는 없을까요??

  9.  댓글주소  수정/삭제  댓글쓰기 2014.09.29 14:29

    마커를 여러개 생성하여서 마커위에 말풍선을 띄우려고 하는데 마커 1,2,3이 있을때 마커 2번만 수정 및 삭제하고 싶을 시에 이 마커가 2번인지 알수 있는 방법이 있나요?

    •  댓글주소  수정/삭제 덩치 2014.09.30 08:47 신고

      마커를 찍을 때 마커 아이디를설정 해 줄 수 있습니다.
      또는 마커의 위,경도를 이용해 판단하는 방법도 있겠네요

  10.  댓글주소  수정/삭제  댓글쓰기 2014.10.06 18:44

    제가 마커위에 마커 setitle과 setSnippet을 사용하여서 showInfoWindow()로 띄웠는데 마커를 배열로 사용하여서 mk[0], mk[1], mk[2]를 만들었는데 맨 마지막에 생성된 마커위에만 타이틀과 글이 보입니다. 전체 마커의 타이틀과 글을 다 띄울수 있을까요?

    mk[i1].setTitle(times[i1]);
    mk[i1].setSnippet((i1)+"번 : " + memo[i1]);
    for(int k=0;k<=i1;k++)
    mk[k].showInfoWindow();
    i1++;

  11.  댓글주소  수정/삭제  댓글쓰기 2014.10.07 14:08

    그러면 title과 snippet을 여러개 띄울 방법이 있을까요?

    •  댓글주소  수정/삭제 덩치 2014.10.07 16:38 신고

      비트맵 이미지로 띄우는 방식을 이용해야하지 않을까요 ?
      GoogleMap.addCircle 처럼 원을 그려주는것도 있고 이를 응용하여 네모난 이미지를 그려주는 방법도 있지 않을까 생각됩니다.

  12.  댓글주소  수정/삭제  댓글쓰기 2014.10.08 00:06

    비트맵 이미지를 이용하여 마커 대신 텍스트를 띄웠는데 2줄을 적으려고 하는데 어떻게 해야되는지 모르겠네요. 스트링에 \n하면 될줄 알았는데 안되네요

  13.  댓글주소  수정/삭제  댓글쓰기 LCI 2015.01.06 10:46

    저 다른게 아니고 marker 뿐만 아니고 지도상에서 경로를 그리는 소스도 구현해보셨나요 ??? ㅎ

  14.  댓글주소  수정/삭제  댓글쓰기 쎄미 2015.02.11 12:02 신고

    고맙습니다~

  15.  댓글주소  수정/삭제  댓글쓰기 aa 2015.04.22 18:37

    소스 상 오류는 없는데 실행하면 지도만 뜨네요..

  16.  댓글주소  수정/삭제  댓글쓰기 연듀 2015.04.30 08:11

    너무 감사합니다!! 지금 코드짜다가 해결하지 못한 부분을 시원하게 풀어주셨어요 ㅠㅠ 너무 감사해서 댓글남깁니다.

  17.  댓글주소  수정/삭제  댓글쓰기 개초보.. 2015.05.14 21:53

    안녕하세요 완전 개초보 입니다...ㅠㅠ
    지금 구글맵 띄우는것까지 성공했는데요
    mainactivity.java가 아래처럼되어있는데 위의 코드를 어디에 넣어야하나요??
    ㅠㅠㅠㅠㅠㅠ


    package com.example.googlemaptest;

    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.view.Menu;
    import android.view.MenuItem;


    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;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
    return true;
    }
    return super.onOptionsItemSelected(item);
    }
    }

  18.  댓글주소  수정/삭제  댓글쓰기 멍멍 2015.05.16 21:37

    마커 생성하고, 그 위치의 마커를 클릭하면 위도, 경도가 뜨게까지 성공했는데요!
    혹시 이 위도, 경도 좌표를 블루투스를 이용해서 아두이노로 전송하는 게 가능할까요??
    아시는 것 있으시면 조언좀 부탁드리겠습니다...!

  19.  댓글주소  수정/삭제  댓글쓰기 hor9 2016.05.26 20:32

    저가 현재위치 뜨게하면서 맵을 클릭하면 마커가 뜨게하고싶은데 어떻게해야하나여? 소스에러는

    public class MainActivity extends Activity {
    private GoogleMap map;
    static final LatLng SEOUL = new LatLng( 37.56, 126.97);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    map = ((SupportMapFragment) getSupportFragmentManager()
    .findFragmentById(R.id.map)).getMap();

    map.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
    @Override
    public void onMapLongClick(LatLng latLng) {
    MarkerOptions markerOptions = new MarkerOptions();
    markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));
    markerOptions.position(latLng); //마커위치설정


    map.animateCamera(CameraUpdateFactory.newLatLng(latLng)); // 마커생성위치로 이동
    map.addMarker(markerOptions); //마커 생성
    }
    });
    getSupportFragmentManager() <-이게 빨갛고
    Error:(27, 37) error: cannot find symbol method getSupportFragmentManager()/
    이렇게뜨네요 알트엔터해도 아래
    public FragmentManager getSupportFragmentManager() {
    return supportFragmentManager;
    }
    이렇게뜨고 어떻게 넣어야할지도 ㅠㅠ 모르겟어요 ㅠ

  20.  댓글주소  수정/삭제  댓글쓰기 박경묵 2017.06.11 18:54

    저 혹시 아직도 사이트를 운영하고 계시는지는 모르겠지만,
    뭐하나 궁금해서 질문을 남겨봅니다.
    만약에 3개의 위치를 찍고, 그 3개의 위치의 중심점을 polyline으로 해서 3개의 점 중심거리를 만들고 싶은데 애를 먹어서 그런데 혹시 그쪽에 대해서 잘 알고 계신가요?