[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
https://devtalk.kakao.com/t/faq-api/125610
- 지도에 노출되는 장소 마킹 및 목록화
- 클러스터 클릭시 클러스터에 속한 장소들 목록 노출 및 클러스터 디자인 변경
- 마커 클릭시 해당 장소 정보 노출 및 마커 디자인 변경.
안녕하세요. 지도 클러스터 관련하여 작업 중 해결되지 않는 부분이 있어 아래와 같이 문의드립니다.
- 지도에 표시된 마커에 장소정보, 클러스터에는 클러스터에 속한 장소들 정보를 조회하여 목록으로 노출할 예정인데, 이와 관련된 메서드나 이벤트가 있나요 ?
- 처음 지도 렌더링시 생성되는 클러스터는 커스텀한 디자인이 적용되지 않고, 지도 위치나 줌 등의 이벤트가 발생한 이후부터 디자인이 적용됩니다. 이에 대한 해결 방안이 있을까요 ?
답변 감사합니다.
2번 질문에 연장선상으로 질문드립니다.
답글로 달아주신 내용 참고하여 아래와 같이 작성했는데, 첫 렌더링시 아래 이벤트가 발생되지 않아서 기본 디자인으로 노출되고, 이후 줌, 위치 변경 등의 이벤트 발생 이후 커스텀 디자인으로 노출됩니다. 작성된 코드 내에 잘못된 부분이 있을까요 ?
<script>
...
...
kakao.maps.event.addListener(clusterer, 'clustered', function( clusters ) {
//클러스터 커스텀
clusters.forEach((cluster) => {
//console.log('cluster', cluster);
let cnt = cluster.getSize() >= 9 ? '9+' : cluster.getSize();
new_content = $(`
<div class="cluster">
<div class="cnt">
<strong>${cnt}</strong>
</div
</div>
`)[0]; //jquery dom
cluster.getClusterMarker().setContent(new_content);
clusterMarker = cluster.getClusterMarker().getContent();
// 클러스터 클릭 이벤트
clusterMarker.addEventListener('click', (e) => {
});
});
});
</script>
lea.ju
4
초기 렌더링에 clustered이벤트가 실행되지 않을 경우 스크립트 실행 순서에 영향이 있을 수 있습니다.
MarkerClusterer에 마커를 추가하기 전 clustered이벤트를 등록해도 동일한지 확인 부탁드립니다.
let clusterer = new kakao.maps.MarkerClusterer({
map: map,
averageCenter: true,
minLevel: 3,
disableClickZoom: true
});
kakao.maps.event.addListener( clusterer, 'clustered', function( clusters ) {
console.log( clusters.length );
});
//TODO: 이벤트 등록 이후 마커 추가
//let markers = [];
// ..