달력

12

« 2019/12 »

  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

Google Map API를 이용해 지도 표시 하기

   

   

강의 내용

activity_main.xml

RelativeLayout 변경

<fragment>태그 추가

  

MainActivity.java

지도에 강남역에 표시하기

//기본 마커표시

//화면에 지정한 위도 경도 표시

//맵에 원하는 위치 표시

확인

   

내 위치 아이콘 클릭시 현재 위치로 이동

//나의 현재 위치 읽어오기

//나의 현재 위치로 이동할 수 있는 아이콘 표시

확인

   

//마커 표시

-//마커 모양 변경

   

마커가 클릭되면 토스트 메시지 오픈

//맵에 이벤트 연결

//마커 클릭시 이벤트 핸들러-onMarkerClick

//말풍선 클릭시 이벤트 핸들러-onInfoWindowClick

  

AndroidManifest.xml

android:minSdkVersion="11"

권한 추가

글 API Key 추가

\res\drawable\

마커 이미지 추가

marker_flag.png

marker.png

pin.png

   

   

<fragment>태그 추가

XML레이아웃에 지도를 보여주기 위한 프래그먼트 추가

프래그먼트는 <fragment>태그를 사용해서 뷰처럼 화면의 특정 영역을 할당받게 됩니다.

   

id

자바코드에서 사용하기 위해 맵뷰에 주어진 ID값입니다.

class

"com.google.android.gms.maps.MapFragment"

속성으로 지정된 클래스가 화면영역에 보여지게 되며

예제에서는 MapFragment클래스가 사용되고 있습니다.

   

   

AndroidManifest.xml 추가된 항목

   

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="kr.android.map"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="11"

        android:targetSdkVersion="19" />

<!--OpenGL 2.0 이상을 지원하는 단말기에서 실행되도록 하기-->        

<uses-feature android:required="true" android:glEsVersion="0x00020000"/>        

<!--권한 설정-->

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

<!--Cell ID, WiFi 관련 Permission-->

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

<!--GPS 관련 Permission -->

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

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

<!--네트워크 상태 정보 관련 Permission -->

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

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

     

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

          

        <!-- 구글 API Key 추가 -->

        <meta-data

                android:value="AIzaSyDPPJAMjDYQkBDxp2dOS3NPq5vjFKY6_QQ"

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

        <meta-data

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

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

          

        <activity

            android:name="kr.android.map.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>

    </application>

</manifest>

   

출처: <https://github.com/10zeroone/study_Android/blob/master/72MapDemo/AndroidManifest.xml>

  

   

   

 

   

출력 결과

에뮬레이터 실행시 구동되지 않음

   

map.animateCamera()이용해서 해당 위치를 중심으로 지도를 보여주게 됩니다.

   

디바이스에서 실행한 화면

   

   

   

   

   

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

https://www.google.com/maps/preview

http://map.google.com

   

   

google.com홈페이지에서 지도 아이콘 클릭하거나

map.google.com을 입력하여 구글 맵에 접속

   

경도와 위도를 알고 싶은 위치를 마우스 클릭하여 마커 생성시킵니다.

   

위치 마커에서 마우스 우클릭 >

이곳이 궁금한가요? 클릭

   

상단 왼쪽에 위도와 경도가 표시됩니다.

Posted by codedragon codedragon

댓글을 달아 주세요

   

Google Map V2 메인 페이지 

https://developers.google.com/maps/documentation/android/

   

   

Google Map API 사용하기 위한 절차

  • 구글 지도 사용을 위한 API키 생성
    • 인증서 지문 생성
    • Google APIs Console 프로젝트 생성
    • Google Maps Android API 항목 활성화
    • 새로운 키 생성 및 인증서 지문 등록
  • Google Play Services SDK 다운로드
  • 구글맵 라이브러리 프로젝트 가져오기
  • 프로젝트 생성
    • 구글맵 라이브러리를 지정 (project.properties )
    • 안드로이드 마니페이스 파일 설정 (AndroidManifest.xml)
    • activity_main.xml 작업
    • MainActivity 작업

   

   

