본문 바로가기
Android

[깡샘의 안드로이드 프로그래밍] 정리 25 - GoogleMap

by 들풀민들레 2018. 1. 6.
본 글은 [깡샘의 안드로이드 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책을 통해 확인해 주세요.

 

 

 

 

 

 

23장. 지도 활용

 

23.2.1. 지도 중심 위치 이동

 

앞서 실습을 통해 AndroidManifest.xml 설정과 레이아웃 XML 파일의 <fragment> 태그로 지도 화면을 출력했지만, 결과 화면처럼 세계지도 일부분이 보이는 형태로 출력되었습니다. 화면에 지도가 정상으로 보인다면 가장 기본으로 제어해야 할 사항은 지도의 중심이 특정 위치로 보이게 해주는 작업입니다. 이를 위해서는 우선 자바 코드에서 지도 객체를 얻어야 합니다. play-services 라이브러리에서 지도는 GoogleMap 객체로 표현되는데, 이 객체는 이벤트 모델로 얻습니다.

 

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback{

GoogleMap map;

@Override

protected void onCreate(Bundle savedInstanceState) {

//...

((SupportMapFragment) getSupportFragmentManager().

findFragmentById(R.id.lab1_map)).getMapAsync(this); 

}

@Override

public void onMapReady(GoogleMap googleMap) {

map=googleMap;

}

}

 

지도 객체를 얻으려면 OnMapReadyCallback 인터페이스를 구현한 클래스를 getMapAsync ( ) 함수를 이용하여 등록합니다. 이렇게 해놓으면 지도 객체를 사용할 수 있을 때 onMapReady( ) 함수가 자동으로 호출되면서 매개변수로 GoogleMap 객체가 전달됩니다.

 

GoogleMap 객체를 얻었다면 이제 GoogleMap을 이용하여 지도를 제어해야 하는데요. 가장 기본적인 제어가 지도의 중심 위치 이동입니다. 사용자의 현재 위치나 회사 위치 등 특정 위치를 지도의 중심에 보여주어야 합니다.

 

LatLng latLng = new LatLng(37.566643, 126.978279);

CameraPosition position = new CameraPosition.Builder()

.target(latLng).zoom(16f).build();

map.moveCamera(CameraUpdateFactory.newCameraPosition(position));

 

지도 내에서 특정 위치는 LatLng 객체로 표현됩니다. LatLng 객체를 생성하면서 매개변수로 위도와 경도를 줍니다. CameraPosition 클래스는 지도가 화면에 출력되기 위한 정보를 가지는 클래스로 지도의 중심 위치를 target ( ) 함수로, 지도의 확대 수준을 zoom( ) 함수로 지정합니다. 이렇게 만들어진 CameraPosition을 GoogleMap의 moveCarmera ( ) 함수의 매개변수로 지정하면 CameraPosition 정보대로 지도에 표시됩니다. 위의 코드는 LatLng 객체가 표현하는 위치에 확대 수준 16의 지도를 화면에 출력합니다.