카카오 맵 클러스터 커스텀 질문 드리고 싶습니다

[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
https://devtalk.kakao.com/t/faq-api/125610

안녕하세요, 이번에 카카오 맵으로 클러스터러를 커스텀을 해야하는데 도저히 방법을 못찾겠어서 질문 드립니다.

const data= [
{
x: 37.4934585,
y: 127.0252199,
status: “Y”,
},
{
x: 37.4932585,
y: 127.0262199,
status: “Y”,
},
{
x: 37.4931585,
y: 127.0257199,
status: “Y”,
},
{
x: 37.4938585,
y: 127.0259199,
status: “Y”,
},
{
x: 37.4932285,
y: 127.0252199,
status: “N”,
},
{
x: 37.4934785,
y: 127.0252199,
status: “N”,
},
{
x: 37.4934785,
y: 127.0252199,
status: “N”,
},
{
x: 37.4934785,
y: 127.0252199,
status: “N”,
},
{
x: 127.299751315121,
y: 36.4910115284273,
status: “Y”,
},
{
x: 127.299751315121,
y: 36.4910115284273,
status: “Y”,
},
{
x: 127.299751315121,
y: 36.4910115284273,
status: “Y”,
},
{
x: 127.299751315121,
y: 36.4910115284273,
status: “Y”,
},
];

이런 구조의 데이터가 있습니다.

클러스터 범위 안에 있는 데이터의 status가 Y냐 N이냐에 따라서 클러스터의 text를 변경해주고 싶습니다.

도저히 방법을 모르겠어서 질문드립니다.

const createMarker = (position, elStatus) => {
const marker = new kakao.maps.Marker({
position,
clickable: true,
});
marker.elStatus = elStatus;
let markers = [];
markers.push(marker);
clusterer.value.addMarkers(markers);
};

이런식으로 마커를 만들어서 cluster에 지정해주고 있구요, setTexts쪽에서 어떻게 해야할 것 같은데 정말 감이 안잡힙니다.

제가 정확히 원하는 것은 이런 식으로 보여주고 싶습니다. cluster범위 내의 ‘status가 N인 값 , 클러스터 범위 안의 총 숫자’

예시를 들어보자면 위의 샘플 데이터에서 x값이 37.~인 cluster에는 ‘4 , 8’ 이렇게 표시가 되어야 하고,

x값이 127로 시작하는 클러스터에서는 ‘0, 4’

이런식으로 표기를 해주고 싶습니다

clusterer.value.setTexts((text, count) => {
const markers = clusterer.value.getMarkers();
const nCount = markers.filter((marker) => {
return marker.status != “Y”;
});
return ${nCount.length} /${text};
});

단순히 이렇게만 지정한다면 status가 N인 범위에만 값이 보여지는게 아닌 statur가 N이 없는 곳에도 0 이 아닌 모두를 보여주더라구요

어떻게 해야할까요?

clustered 이벤트를 등록해서 클러스터링이 완료될 때
각 클러스터에 포함된 마커 정보를 가져와서 마커별 status 확인 및 설정할 텍스트를 정하고
클러스터러의 커스텀 오버레이 contentinnerText를 이용해서 내부 텍스트를 직접 변경하는 방법도 있습니다.

kakao.maps.event.addListener( clusterer, 'clustered', function( clusters ) {
    clusters.forEach(cluster => {
        let markers = cluster.getMarkers();
        //TODO: 클러스터의 마커 정보를 확인 및 적용할 text를 구해서 각 클러스터의 커스텀 오버레이 content에 text를 재설정해주세요.
        cluster.getClusterMarker().getContent().innerText = text;
    });
});

https://apis.map.kakao.com/web/documentation/#MarkerClusterer_clustered
https://apis.map.kakao.com/web/documentation/#Cluster_getMarkers
https://apis.map.kakao.com/web/documentation/#Cluster_getClusterMarker