Setlevel() 발생하는 에러

발생한 에러

Uncaught TypeError: Cannot read property 'yf' of undefined
    at q.<anonymous> (open.js:8)
    at Array.forEach (<anonymous>)
    at r (open.js:2)
    at i (open.js:8)
    at zb (open.js:42)
    at q.c.vb (open.js:163)
    at q.c.Md (open.js:161)
    at mc (open.js:41)
    at q.c.Lb (open.js:169)
    at HTMLDivElement.wheelevent ((index):615)


Uncaught TypeError: Cannot read property 'yf' of undefined
    at q.<anonymous> (open.js:8)
    at Array.forEach (<anonymous>)
    at r (open.js:2)
    at i (open.js:8)
    at zb (open.js:42)
    at q.c.vb (open.js:163)
    at q.c.Md (open.js:161)
    at mc (open.js:41)
    at q.c.Lb (open.js:169)
    at HTMLDivElement.markerClick ((index):717)

지도에 마커를 올리고 레벨에 따라서 클릭 또는 휠을 통해서

setlevel() 를 호출하여 이용하는데 클릭 또는 휠 이벤트가 작동할 때 위와 같은
에러가 발생합니다. 특정 상황도 아니고 같은 위치도 아니여서
예외처리를 해야 할 것 같은데
다른 분들은 저런 에러가 없으신지요

확인 한 번 해보겠습니다.

글쎄요… 혹시 코드를 볼수 있을까요. 저는 재현이 안되는데 ㅠ
공개된 곳에 첨부가 어려우시면 쪽지로 보내주셔도 됩니다.

Map 객체의 idle 이벤트 핸들러 내부에서
이미 지도 위에 올라 있는 CustomOverlay 혹은 Marker(이하 Overlay)를 삭제할 경우에 발생하는 오류입니다.

Overlay는 setMap(map)을 하는 시점(지도에 올리는 시점)에서 내부적으로 지도에 idle 이벤트를 하나 등록합니다.
반대로 setMap(null)을 하는 시점에서는 idle 이벤트를 삭제합니다.
지도를 움직이고 나면 사용자가 외부에서 등록해준 idle 이벤트 핸들러 함수와 Overlay가 등록한 idle 이벤트가 순차적으로 같이 실행되는데
보통 이벤트를 건 순서로 실행되고 Overlay는 사용자 idle 이벤트보다 늦게 지도에 올라오는게 일반적이기 때문에
사용자의 이벤트보다 나중에 실행됩니다.
그런데 Overlay가 등록한 idle 이벤트가 실행될 것이라 예상하고 이벤트 핸들러가 들어있는 배열을 돌다보니 이미 setMap(null)이 실행되어 사라진 상태이고, 배열에 없는 원소를 참조하게 되는 상황이라 해당 오류가 발생했습니다.

보통은 코드 흐름으로는 이러한 상황은 잘 만들어지지 않거나 있어도 회피가 가능하지만
이 번 경우에는 내부적으로 컨트롤 되는 이벤트에서 발생한 경우라 API를 수정할 계획입니다.

내부적으로 테스트를 거친 이 후, 금주 내로 배포할 예정이오니 참고해 주세요.

제보 감사드립니다.

@woo95kil
해당 문제되는 현상 수정하여 배포되었습니다.
한 번 확인해보시고 문제가 생기면 다시 답글 부탁드립니다.

제보 다시 한 번 감사드립니다.

빠른 피드백 감사합니다.
몇가지 테스트 해 봤는데
문제가 발생하지 않습니다. 감사합니다.

1개의 좋아요