이중 반복문으로 positions.length만큼 반복문이 돌면서
Marker, CustomOverlay가 중복 생성되고 있으며
가장 마지막으로 담긴 커스텀 오버레이만 삭제하고 있습니다.
코드 참고해주세요.
var markers = [];
var customOverlays = [];
for (var i = 0; i < positions.length; i++) {
const lat = positions[i].lat;
const lng = positions[i].lng;
var marker = new kakao.maps.Marker({
position: new kakao.maps.LatLng(lat, lng)
});
var customOverlay = new kakao.maps.CustomOverlay({
content: positions[i].content,
position : new kakao.maps.LatLng(lat, lng),
map:map,
zIndex: 1
});
// 생성한 마커와 커스텀 오버레이를 배열에 담아줍니다.
markers.push(marker);
customOverlays.push(customOverlay);
}
clusterer.addMarkers(markers);
// 확대 축소에 따라 커스텀 오버레이 출력 유무 정하기기
kakao.maps.event.addListener(map, 'zoom_changed', function() {
if(map.getLevel() <= 7) {
for(let i=0; i<customOverlays.length; i++) {
customOverlays[i].setMap(map);
}
} else if(map.getLevel() >= 7) {
for(let i=0; i<customOverlays.length; i++) {
customOverlays[i].setMap(null);
}
}
});
그리고 대량의 마커표시 관련 내용은 아래 답변 참고해주세요.
https://devtalk.kakao.com/t/topic/70927/2