Gestures & Events
지도의 제스쳐 컨트롤과 다양한 이벤트에 대한 처리를 확인합니다.
1. 제스쳐
제스쳐로 지도의 확대/축소, 이동, 기울기, 회전 동작을 시킬 수 있습니다. 물론, 프로그래밍을 통해 설정할 수도 있습니다. 자세한 내용은 Camera 를 참고해 주세요.
제스쳐 동작은 KakaoMap.setGestureEnable 를 통해서 사용 중지를 시킬 수 있습니다.
kakaoMap.setGestureEnable(GestureType.OneFingerDoubleTap, false);
확대/축소(ZoomLevel) 동작
- 한 손가락으로 두 번 탭하여 1단계 확대 (GestureType.OneFingerDoubleTap)
- 두 손가락으로 한 번 탭하여 1단계 축소 (GestureType.TwoFingerSingleTap)
- 두 손으로 모아서 축소/늘려서 확대 (GestureType.Zoom)
- 한 손가락으로 두 번 탭하고 위아래로 스크롤해서 축소/확대 (GestureType.OneFingerZoom)
이동 동작
- 한 손가락으로 지도를 상하좌우 드래그하여 이동 (GestureType.Pan)
기울이기 동작
- 두 손가락을 대고 떼지않고 위아래로로 움직여 지도를 기울이기 (GestureType.Tilt)
회전 동작
- 두 손가락을 대고 떼지 않은 채 지도를 회전시키기 (GestureType.Rotate)
2. 이벤트
지도의 클릭 이벤트
지도화면을 클릭해서 이벤트를 받을 수 있는 리스너의 종류는 내용에 따라 아래와 같습니다.
Property | Description |
---|---|
OnViewportClickListener | 지도가 나오는 Viewport 영역 클릭에 대한 이벤트 리스너 |
OnPoiClickListener | 지도배경의 Poi 에 대한 클릭 이벤트 리스너 |
OnTerrainClickListener | 지도배경의 Poi 외 다른 영역(Terrain)에 대한 클릭 이벤트 리스너 |
OnMapClickListener | Poi 와 Terrain 클릭에 대한 이벤트 리스너 |
- 위의 4가지 지도 클릭 리스너를 모두 등록하고 Poi 를 클릭하면 이벤트는 OnViewportClickListener, OnPoiClickListener, OnMapClickListener 로 들어옵니다.
- 위의 4가지 지도 클릭 리스너를 모두 등록하고 Poi 외 Terrain 을 클릭하면 이벤트는 OnViewportClickListener, OnTerrainClickListener, OnMapClickListener 로 들어옵니다.
지도화면(Viewport) 의 크기 변경 이벤트
Viewport 의 크기가 변경되면 이벤트가 들어옵니다. KakaoMap.setViewport() 호출하더라도 크기가 변경되지 않으면 이벤트는 들어오지 않습니다.
kakaoMap.setOnViewportChangeListener(new KakaoMap.OnViewportChangeListener() {
@Override
public void onViewportChanged(KakaoMap kakaoMap, Rect rect) {
// 지도화면(Viewport) 의 크기가 변경 됐을 때 호출
}
});
Padding 의 크기 변경 이벤트
Viewport 의 Padding 크기가 변경되면 이벤트가 들어옵니다. KakaoMap.setPadding() 호출하더라도 크기가 변경되지 않으면 이벤트는 들어오지 않습니다.
kakaoMap.setOnPaddingChangeListener(new KakaoMap.OnPaddingChangeListener() {
@Override
public void onViewportPaddingChanged(KakaoMap kakaoMap) {
}
});
MapViewInfo 변경 이벤트
KakaoMap.changeMapViewInfo() 나 KakaoMap.changeMapType() 으로 MapViewInfo 를 변경하면 이벤트가 들어옵니다.
kakaoMap.setOnMapViewInfoChangeListener(new KakaoMap.OnMapViewInfoChangeListener() {
@Override
public void onMapViewInfoChanged(MapViewInfo mapViewInfo) {
// MapViewInfo 가 변경 성공하면 호출
}
@Override
public void onMapViewInfoChangeFailed() {
// MapViewInfo 가 변경 실패하면 호출
}
});
카메라 움직임 이벤트
지도가 움직일 때마다 카메라 값은 변경됩니다. 카메라가 움직이기 시작할 때와 움직임이 끝났을 때 이벤트를 수신합니다. 또한, GestureType 파라미터를 통해 카메라의 움직임이 사용자 제스쳐 의해 발생했는지 유무를 확인 할 수 있습니다.
kakaoMap.setOnCameraMoveStartListener(new KakaoMap.OnCameraMoveStartListener() {
@Override
public void onCameraMoveStart(KakaoMap kakaoMap, GestureType gestureType) {
// 카메라 움직임 시작 시 이벤트 호출
// 사용자 제스쳐가 아닌 코드에 의해 카메라가 움직이면 GestureType 은 Unknown
}
});
kakaoMap.setOnCameraMoveEndListener(new KakaoMap.OnCameraMoveEndListener() {
@Override
public void onCameraMoveEnd(KakaoMap kakaoMap, CameraPosition cameraPosition, GestureType gestureType) {
// 카메라 움직임 종료 시 이벤트 호출
// 사용자 제스쳐가 아닌 코드에 의해 카메라가 움직이면 GestureType 은 Unknown
}
});
이 밖의 다른 이벤트
아래 이벤트 리스너들에 대한 설명은 해당 API 문서를 참고해 주세요.
- OnVisibleChangeListener
- OnLabelClickListener
- OnLodLabelClickListener
- OnCameraPositionListener
- OnCompassClickListener
- OnMapWidgetClickListener
- OnInfoWindowClickListener