[안드로이드 스튜디오] google Map 이용하기

2021. 1. 27. 18:02카테고리 없음

 

 

 

 

 

 

1. https://console.developers.google.com/apis/dashboard 에 접속 -> 프로젝트 만들기 -> 만들기

 

 

2.  Maps SDK for Android 검색 -> 사용

maps sdk for android 검색

 

 

사용 클릭

 

3. API 활성화 되었다면 탐색 메뉴 -> API 및 서비스 -> 사용자 인증정보

탐색 메뉴 -> API 및 서비스 -> 사용자 인증정보 클릭

 

4. 사용자 인증 정보 만들기 - API 키

사용자 인증 정보 만들기 -> API 키 클릭

 

생성 중 ...

 

 

5. API 키 생성됨 토스트 창이 뜬다. -> 키 제한 

API 키 생성됨 -> 키 제한

 

6. 애플리케이션 제한사항에 Android 앱 ( 안드로이드로 쓸거니까... ), 항목 추가

 

애플리케이션 제한사항 - android 앱, 항목 추가 클릭

 

7. 패키지 이름과 SHA-1 인증서 디지털 지문이 필요하다.

패키지 이름과 SHA1 인증서 필요

8. 우선 SHA-1.. 부터 얻어보자. cmd 창을 열고 아래 명령어 입력

window + R  -> cmd 창 열기

 

windows일 때

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

 

우분투 리눅스일 때

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

keytool 오류가 날 수도 있다.

안드로이드 스튜디오에서 앱을 빌드한 적이 없어서 나는 오류라고 한다.

새 프로젝트를 생성해서 일단 빌드하면 keystore이 생성되니 빌드 후 다시 명령어를 입력해보자.

 

 

9. 인증서 지문 SHA1 복사

SHA1 복사

 

10. 이미 만든 프로젝트가 있다면 패키지 복사. 없다면 새 프로젝트 생성 후 패키지 복사

패키지 복사

 

 

11. 7번 항목에 패키지 명과 SHA1 입력

 

 

 

12. API 제한사항에 Maps SDK for Android 체크해서 키 제한을 두자.

키 제한 -> 아래 콤보박스 체크 -> 저장

 

13. key 복사한뒤 android 프로젝트, AndroidManifest.xml의 meta-data에 추가

키 복사해두기

AndroidManifest.xml의 meta-data에 추가

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

    <application
       ...
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="복사한 키 번호">
    </application>
    ...

 

 

 

등록 받은 키 확인이 필요하다면

구글 개발자 콘솔 사이트 https://console.developers.google.com/apis/dashboard 에서 해당 프로젝트 선택 -> 탐색 메뉴 -> 사용자 인증 번호   에서 키 번호 확인이 가능하다

 

 

14. android Studio로 들어간 뒤 Tools -> SDK Manager -> SDK Tools에서 Google Play services 설치

 

 

Tools -> SDK Manager

 

Android SDK -> SDK Tools -> Google Play services 체크. Apply ( 적용 ) 후 OK

 

 

 

15. build.gradle ( Module: app )에 의존성 2가지 추가

build.gradle(Module: app) -> 의존성 추가

dependencies {
	...
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    implementation 'com.google.android.gms:play-services-location:17.1.0'
}

 

노란 블럭에 마우스를 가져다대면 최신버전을 알려준다. 최신버전으로 변경 (안해도 됨), sync now 클릭

 

 

 

16. activity_main.xml ( google Map을 넣을 layout ) 에 fragment 추가

 

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/ConstraintLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    ...
    
    <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" />
    
</androidx.constraintlayout.widget.ConstraintLayout>

 

17. MainActivity.java에 implements OnMapReadyCallback 추가 + 오버라이딩

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

  private GoogleMap mMap;
  ...

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

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

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

      LatLng SEOUL = new LatLng(37.56, 126.97);

      MarkerOptions markerOptions = new MarkerOptions();
      markerOptions.position(SEOUL);
      markerOptions.title("서울");
      markerOptions.snippet("한국의 수도");
      mMap.addMarker(markerOptions);

      // 기존에 사용하던 다음 2줄은 문제가 있습니다. 

      // CameraUpdateFactory.zoomTo가 오동작하네요. 
      //mMap.moveCamera(CameraUpdateFactory.newLatLng(SEOUL));
      //mMap.animateCamera(CameraUpdateFactory.zoomTo(10));
      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(SEOUL, 10));
  }
}

 

 


참고  :  webnautes.tistory.com/647