[Android] 구글 맵 사용하기 - Google Map

원준·2023년 7월 27일

Android Studio

목록 보기
40/40

설정

1. 모듈 수준 builde.gradle 내용 추가

dependencies {
    implementation 'com.google.android.gms:play-services-maps:18.1.0'
    // ...
} 

2. 프로젝트 수준 build.gradle 코드 추가

plugins {
    // ...
    id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
}

3. 모듈 수준 build.gradle 코드 추가

plugins {
    // ...
    id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
}

4. local.properties에 API키 추가

MAPS_API_KEY=YOUR_API_KEY

5. Manifest에 API_KEY 추가

<application
    //...
    >

    <!--  시크릿 키 설정  -->
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}"/>

6. Manifest에 GooglePlay 서비스 버전 추가

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

7. Manifest에 위치 정보 액세스 권한

<!--    사용차 위치 권한 설정-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

8. Manifest에 외부 저장소 권한

<!--    특정 버전 이하 외부 저장소 권한 설정-->
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

사용하자!

1. 사용할 Layout의 공간을 설정해야한다.

  • 이는 하나의 예시이다.
  • fragment의 형식으로 변경하며, name과 id를 설정해줘야 한다.
<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"

    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/map">

</fragment>

2. 작동 코드!

@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) {
            // 맵이 화면에 나타난다.
                // 로직 작성

            // 내가 정한 위치로 지도 표시
            LatLng myLocation = new LatLng(37.5429, 126.6772);

            // 지도의 중심을, 내가 정한 위치로 셋팅 하면서 확대/축소 하기
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 17));
            
            // 마커를 만들어서, 지도에 표시
            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(myLocation).title("연희맨");
            googleMap.addMarker(markerOptions).setTag(0); // id대신 tag를 이용해 작동 id를 넣을 수 있다.

            // 한줄로 마커 만들기
            googleMap.addMarker(
                    new MarkerOptions()
                            .position(new LatLng(37.5438, 126.6772))
                            .title("마커마커맨2")
            );

            MarkerOptions markerOptions1 = new MarkerOptions();
            markerOptions1.position(new LatLng(37.5428, 126.6762)).title("마커마커맨3");
            googleMap.addMarker(markerOptions1);

            // 마커를 클릭 했을때 처리하는 코드 작성
            googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                @Override
                public boolean onMarkerClick(@NonNull Marker marker) {
                    // 마커 클릭했을때의 로직 작성.
                    Log.i("GOOGLE MAP", "id : " + marker.getId());
                    Log.i("GOOGLE MAP", "title : " + marker.getTitle());
                    Log.i("GOOGLE MAP", "tag : " + marker.getTag());

                    // tag로 나뉘어서 작성 가능
                    int tag = (int) marker.getTag();
                    if(tag == 0){

                    }else {

                    }

                    return false;
                }
            });

            // 지도 타입 설정가능
            googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        }
    });

}
profile
공부해보자

0개의 댓글