본문 바로가기
  • 콩's 코딩노트
Android

Android Studio - GoogleMap 안드로이드에 실제로 적용하기

by Cong_S 2022. 7. 29.

 

먼저 액티비티의 화면을 구성하는 xml 파일의 코드는 아래 블록을 참고하며

실제 도움말 문서에서도 다음과 같이 안내하고 있다.

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

 

구글맵을 사용하는 간단한 액티비티의 코드는 다음과 같다.

주석을 참고하자.

 

// implement로 구글맵의 기능을 가져온다.
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener {

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

        // onCreate에는 구글맵을 사용하겠다는 코드를 작성.
        SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this );
    }

    @Override
    public void onMapReady(@NonNull GoogleMap googleMap) {
        // 구글맵을 실제 어떻게 사용할지는 onMapReady 에 작성.

        // 시작 위치를 정하기 위한 객체 생성
        LatLng myLocation = new LatLng(37.579617, 126.977041);

//      googleMap.moveCamera(CameraUpdateFactory.newLatLng( myLocation ));
        // 위는 시작할 때 대륙도 보일 정도로 크게 시작함 아래 메소드를 사용해 적절한 시작 위치를 정하자.
        googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom( myLocation , 14));

        // 지도에 표시되는 마커를 생성하는 코드
        googleMap.addMarker(new MarkerOptions().position(myLocation).title("경복궁")).setTag(0);
//      googleMap.addMarker(new MarkerOptions().position(myLocation).title("경복궁 옆에")).setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN));
        googleMap.addMarker(new MarkerOptions()
                .position(new LatLng(37.5428428, 126.6762096)).title("연희직업전문학교")).setTag(1);

        // 구글맵의 지도 형태 바꾸기, 파라미터 값을 변경하여 형태를 바꿀 수 있다.
        googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

        // 아래의 마커 클릭 코드를 실행하는 메소드
        googleMap.setOnMarkerClickListener(this);
    }

    @Override
    public boolean onMarkerClick(@NonNull Marker marker) {

        // 마커 클릭 시 액션 코드 입력
        int index = (int) marker.getTag();

        if(index == 0){
            Toast.makeText(this, "GOOD~~~~~", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(this, "Hello~~~~", Toast.LENGTH_SHORT).show();
        }

        return false;
    }
}

참고로 myLocation 객체에 입력한 곳은 경복궁이며,

아래는 에뮬레이터로 실행한 앱의 실제 시작화면이다.

 

 

댓글