Gestures & Events

지도의 제스쳐 컨트롤과 다양한 이벤트에 대한 처리를 확인합니다.

1. 제스쳐


제스쳐로 지도의 확대/축소, 이동, 기울기, 회전 동작을 시킬 수 있습니다. 물론, 프로그래밍을 통해 설정할 수도 있습니다. 자세한 내용은 Camera 를 참고해 주세요.

제스쳐 동작은 KakaoMap.setGestureEnable 를 통해서 사용 중지를 시킬 수 있습니다.

kakaoMap.setGestureEnable(GestureType.OneFingerDoubleTap, false);

확대/축소(ZoomLevel) 동작

이동 동작

  • 한 손가락으로 지도를 상하좌우 드래그하여 이동 (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 문서를 참고해 주세요.