2021. 1. 27. 18:02ㆍ카테고리 없음
1. https://console.developers.google.com/apis/dashboard 에 접속 -> 프로젝트 만들기 -> 만들기
2. Maps SDK for Android 검색 -> 사용
3. API 활성화 되었다면 탐색 메뉴 -> API 및 서비스 -> 사용자 인증정보
4. 사용자 인증 정보 만들기 - API 키
생성 중 ...
5. API 키 생성됨 토스트 창이 뜬다. -> 키 제한
6. 애플리케이션 제한사항에 Android 앱 ( 안드로이드로 쓸거니까... ), 항목 추가
7. 패키지 이름과 SHA-1 인증서 디지털 지문이 필요하다.
8. 우선 SHA-1.. 부터 얻어보자. 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 복사
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 설치
15. build.gradle ( Module: app )에 의존성 2가지 추가
dependencies {
...
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.1.0'
}
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));
}
}