지도/로컬 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 = ‘
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 객체를 가져올 수 있는 방법이 있을까요?
감사합니다.