Android

안드로이드 스튜디오에서 구글 맵 사용하기

567Rabbit 2024. 6. 18. 17:40

구글맵 사용하기

https://developers.google.com/maps/documentation/places/web-service/search?hl=ko#nearby-search-and-text-search-responses

 

장소 검색  |  Places API  |  Google for Developers

이제 Places API (신규)가 출시되면서 차세대 Places API를 사용할 수 있습니다. 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 장소 검색 컬렉션을 사용해 정리하기 내 환경설정을

developers.google.com

 

- 이곳에 라이브러리 설치와 환경설정에 대한 정보가 나와있다.

 

 


API 키 값 생성하고 안드로이드 스튜디오에 작성하기

 

https://console.cloud.google.com/welcome/new?project=igneous-axiom-426807-f3

 

Google 클라우드 플랫폼

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

accounts.google.com

 

 

사용 클릭하기

 

 

 

 

사용자 API 키 생성 후, API 키를 클릭해서 들어가서

 

 

 

 

Maps SDK for Android API를 선택하여 저장 누르고,

 

 

 

 

 

키 표시 눌러서 키 값 저장해두기

 

 

 

 

 

Android -> Project Files로 이동하기

 

 

 

 

 

 

local.defaults.properties 와 secrets.properties 파일 만들고, local.defaults.properties를 아래와 같이 작성한다.

 

 

 

API 키 복사한 것 secrets.properties에 작성하기

 

 

 

 

 

build.gradle (:app)

 

 

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

 

 

 

 

 

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.*"
}

 

 

 

 

 

    buildFeatures {
        buildConfig = true
    }
implementation("com.google.android.gms:play-services-maps:18.2.0")

 

 

 

 

Sync Now 누르기

 

 

 

 

 

Manifest 설정하기

 

 

 

<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"/>

 

<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"/>

 

 

 

 

build.gradle (Project)

 

 

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

 

 

 

 

 

 

activity_main 작성하기

 

<?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>

 

 

 

 

 

MainActivity 작성하기

 

package com.~.map;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;


public class MainActivity extends AppCompatActivity {

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

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

        // 지도 준비되면 해달라는 함수
        mapFragment.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(@NonNull GoogleMap googleMap) {
                // 맵이 준비되면 내 위치를 중심으로 지도가 나오게 해라 라는 코드 작성

                // 1. 특정 위도, 경도 값으로 지도의 위치를 적용시키는 코드
                LatLng myLocation = new LatLng(37.5428, 126.6772); //표현하고자 하는 위치의 위도 경도 작성
                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 17));

                // 2. 마커를 만들어서, 지도에 표시하는 코드
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(myLocation).title("연희직업전문학교");

                // 3. 마커를 클릭하면, 동작하는 코드 작성
                //  중요! 위에서 MarkerOptions를 만들 때, 태그를 달아줘서 구분해 줘야 한다.
                googleMap.addMarker(markerOptions).setTag(0);
                googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                    @Override
                    public boolean onMarkerClick(@NonNull Marker marker) {

                        int tag = (int) marker.getTag();

                        Toast.makeText(MainActivity.this,
                                "제가 누른 마커의 태그는 : " + tag + "\n 타이틀은 : " + marker.getTitle(),
                                Toast.LENGTH_SHORT).show();

                        return false;
                    }
                });

                // 4. 지도의 타입을 설정하는 코드
                // googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

            }
        });

    }
}