ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] Fragment에서 Google Map Api 사용하기
    안드로이드 2022. 3. 18. 17:44
    728x90
    반응형

    Android Fragment에서 Google Map API를 사용법을 정리해보았습니다.

    1. 프로젝트 생성

    Google Api Console에서 프로젝트를 생성해 줍니다.

    새 프로젝트

    프로젝트 생성 후 API 라이브러리로 이동하여 API 사용 등록합니다.

    API 라이브러리에서 Maps SDK for Android 선택

     

     

    Maps SDK for Android 사용 클릭

    Maps SDK for Android 텝을 들어가 해당 API 사용을 클릭합니다.

     

    2. API 키 생성 및 설정

    Google API 대시보드 화면에서 사용자 인증 정보 텝으로 이동.

    사용자 인증 정보 텝에서 사용자 인증정보 만들기 클릭.

    사용자 인증 정보 만들기
    API 키 생성
    API 키

    그러면 위와 같이 API 키가 생성됩니다. 그런 다음 우측에 있는 API 키 수정 버튼을 클릭하여 애플리케이션 제한사항을 설정해줍니다.

    Google Map API를 적용할 Android 앱의 패키지 명을 적어주고 SHA-1 키를 입력해주고 저장하면 됩니다.

     

    SHA-1 키 얻는 방법🔍

    아래의 명령어를 cmd창 또는 terminal에 실행하면 SHA-1 키를 얻을 수 있습니다‼️

    • Linux or macOS : 

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

    • Windows:

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

     

    3. Android 프로젝트 설정

    Android 프로젝트의 Manifest.xml에 <application></application> 태그 안에 API 키를 입력해줍니다.

    <application>
    
    	<activity>
        		...
        </activity>
        <meta-data
                android:name="com.google.android.geo.API_KEY"
                android:value="프로젝트 API키"
                />
    </application>

    Tool -> SDK Manager -> SDK Tools 로 들어가서 Google Play Servces를 체크하고 설치한다.

    앱 수준의 build.gradle 파일에서 의존성을 추가해주고 Sync Now를 클릭합니다.

    implementation 'com.google.android.gms:play-services-maps:18.0.2'

     

    fragment_map.xml 

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <com.google.android.gms.maps.MapView
            android:id="@+id/mapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
    
    </androidx.constraintlayout.widget.ConstraintLayout>

    MapFragment.kt

    class MapFragment : Fragment(),OnMapReadyCallback {
    
        private lateinit var mapView : MapView
    
        override fun onCreateView(
            inflater: LayoutInflater, container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {
            val rootView = inflater.inflate(R.layout.fragment_map,container,false)
            mapView = rootView.findViewById(R.id.mapFragment) as MapView
            mapView.onCreate(savedInstanceState)
            mapView.getMapAsync(this)
            return rootView
        }
    
        //지도 객체를 사용할 수 있을 때 자동으로 호출되는 함수
        override fun onMapReady(map: GoogleMap) {
            val point = LatLng(37.514655, 126.979974)
            map.addMarker(MarkerOptions().position(point).titile("현위치")
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(point,12f))
        }
    
        override fun onStart() {
            super.onStart()
            mapView.onStart()
        }
    
        override fun onStop() {
            super.onStop()
            mapView.onStop()
        }
    
        override fun onResume() {
            super.onResume()
            mapView.onResume()
        }
    
        override fun onPause() {
            super.onPause()
            mapView.onPause()
        }
    
        override fun onLowMemory() {
            super.onLowMemory()
            mapView.onLowMemory()
        }
    
        override fun onDestroy() {
            super.onDestroy()
            mapView.onDestroy()
        }
    }
    반응형

    4. 실행 화면🔥

    출처
    https://furang-note.tistory.com/16
    728x90
    반응형

    '안드로이드' 카테고리의 다른 글

    [Android] 아키텍처 패턴(MVC,MVP,MVVM)에 대하여  (0) 2022.03.20
    [Android] ConstraintLayout  (0) 2022.03.19
    [Android] SharedPreferences  (0) 2022.03.17
    [Android] Room 사용법  (0) 2022.03.16
    [Android] ItemTouchHelper란  (0) 2022.03.11

    댓글

Designed by ZibroTistory.