구글 지도 사용을 위한 API키 생성

   

인증서 지문 생성

C:\Users\[로그인아이디]\.android

디렉터리의 debug.keystore을 이용해 Fingerprint(인증서 지문)을 생성하겠습니다.

   

   

시작>실행에 cmd를 입력하고 cmd 창을 연 후 아래와 같이 .android 디렉토리로 이동

cd .android

   

   

dir

debug.keystore파일 있는지 확인합니다.

   

   

인증서 지문 생성을 위한 명령어를 입력후 엔터를 클릭합니다.

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

 

   

   

C:\Users\yuriyuri\.android>keytool -v -list -alias androiddebugkey -keystore d

ebug.keystore -storepass android -keypass android

별칭 이름: androiddebugkey

생성 날짜: 2014. 5. 6

항목 유형: PrivateKeyEntry

인증서 체인 길이: 1

인증서[1]:

소유자: CN=Android Debug, O=Android, C=US

발행자: CN=Android Debug, O=Android, C=US

일련 번호: 4cabc2ae

적합한 시작 날짜: Tue May 06 12:37:32 KST 2014, 종료 날짜: Thu Apr 28 12:37:32 K

ST 2044

인증서 지문:

MD5: FB:34:82:DE:26:31:32:4D:33:81:49:02:99:75:CC:69

SHA1: 22:8A:96:66:24:6F:34:83:CA:F9:77:BC:64:77:7E:B6:BA:8B:AE:0D

SHA256: BF:2E:BE:73:B3:78:7D:D7:F3:FB:3E:DC:47:F9:0C:67:C3:D4:E4:74:66:

28:2D:21:6F:F8:8E:3A:A8:65:FF:20

서명 알고리즘 이름: SHA256withRSA

버전: 3

   

확장:

   

#1: ObjectId: 2.5.29.14 Criticality=false

