클러스터마커에 인포윈도우 삽입시 문제

지도/로컬 API에 대한 문의게시판입니다.

안녕하세요. 클러스터에 마커를 달고 그 위에 인포윈도우를 넣을려고 하고 있습니다.

코드는 아래와 같이 클러스터 사이즈가 1이거나 맵 level이 10 이하 일때만 인포윈도우를 넣으려고 합니다.

var options = {
center: new kakao.maps.LatLng(36.503670011651444, 125.04375404259831),
level: 13,
};

var map = new kakao.maps.Map(container, options);
map.setMaxLevel(13);
var clusterer = new kakao.maps.MarkerClusterer({
map: map,
averageCenter: true,
minLevel: 10,
gridSize: 60,
minClusterSize : 2
});
var infowindows = [];
var markers;
$.get(path_rootContext + “/core/rcs/data/cluster.json”, function (data) {
markers = $(data.positions).map(function (i, position) {
var marker = new kakao.maps.Marker({
position: new kakao.maps.LatLng(position.lat, position.lng),
});
var content = ‘

’ + position.content + “
”;
var infowindow = new kakao.maps.InfoWindow({
content: content,
});
infowindows.push(infowindow);
var idx = infowindows.length - 1;
marker.setZIndex(idx);
    return marker;
});

clusterer.addMarkers(markers);

kakao.maps.event.addListener(clusterer, "clustered", function (clusters) {
    console.log("clustered complete!!!!")
    for (var i = 0; i < infowindows.length; i++) {
        var infowindow = infowindows[i];
        infowindow.close();
    }
    clusters.forEach(function (cluster) {
        if(cluster.getSize() === 1 || map.getLevel() < 10) {
            var markers = cluster.getMarkers();
            markers.forEach(function(marker) {
                var infowindow = infowindows[marker.getZIndex()];
                infowindow.open(map, marker);
            });
        }
    });
});

});

문제는 맵이 최초 로딩되었을 때에 “clustered” 이벤트가 올라오지 않아서 첫 화면에서는 위의 인포윈도우 추가하는 코드가 동작하지 않는데요, “clustered” 핸들러를 통하지 않고 cluster 객체를 가져올 수 있는 방법이 있을까요?

감사합니다.

현재는 핸들러를 통해서만 접근이 가능합니다.

지도 최초 로딩 부분이 문제가 되는 거라면
로딩 시 level 확인&infowindow 추가 로직을 구현해보는 것도 방법입니다.