728x90

먼저 구글 맵을 사용하기 전에 구글 API 사이트로 들어가 줍니다.

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

좌측 상단에 있는 프로젝트 선택을 눌러줍니다.

프로젝트 선택 창이 뜨면 새 프로젝트를 눌러줍니다.

프로젝트 이름을 누른 후 만들기를 눌러줍니다.

다시 메인화면에서 라이브러리를 눌러줍니다.

지도에서 Maps SDK for Android를 눌러줍니다.

아래와 같이 창이 뜨면 사용 설정을 눌러줍니다.

다음으로 사용자 인증 정보로 들어갑니다.

API 및 서비스의 사용자 인증 정보라고 쓰여있는 링크를 눌러줍니다.

상단의 사용자 인증 정보 만들기 > API 키를 선택합니다.

키가 성공적으로 만들어지면 오른쪽 아래의 키 제한을 눌러줍니다.

애플리케이션 제한사항을 Android 앱으로 선택하고 사용량 제한의 항목 추가를 눌러줍니다.

그러면 아래와 같이 패키지 이름과 인증서 디지털 지문을 입력하는 창이 나옵니다.

패키지 이름은 만들어놓은 프로젝트의 패키지명을 넣으면 되고 인증서 디지털 지문을 얻는 방법은 다음과 같습니다.

 

윈도우 + R키를 눌러 실행 창에서 cmd를 입력 후 확인을 눌러줍니다.

cmd 창에 아래의 명령어를 입력 후 엔터를 누르게 되면 다음과 같이 출력이 되는데 이때의 SHA1 옆의 16진수로 나열된 코드를 복사합니다.

"C:\Program Files\Android\Android Studio\jre\bin\keytool" -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

코드와 인증서 디지털 지문을 넣고 완료를 눌러주고 저장을 눌러주면 됩니다.

 이때 생성된 키를 복사하고 안드로이드 스튜디오로 넘어옵니다.

 

복사한 키를 AndroidManifest.xml 파일에 아래처럼 붙여 넣어 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.coronaclinicmap">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="복사한 API 키">
        </meta-data>
        <activity android:name=".LoadingActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

다음으로 Tool > SDK Manager으로 들어와 아래처럼 SDK Tools에서 Google Play services를 활성화시켜준 후 Apply를 눌러줍니다.

설치가 완료되었다면 좌측의 Gradle Scripts의 build.gradle 파일에서 코드를 추가해줍니다.

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    implementation 'com.google.android.gms:play-services-location:17.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

현재 release note에 따르면 com.google.android.gms:play-services-maps와 location의 최신버전은 17.0.0 입니다.

 

Release Notes  |  Android용 Google API  |  Google Developers

March 03, 2020 The latest update to Firebase includes changes to: Firebase Cloud Messaging and Firebase Instance IDs SDKs Firebase Bill of Materials (BoM) For more information, see the Firebase Android SDK Release Notes. Google Play services SMS Verificati

developers.google.com

아래처럼 에러가 발생한다면 상단의 Refactor > Migrate to AndroidX... 를 눌러주면 됩니다.

마지막으로 activity_main.xml 파일과 MainActivity에 코드를 넣으면 됩니다.

 

activity_main.xml에 아래의 코드를 넣어줍니다.

<fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/map"
        tools:context=".MapsActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />

MainActivity에는 아래의 코드를 넣어줍니다.

package com.example.coronaclinicmap;

import androidx.appcompat.app.AppCompatActivity;

import android.icu.lang.UScript;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
    private GoogleMap mgoogleMap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SupportMapFragment supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        supportMapFragment.getMapAsync(this);
    }


    @Override
    public void onMapReady(final GoogleMap googleMap) {
        mgoogleMap = googleMap;

        final LatLng Pocheon = new LatLng(37.894936, 127.200344);   // 마커 추가

        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(Pocheon);
        markerOptions.title("포천시청");                                    // 마커 옵션 추가
        googleMap.addMarker(markerOptions);                                 // 마커 등록

        googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
            @Override
            public void onMapLoaded() {
                mgoogleMap.moveCamera(CameraUpdateFactory.newLatLng(Pocheon));
                mgoogleMap.animateCamera(CameraUpdateFactory.zoomTo(10));
            }
        }); // 구글맵 로딩이 완료되면 카메라 위치 조정
    }
}

 

728x90

+ Recent posts