본 글은 [깡샘의 안드로이드 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책을 통해 확인해 주세요.
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의 지도를 화면에 출력합니다.
'Android' 카테고리의 다른 글
[깡샘의 안드로이드 프로그래밍] 정리 27 - Volley API 를 이용한 HTTP 통신 (0) | 2018.01.06 |
---|---|
[깡샘의 안드로이드 프로그래밍] 정리 26 - JSON 파싱 (0) | 2018.01.06 |
[깡샘의 안드로이드 프로그래밍] 정리 24 - LocationManager (0) | 2018.01.06 |
[깡샘의 안드로이드 프로그래밍] 정리 23 - 주소록 데이터 획득 (0) | 2018.01.06 |
[깡샘의 안드로이드 프로그래밍] 정리 22 - ActivityManager (1) | 2018.01.06 |