카테고리 없음

Android - 구글맵 사용

하니__ 2024. 6. 18. 16:59

 

 

https://developers.google.com/maps/documentation/android-sdk/config

 

Set up an Android Studio project  |  Maps SDK for Android  |  Google for Developers

New map styling is coming soon to Google Maps Platform. This update to map styling includes a new default color palette and improvements to map experiences and usability. All map styles will be automatically updated in March 2025. For more information on a

developers.google.com

 

 

자세한 사용방법은 링크를 참고

 

 

 

우선은 이곳으로 들어가

 

좌측의 내용이 있는지 확인후 없으면 추가한다

작성자의 경우는 우측처럼 있어서 따로 추가하진 않았음

 

 

한번 더 좌측의 내용이 있는지 확인후 없으면 추가

이번에도 우측처럼 있어서 추가하지않음

 

다음은 아래의 파일로 들어가

implementation("com.google.android.gms:play-services-maps:18.2.0")

설치부터 해준뒤에

 

 

 

 

 

좌측의 경우와 맞는지 확인한다

컴파일sdk가 34보다 높은지

최소sdk가 19보다 높은지

 

작성자의 경우는 19보다 높아서 통과

 

 

이번에도 좌측이 있는지 체크 후 없으면 추가

없었기에 해당문구 추가

 

없다면 아래 문구 복사

buildFeatures {
    buildConfig = true

}

 

 

 

 

이번에도 좌측의 문구가 없다면 우측처럼 추가

 

아래문구 복사

id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")

 

 

 

이번엔 아래의 파일로 이동

 

 

좌측의 텍스트가 없다면 추가

 

아래 텍스트 복사

buildscript {
    dependencies {
        classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
    }
}

 

 

 

다음은 secrets.properties 파일에 텍스트를 추가해야하는데

존재하지 않고,

존재하지 않는다면 local.properties 파일과 같은 폴더에 추가해 주라고 한다

 

우선 안드로이드 폴더형식으로 보이던것을 프로젝트파일형식으로 읽기로 하고

새 파일을 만들자

 

그러면 로컬.프로퍼티 파일과 동일 폴더에 새 파일을 생성할 수 있다

MAPS_API_KEY=YOUR_API_KEY

 

라고 적어주면 되는데

YOUR_API_KEY는 

 

아래의 링크를 들어가서 얻도록 하자

 

 

 

Google 클라우드 플랫폼

로그인 Google 클라우드 플랫폼으로 이동

accounts.google.com

 

우선 사용전 이부분의 오른쪽 버튼을 클릭하여

새 프로젝트를 만들도록 하자

작성자는 이 기능만을 위한 API키를 만들기위함이고

기존에 프로젝트가 있고 API키를 여러곳에서

사용하려한다면 굳이 새로 만들지 않아도 상관없다

 

그런 다음

 

중앙에 보이는 이 버튼을 클릭

좌측의

API 및 서비스를 눌러

라이브러리에 들어간뒤에

 

maps sdk for android 선택

 

그리고 사용을 누르자

(작성자는 이미 사용을 눌렀더니 사용버튼이 사라졌다)

 

 

그 뒤  3선버튼 클릭하여 API및서비스의

라이브러리 클릭

그리고 API키를 들어가

 

 

어디서 훔쳐가도 이거말고 사용못하도록 키를 제한하도록 하자

 

 

구리고 우측의 이 API키를 위의 API키 넣는곳에 넣도록 하자

 

 

 

자, 다시 이번엔 

 

 local.defaults.properties 파일을 만들고

 

아래의 텍스트를 넣도록 하자

 

MAPS_API_KEY=DEFAULT_API_KEY

 

 

 

이번엔 매니페스트로 들어가서

 

이 위치에

아래 텍스트를 넣고

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="${MAPS_API_KEY}" />

 

추가로 이 텍스트도 넣도록 하자

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

 

 

그리고 아래의 문구를 추가로 작성하여 권한을 주도록 하자

해당 권한은 정확한 위치사용권한과

대략적인 위치사용권한

그리고 저장공간의 권한

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

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

 

 

 

 

다시 이 파일로 들어가서

 

이 위치에 아래 텍스트를 넣도록 하자

 

secrets {
    // Optionally specify a different file name containing your secrets.
    // The plugin defaults to "local.properties"
    propertiesFileName = "secrets.properties"

    // A properties file containing default secret values. This file can be
    // checked in version control.
    defaultPropertiesFileName = "local.defaults.properties"

    // Configure which keys should be ignored by the plugin by providing regular expressions.
    // "sdk.dir" is ignored by default.
    ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore"
    ignoreList.add("sdk.*")       // Ignore all keys matching the regexp "sdk.*"
}
        

 

 

 

사용 예

 

 

이제 사용을 해볼텐데 사용할 xml로 들어가

<?xml version="1.0" encoding="utf-8"?>
<fragment 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/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:name="com.google.android.gms.maps.SupportMapFragment">

</fragment>

문구를 위와같이 수정한다

 

수정한 부분은 id의 map부분

그리고 추가된 부분은

android:name="com.google.android.gms.maps.SupportMapFragment"

 

그리고 사용할 java 파일에서

 

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

mapFragment.getMapAsync(new OnMapReadyCallback() {
    @Override
    public void onMapReady(@NonNull GoogleMap googleMap) {

    }
});

라고 입력 후

실행해보면

 

아래와같이 구글맵을 이용이 가능하다