개발학습일지

[Android Studio] 구글맵을 활용하여 지도로 할 수 있는 작업 _ LatLng, Marker 본문

Android Studio

[Android Studio] 구글맵을 활용하여 지도로 할 수 있는 작업 _ LatLng, Marker

처카푸 2024. 6. 19. 10:37

구글맵을 활용하여 지도로 할 수 있는 작업 _ LatLng, Marker

 

1. 특정 위도, 경도 값으로 지도의 위치를 적용시키는 코드

- LatLog 사용

- googleMap은 파라미터로 제공되어서 사용이 가능하다.

// LatLng 사용
LatLng myLocation = new LatLng(37.5428, 126.6772);
//newLatLngZoom() 지도 가까워지게 만든다 (줌이 작을수록 멀리, 줌이 커질수록 가깝게)
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 17));

 

2. 마커를 만들어서, 지도에 표시하는 방법

- 마커에 유니크한 태그 값도 같이 만들어 주기

MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(myLocation).title("연희직업전문학교");

googleMap.addMarker(markerOptions).setTag(0);

 

3. 마커를 클릭하면, 동작하는 코드

- 동작하는 코드를 작성하기 위해서는, 

  MarkerOptions를 만들 때, 태그를 달아줘서 마커를 구분해 줘야 한다.

googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(@NonNull Marker marker) {
        int tag = (int) marker.getTag();
        // 여러 태그가 있을 경우 코드 작성 법
//      if(tag == 0){
//      }
        Toast.makeText(MainActivity.this, 
                       "제가 누른 마커의 태그는 : "+tag+", 타이틀은 : "+marker.getTitle(), 
                       Toast.LENGTH_LONG).show();
        return false;
    }
});

 

4. 지도의 타입을 설정하는 코드

- 위성으로 지정

googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

 

 

전체 코드 및 결과물

더보기

 

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) {
                // 맵이 준비되면 내 위치를 중심으로 지도가 나오게 해라 라는 코드 작성
                // 화면을 띄울때 하고 싶은 일
                // 37.5428, 126.6772

                // 1. 특정 위도 경도 값으로 지도의 위치를 적용시키는 코드
                LatLng myLocation = new LatLng(37.5428, 126.6772);
                //newLatLngZoom() 지도 가까워지게 만든다 (줌이 작을수록 멀리, 줌이 커질수록 가깝게)
                googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocation, 17));

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

                googleMap.addMarker(markerOptions).setTag(0);

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

                        int tag = (int) marker.getTag();
//                        if(tag == 0){
//                        }
                        Toast.makeText(MainActivity.this, "제가 누른 마커의 태그는 : "+tag+", 타이틀은 : "+marker.getTitle(), Toast.LENGTH_LONG).show();

                        return false;
                    }
                });

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


            }
        });

    }
}