마커와 커스텀오버레이를 동일하게 취급되도록 할 수 있나요?

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

각 마커마다 customOverlay를 추가해서 마커마다 하단에 해당 마커의 이름이 출력되도록 만들었습니다.

그런데 클러스터를 적용하니 마커는 클러스터가 적용되서 잘 되는데
커스텀오버레이는 적용이 안되서 클러스터된 부분에도 그대로 출력이 되고 있습니다.

커스텀오버레이를 마커와 동일하게 클러스터시에도 사라지도록 하고 싶고
마커와 동일한 클릭 이벤트도 적용해주고 싶습니다.

var map = new kakao.maps.Map(document.getElementById('map'), { // 지도를 표시할 div
    center : new kakao.maps.LatLng(36.2683, 127.6358), // 지도의 중심좌표 
    level : 14 // 지도의 확대 레벨 
});

// 마커 클러스터러를 생성합니다 
var clusterer = new kakao.maps.MarkerClusterer({
    map: map, // 마커들을 클러스터로 관리하고 표시할 지도 객체 
    averageCenter: true, // 클러스터에 포함된 마커들의 평균 위치를 클러스터 마커 위치로 설정 
    minLevel: 10 // 클러스터 할 최소 지도 레벨 
});

// 데이터를 가져오기 위해 jQuery를 사용합니다
// 데이터를 가져와 마커를 생성하고 클러스터러 객체에 넘겨줍니다
$.get("/download/web/data/chicken.json", function(data) {
    // 데이터에서 좌표 값을 가지고 마커를 표시합니다
    // 마커 클러스터러로 관리할 마커 객체는 생성할 때 지도 객체를 설정하지 않습니다
    var markers = $(data.positions).map(function(i, position) {
        return new kakao.maps.Marker({
            position : new kakao.maps.LatLng(position.lat, position.lng)
        });
    });
    
    var customOverlays = $(data.positions).map(function(i, position) {
        return new kakao.maps.CustomOverlay({
            content: '<div style="padding:0 5px;background:#fff;">:D</div>', 
            position : new kakao.maps.LatLng(position.lat, position.lng),
            map:map
        });
    });

    // 클러스터러에 마커들을 추가합니다
    clusterer.addMarkers(markers);
});

http://apis.map.kakao.com/web/sample/basicClusterer/
예제 소스에서 커스텀오버레이를 추가한 소스인데 여기서 커스텀오버레이도 마커와 동일하게 적용되도록 하고 싶습니다.

추가로 올린 커스텀 오버레이는 따로 배열로 관리하시고
clustered 이벤트가 발생할 때마다
현재 마커의 상태와 비교하여 매 번 Visible을 지정해 주셔야 할 겁니다.
http://apis.map.kakao.com/web/documentation/#MarkerClusterer_clustered

그게 아니라면 마커와 커스텀 오버레이를 넣어서 각각 넣고
clusterer 생성 옵션 중, getTexts 옵션을 함수로 주어서
함수로 넘어오는 값을 반으로 줄여서 표현하는 방식도 있을 수 있습니다만, tricky한 방식이라 추천드리지는 않습니다.
http://apis.map.kakao.com/web/documentation/#MarkerClusterer_getTexts

첨언드리면, 커스텀 오버레이의 클릭 이벤트는 내부에 넣는 DOM content에 직접 걸어서 사용하셔야 합니다.

답변주신 마지막줄에 “커스텀 오버레이의 클릭 이벤트는 내부에 넣는 DOM content에 직접 걸어서 사용하셔야 합니다.” 라는 말이 자바스크립트로 작성하라는 말이 아닌가요? 직접 건다는 말을 쉽게 해주실 수 있으신가요?


링크 참고해주세요.

이해완료! 감사합니다 ㅎㅎ

마커객체 생성 위치에 커스텀 오버레이 객체 넣어도 되네요 신기방기~

1개의 좋아요