Androdi Map Api 관련 Zoom level 세분화

카카오 map api에서 zoom level은 정수로만 설정이 되는 것으로 확인 되는데요,

seekerBar/progress bar의 드래그에 따른 맵을 자연스러운 zoom in/out을 하고 싶은데, 구글, 네이버와 달리 double 값이 아니라 int로만 설정이 가능하여 자연스러운 zoom in/out이 불가능한 것으로 보입니다…

animation을 이용한 moveCamera를 이용하더라도 연속적인 drag에 대해서는 반응이 매우 늦어 활용하기가 어려울 듯한데, 다른 방법이 없을까요?

  1. 줌레벨 값이 int 에서 double 로 바뀐다고 해도 끊어지는 텀이 짧아지는 것이지, 제스쳐로 드래그 하는 것처럼 자연스럽게 zoom in/out 이 되지는 않을 것 같습니다.

  2. 애니메이션을 활용한 moveCamera 의 zoom in/out 반응속도를 빠르게 하기 위해서는 seekerBar/progress bar 의 속도에 맞춰 duration 을 짧게 주시고, CameraAnimation.isConsecutive 를 false 로 줘서 이전 애니메이션을 무시하고 다음 애니메이션으로 이어지게 할 수도 있습니다.

  3. 그러나, 손으로 제스쳐(한 손가락 더블탭 위 아래 드래그) 하는 것처럼 끊김없이 부드럽게 zoom in/out 을 구현하시려면, MapView.dispatchTouchEvent(motionEvent); 를 호출하여 강제로 터치 이벤트를 발생시키는 방법이 있습니다. seekerBar/progress bar 의 터치이벤트 및 속도에 맞춰서 MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE, MotionEvent.ACTION_UP 등을 활용하시면 의도하셨던 부드러운 드래그 효과가 나올 것 같습니다.

progress 값 <-> 거리 변환 <-> 좌표 converting 하여 fitMapPoints 이용해서 카메라 set 하는 방법으로 세부적인 zoom level도 되도록 해결 했네요,
다만 max/min zoom level을 셋팅하는 부분은 없는 것 같은데, 이 부분은 해결 방법이 없을까요?
사용자가 set 할 수 있는 progressing 값 바운더리가 내부적으로 있는데, 카카오맵에는 max/min zoom level 셋팅이 존재하지 않네요, 사실 지원되더라도 int 값만 지원되어서 쉽지는 않을 듯한데,

첫째로 set max/min zoom level을 지원할 계획이 있으신지,
둘째로 zoom level을 int가 아닌 double로 지원할 계획이 있으신지,
마지막으로 사용자가 일정 이상 줌 in/out을 하지 못하게 설정할 수 있는 방법이 현재로서 있을까요?
→ 예를 들어 zoom in/out 시 어느 한계를 넘어가면 코드 레벨에서 setZoom을 강제로 하게 한다거나 하여 더이상 못하게요…
camera 이동 시에 지속적으로 불리는 listener 같은게 있을까요?

  1. 사용자 max/min 줌레벨 설정기능은 오늘 중으로 배포 될 SDK 2.8.5 버전에 포함 될 예정입니다.

  2. 현재는 zoom level 을 double 로 지원 할 계획이 없습니다.

  3. 지도의 높이 값을 디테일하게 세분화해서 이용하시려면, CameraPosition 의 height 속성이 있습니다. cameraPosition.getHeight() 해서 현재의 카메라 높이를 가져올 수 있고, CameraPosition.from() 를 통해서 원하는 높이로 카메라를 설정 하실 수 있습니다.