ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 안드로이드 스튜디오 구글맵api 사용방법
    program_language 및 궁금한것/Android Studio 2019. 3. 21. 15:07

    안드로이드 스튜디오(Android Studio)에서 구글맵api 사용방법


     나중에 보려고 정리를 해놨다. 

    다른 사람들에게도 도움이 되길 바란다.


    구글 로그인 후 구글api 사이트로 접속한다.

    아래 사진 순서대로 새 프로젝트를 생성한다.



    안드로이드 스튜디오에서 새 프로젝트를 생성한다.

    package name은 임의대로 바꿔준다. 연습용은 안바꿔도 됨


    아래 설정과 같이 따라한다.


    내가 만든 이름의 build.gradle을 아래 사진과 같이 바꿔준다.

    dependencies도 잘 추가 해준다.

    아래 노란박스 드래그 해서 붙여 넣어도 됨

    dependencies {

        implementation fileTree(include: ['*.jar'], dir: 'libs')

        implementation 'com.android.support:appcompat-v7:26.1.0'

        implementation 'com.android.support.constraint:constraint-layout:1.1.3'

        testImplementation 'junit:junit:4.12'

        androidTestImplementation 'com.android.support.test:runner:1.0.2'

        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

        implementation 'com.google.android.gms:play-services:12.0.1'

        compile 'com.android.support:multidex:1.0.3'

    }


    아래 사진을 보고 library를 추가 해 준다.


    xml을 아래와 같이 그린다.


    MainActivity.java에서 extands와 implements를 해준다.



     좀전의 api페이지로 들어가 사용자 인증정보- api키를 복사한다.


    아래 사진과 같이 따라서 파일을 생성한다.

    마지막 회색부분엔 좀전에 복사해 놓은 키를 붙여 넣는다.


    Manifest에서 빨간 박스 부분을 추가한다.


    깃 주소

    위의 깃 주소에서 myapplication을 다운 받아 안드로이드에 코드를 넣는다.

    혹은 코드를 복사해서 MainActivity에 붙여넣기를 한다.


    package com.myway.korea.googlemap;



    import android.Manifest;

    import android.annotation.TargetApi;

    import android.app.FragmentManager;

    import android.content.pm.PackageManager;

    import android.hardware.Camera;

    import android.nfc.Tag;

    import android.os.Build;

    import android.support.v7.app.AppCompatActivity;

    import android.os.Bundle;

    import android.util.Log;

    import android.widget.Toast;


    import com.google.android.gms.maps.CameraUpdate;

    import com.google.android.gms.maps.CameraUpdateFactory;

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

    import com.google.android.gms.maps.MapFragment;

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

    import com.google.android.gms.maps.model.LatLng;

    import com.google.android.gms.maps.model.MarkerOptions;


    public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {


        @Override

        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);


            FragmentManager fragmentManager = getFragmentManager();

            MapFragment mapFragment = (MapFragment) fragmentManager.findFragmentById(R.id.map);

            // 맵이 실행되면 onMapReady 실행

            mapFragment.getMapAsync(this);


            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

                checkPermission();

            }


        }


        @Override

        public void onMapReady(final GoogleMap googleMap) {


            // 구글에서 등록한 api와 엮어주기

            // 시작위치를 서울 시청으로 변경

            LatLng cityHall = new LatLng(37.566622, 126.978159); // 서울시청 위도와 경도


            googleMap.moveCamera(CameraUpdateFactory.newLatLng(cityHall));

            googleMap.animateCamera(CameraUpdateFactory.zoomTo(15));


            // 시작시 마커 생성하기

            MarkerOptions markerOptions = new MarkerOptions();

            markerOptions.position(cityHall);

            markerOptions.title("시청");

            markerOptions.snippet("서울 시청");


            // 생성된 마커 옵션을 지도에 표시

            googleMap.addMarker(markerOptions);


            // 서울광장마커

            // 회사 DB에 데이터를 가지고 있어야 된다.

            LatLng plaza = new LatLng(37.565785, 126.978056);

            markerOptions.position(plaza);

            markerOptions.title("광장");

            markerOptions.snippet("서울 광장");

            googleMap.addMarker(markerOptions);


            //맵 로드 된 이후

            googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {

                @Override

                public void onMapLoaded() {

                    Toast.makeText(MainActivity.this, "Map로딩성공", Toast.LENGTH_SHORT).show();


                }

            });

            //카메라 이동 시작

            googleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {

                @Override

                public void onCameraMoveStarted(int i) {

                    Log.d("set>>","start");

                }

            });

            // 카메라 이동 중

            googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {

                @Override

                public void onCameraMove() {

                    Log.d("set>>","move");

                }

            });

            // 지도를 클릭하면 호출되는 이벤트

            googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

                @Override

                public void onMapClick(LatLng latLng) {

                    // 기존 마커 정리

                    googleMap.clear();


                    // 클릭한 위치로 지도 이동하기

                    googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));


                    // 신규 마커 추가

                    MarkerOptions newMarker=new MarkerOptions();

                    newMarker.position(latLng);

                    googleMap.addMarker(newMarker);

                }

            });

        }


        @TargetApi(Build.VERSION_CODES.M)

        private void checkPermission() {

            String[] permissions = {

                    // Manifest는 android를 import

                    Manifest.permission.ACCESS_COARSE_LOCATION,

                    Manifest.permission.ACCESS_FINE_LOCATION

            };


            int permissionCheck = PackageManager.PERMISSION_GRANTED;

            for (String permission : permissions) {

                permissionCheck = this.checkSelfPermission(permission);

                if (permissionCheck == PackageManager.PERMISSION_DENIED) {

                    break;

                }

            }


            if (permissionCheck == PackageManager.PERMISSION_DENIED) {

                this.requestPermissions(permissions, 1);

            }


        }

    }



    이런 지도 모양에 위치들을 추가 해놓은 모양이 뜰 것이다.



    실행시 지도가 뜨지 않는다면 아래 설정을 따라한다.


    문의 있으시면 댓글 주세용





    반응형

    댓글

Designed by Tistory.