SubjectKeyIdentifier [

KeyIdentifier [

0000: 34 1A 84 C0 2F EA BC 5B 9E F0 87 1F 77 24 B6 19 4.../..[....w$..

0010: 17 AD 83 FE ....

]

]

   

   

C:\Users\yuriyuri\.android>

   

   

   

   

Google APIs Console 프로젝트 생성

구글 지도 API 키 생성을 위해 Google APIs Console로 이동

https://cloud.google.com/console/project

   

   

Create Project 버튼 클릭하여 프로젝트 생성

   

   

프로젝트 생성 완료!

생성한 프로젝트 이름을 클릭합니다.

   

   

Google Maps Android API 항목 활성화

Enable an API

   

Google Maps Android API v2을 찾습니다.

   

Google Maps Android API v2 오른쪽의 OFF버튼을 클릭해 ON으로 변경합니다.

   

상단을 보면 ON한 항목들을 모두 확인할 수 있습니다.

   

   

새로운 키 생성 및 인증서 지문 등록

APIs & auth-Credentials 클릭 >

Public API access영역의 Create new Key클릭

   

Android Key클릭

   

미리 생성해 둔 SHA1지문 등록 하겠습니다.

등록형식에 맞게 입력한 후 Create클릭

   

등록 형식 : SHA1지문;package 이름

22:8A:96:66:24:6F:34:83:CA:F9:77:BC:64:77:7E:B6:BA:8B:AE:0D;kr.android.map

   

등록 완료!

   

   

Google Play Services SDK 다운로드

   

Android SDK Manager를 실행한 후 Extra 항목에서 Google Play Services 선택해서 설치

   

   

   

   

   

프로젝트 생성 및 구글맵 라이브러리 프로젝트 가져오기

File > New > Other... 선택

   

Android-Android Project from Existing Code 선택 >

Next

   

Browse...

   

C:\javanAndroid\android-sdk_r22.6.2-windows\android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib

구글맵 라이브러리 프로젝트가 있는 폴더 선택 >

확인

   

libproject\google-play-service를 제외하고 체크를 모두 해제함

Copy projects into workspace 체크

Finish

   

   

   

구글맵 라이브러리 경로

C:\javanAndroid\android-sdk_r22.6.2-windows\android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib

   

   

프로젝트 생성

   

   

라이브러리 등록하기 (google-play-services_lib)

프로젝트 선택 >마우스 우클릭 > Properties

   

Add

   

선택 > OK

   

OK

   

라이브러리 등록 완료!

   

구글맵 라이브러리를 지정 확인

project.properties 파일을 오픈합니다.

   

android.library.reference.1=../appcompat_v7 밑에 아래와 같이 구글맵 라이브러리를 지정되었는지 확인합니다.

target=android-19

android.library.reference.1=../appcompat_v7

android.library.reference.2=../google-play-services_lib

   

   

   

안드로이드 마니페이스 파일 설정

AndroidManifest.xml

<!--OpenGL 2.0 이상을 지원하는 단말기에서 실행되도록 하기-->

<uses-feature android:required="true" android:glEsVersion="0x00020000"/>

   

<!--권한 설정-->

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

<!--Cell ID, WiFi 관련 Permission-->

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

<!--GPS 관련 Permission -->

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

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

<!--네트워크 상태 정보 관련 Permission -->

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

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

   

application 태그에 구글API Key 지정 하기

AndroidManifest.xml

<!-- 구글 API Key 추가 -->

<meta-data

android:value="AIzaSyDPPJAMjDYQkBDxp2dOS3NPq5vjFKY6_QQ"

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

<meta-data

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

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

 

android:value=항목 값에는 API Key값을 복사하여 붙여 넣습니다.

   

   

   

activity_main.xml 작업

 

<fragment

android:id="@+id/map"

class="com.google.android.gms.maps.MapFragment"

android:layout_width="match_parent"

android:layout_height="match_parent"

/>

 

   

   

MainActivity 작업

 

public class MainActivity extends Activity{

   

private GoogleMap map;

private static final LatLng MAP_ADDRESS = new LatLng(37.498321,127.027702);

   

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

   

if(map == null){

map = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();

if(map != null){

   

map.addMarker(new MarkerOptions()

.position(MAP_ADDRESS)

.title("강남역")

.snippet("나 여기 있어요~~~") .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));

   

//화면에 지정한 위도 경도 표시

CameraPosition cp = new CameraPosition.Builder().target(MAP_ADDRESS).zoom(17).build(); map.animateCamera(CameraUpdateFactory.newCameraPosition(cp));

}

}

}

}

 

Posted by codedragon codedragon

댓글을 달아 주세요

   

지도(Map)

기본 지도 이미지 위에 표시되는 모든 것들은 각각 레이어로 분리되어 보여지고 구글맵에서는 이런 레이어들을 오버레이라고 부릅니다.

   

   

Map 용어

레이어(Layer)

유사항 속성을 가진 객체들을 넣어둔 층

오버레이(Overlay)

레이어의 집합

마커(Marker)

아이콘을 이용해 원하는 위치를 포인트로 쉽게 표시하기 위해 사용

   

   

Map 메소드

getMaxZoomLevel()

최대로 설정할 수 있는 축적값을 확인할수 있습니다.

이치에 따라 다르지만 일반적으로 19~21사이가 최대 축척값으로 나타납니다.

map.animateCamera()

animateCamera() 이용해서 해당 위치를 중심으로 지도를 보여주게 됩니다. 축척 값이 클수록 가까이서 본 것처럼 확대되어 보여지게 됩니다.

17~18의 축척값은 도시 건물 몇 개를 한눈에 볼 수 있을 정도로 확대되어 보여집니다.

  

  

위도와 경도 값은 LatLng객체를 이용해서 만들 수 있으며 지도 위에 표시되는 새로운 포인트 생성할 수 있습니다.

Posted by codedragon codedragon

댓글을 달아 주세요