[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
https://devtalk.kakao.com/t/faq-api/125610
안녕하세요, 양질의 지도 서비스를 제공해주시느라 항상 고생 많으십니다.
저는 지도 API를 이용하여 지도를 출력하고 영역 등 마커를 표시해주는 웹 서비스를 개발한 상태입니다.
해당 서비스는 차량의 실시간 위치 정보를 받아오는 기능 때문에 갱신이 잦고(30초에 한번)
사용자가 한번 페이지에 들어오면 오래 켜두게 되는 상황입니다.
이런 상황에서 일부 사용자가 약 2~3시간 씩 오래 켜두게 되면 나오던 지도가 갑자기 나오지 않는 등 현상을 겪게 되는데,
(지도 이외의 페이지 기능은 정상작동합니다.)
제가 제 PC를 통해 해당 상황을 재현해보려고 해도 재현이 안되고 있습니다.
혹시 이런 경우는 PC의 사양에 문제가 있는 것인지, 아니면 다른 이유로 이런 현상이 있을 수 있는 것인지 문의드립니다.
여러모로 지도 서비스에 감사드리며 답변 부탁드리겠습니다.
PC성능에 따라 달라지겠지만 많은 마커를 클라이언트에서 처리를 한다면 매번 연산이 이뤄지기 때문에 느려지고
가비지 컬렉터에 의해서 화면의 블락킹이 발생할 수 있습니다.
일부 사용자의 패턴이 마커 개수로 인한 거라면 연산량을 줄이는 방법을 고려해보시면 좋을 것 같습니다.
이전 속도 처리 관련 게시글에 대한 답변도 함께 첨부 드립니다.
https://devtalk.kakao.com/t/topic/131988
답변 주신 내용 토대로 연산 횟수와 마커, 오버레이 생성 횟수를 최대한 줄이는 방향으로 개선했습니다. 감사합니다.
추가 질문이 있는데, setMap(null) 을 통해서 지도에서 마커나 오버레이를 지우게 되면
할당된 리소스,메모리도 같이 해제되면서 설정된 이벤트 리스너도 같이 해제가 되는걸까요?
아니면 이벤트 리스너는 수동으로 따로 해제를 해줘야 하나요?
이벤트 pool은 마커와 상관없이 동작합니다.
마커는 내부에서 발생한 이벤트를 trigger 해서 pool에 등록된 이벤트 실행하도록 메시지를 전달해 주는 역할만 하기 때문에
이미 등록된 이벤트는 사라지지 않습니다.
마커 이벤트도 같이 삭제하려면 kakao.maps.event.removeListener로 이벤트를 삭제해 주세요.
https://apis.map.kakao.com/web/documentation/#event_removeListener
답변 감사합니다. 전달해주신 내용 토대로 수정하였습니다.
1개의 좋아요