maps.js icon indicating copy to clipboard operation
maps.js copied to clipboard

zoom을 과하게 당기는 zoom_changed시에 panTo가 동작하지 않습니다.

Open zeakd opened this issue 7 years ago • 11 comments

내용 (Description)

const map = new naver.maps.Map('naver-map', {
  center: new naver.maps.LatLng(37.3595704, 127.105399),
  zoom: 13,
  maxZoom: 14,
});   

map.addListener('zoom_changed', () => {
  map.panTo(new naver.maps.LatLng(37.3595704, 127.105399))
})

zoom_changed시에 어느 center로 가던지 바로 특정 center로 panTo 하는 코드를 작성하였으나, zoom을 최대로 당겼을 때 panTo가 동작 중에 멈추며, idle이 발생하지 않습니다. morph를 사용하여도 같은 결과가 나옵니다.

테스트 해보니 zoom을 정확하게 14만큼 당기면 panTo가 작동하지만 더 과하게 스크롤하여 14보다 더 많이 당기는 시도를 했을 때에 멈춥니다. scroll이나 pinch 둘다 같은 현상이 보입니다. 14보다 더 당기면 문제가 생기기 때문에 maxZoom옵션을 주어 보았으나 해결되지 않았습니다.

환경 (Environment)

OS: macos high sierra Browser: 모든 브라우저

  • OS, OS Version, Browser, Browser Version, Device Information, etc:

추가 정보 (Additional Info)

  • Site URL, Source Code

zeakd avatar Mar 04 '18 17:03 zeakd

macos 특유의 부드럽게 되는 scroll (Inertial Scrolling)이 원인인 것 같습니다.

zeakd avatar Mar 04 '18 17:03 zeakd

안녕하세요. zoom 시 panTo 애니메이션을 리턴하도록 되어 있습니다. 정상적으로 동작하려면 zoom 이 끝났을 때 panTo 를 적용해야합니다. panTo 호출 시점은 'idle' 시나 'zoom_changed' 시점에 호출할 수 있습니다.

https://navermaps.github.io/maps.js/docs/naver.maps.Map.html

NaverMantle avatar Jun 21 '18 07:06 NaverMantle

@NaverMantle 사용법 질문이 아니고요. 위에 예시를 보시면 아시겠지만 말씀하신대로 zoom_changed 시에 panTo를 실행했습니다.

그런데 이때 macOS의 경우 마우스나 트랙패드를 이용해서 줌을 최대로 땡길 경우 panTo도중 멈추는 현상이 발생해서 이슈를 드렸습니다. 이는 macos의 기능인 inetial scroll이 원인으로 보입니다.

재현되지 않을 경우 다시 알려주세요 이미지 첨부하겠습니다.

zeakd avatar Jun 21 '18 17:06 zeakd

zoom_changed 호출이 1->2 와 같이 정수일때만 실행되지 않고(windows의 경우 정수단위), 1->1.01 과 같이 소수단위에서도 발생하면 가능한 케이스입니다. zoom_changed 콜백에서 zoom 확인 후 정수일 때 실행되도록 처리하면 현상이 낫지않을까요?

cs09g avatar Jun 22 '18 00:06 cs09g

@zeakd 네이버 지도 구현이 zoom 모션이 발생하면 panTo 모션을 멈추도록 구현되어 있습니다. 타일을 새로 가져와 타일 위치 조절과 스왑 처리 등을 해서 다른 행위를 막아 두었습니다. 줌 모션 중이라면 panTo가 동작하지 않는게 현재 상황이며 원하시는 결과를 얻으시려면 줌이 끝나는 시점에 panTo를 호출하셔 합니다.

NaverMantle avatar Jun 22 '18 06:06 NaverMantle

@zeakd 구현된 페이지를 보여주실 수 있을까요? 페이지를 보면 원하시는 결과를 같이 고민하기 좋을 듯 합니다.

NaverMantle avatar Jun 22 '18 06:06 NaverMantle

@NaverMantle @cs09g 안녕하세요. 예시 드립니다. https://codepen.io/zeakd/pen/yEmeVd 제 컴퓨터에선 이슈 재현이 되었는데 혹시 다른 macOS 에서 재현이 안되시면 다시 알려주세요.

zeakd avatar Jul 07 '18 06:07 zeakd

@cs09g map.getZoom() 의 결과는 항상 정수로 보이는데 transition과정의 zoom상태를 보여주는 메소드가 있나요?

zeakd avatar Jul 07 '18 06:07 zeakd

@zeakd 님 보내 주신 코드로 테스트 해보니 최대 줌 14 이후에도 줌이 발생하면 panTo 가 멈추네요. 오류 확인 하여 다음 배포때(8/23) 때까지 수정해보도록 하겠습니다. 이슈 고맙습니다.

NaverMantle avatar Aug 06 '18 06:08 NaverMantle

@NaverMantle 네 고생많으십니다. 감사합니다

zeakd avatar Aug 06 '18 07:08 zeakd

@zeakd 님 오류 수정이 아직 안되었습니다. 내부 작업이 많아 아직 처리를 못했는데요. 10월까지 많이 바쁜 상태라서 10월 말 정기 배포 전까지는 처리해 보겠습니다. 감사합니다.

NaverMantle avatar Sep 04 '18 00:09 NaverMantle