이 포스팅은 마커 클러스터에 표시할 마커 집합의 생성과 커스텀 오버레이, 추가와 삭제에 관한 예제입니다. 지도 개체 생성과 기본 옵션 정의는 메뉴얼의 샘플을 참고하시기 바랍니다.
1. 기본 선언 및 함수 정의
var _cluster = {};
_cluster.markers = [];
_cluster.overlay = [];
_cluster.marker = [];
_cluster.markerItemNos = [];
_cluster.images = {
'item': '{{마커이미지}}',
'item2': '{{마커이미지2}}'
};
//오버레이 클리어
_cluster.overlay.clear = function () {
if (_cluster.overlay.length > 0) {
for (var index = 0; index < _cluster.overlay.length; index++) {
_cluster.overlay[index].setMap(null);
}
}
};
//마커 클리어
_cluster.marker.clear = function () {
if (_cluster.marker.length > 0) {
for (var index = 0; index < _cluster.marker.length; index++) {
_cluster.marker[index].setMap(null);
}
}
};
//지도위 클리어
_cluster.clear = function () {
if (_cluster.overlay)
_cluster.overlay.clear();
if (_cluster.marker)
_cluster.marker.clear();
if (_cluster.markers)
_cluster.markers.clear();
}
2. 데이터로부터 마커 생성, 삭제를 위한 배열 저장
// n개의 마커를 생성한다.
var markers = $({{마커데이터들}}).map(function (i, item) {
var imageSrc = _cluster.images.item, // 마커이미지의 주소입니다
imageSize = new daum.maps.Size(32, 32), // 마커이미지의 크기입니다
imageOption = { offset: new daum.maps.Point(16, -6), background: '#FFF' }; // 마커이미지의 옵션입니다.
var content = '{{커스텀오버레이}}';
var marker = new daum.maps.Marker({
position: new daum.maps.LatLng(item.lat, item.lng),
image: new daum.maps.MarkerImage(imageSrc, imageSize, imageOption),
clickable: true,
title: '{{마커고유키}}'
});
// 마커에 클릭이벤트를 등록합니다
daum.maps.event.addListener(marker, 'click', function () {
if (_cluster.overlay.length > 0)
_cluster.overlay.clear();
// 커스텀 오버레이를 생성합니다
var customOverlay = new daum.maps.CustomOverlay({
map: {{지도개체}},
position: marker.getPosition(),
content: content,
yAnchor: 0.5,
xAnchor: 0.5,
zIndex: 3
});
customOverlay.setMap({{지도개체}});
_cluster.overlay.push(customOverlay);
});
return marker;
});
// 클러스터러에 마커들을 추가합니다
_cluster.markers.addMarkers(markers);
3. 클러스터 클릭 이벤트 추가
// 클러스터에 클릭이벤트를 등록합니다
daum.maps.event.addListener(_cluster.markers, 'clusterclick', function (cluster) {
_cluster.markerItemNos = [];
$.each(cluster.getMarkers(), function (index, item) {
_cluster.markerItemNos.push(item.getTitle());
});
{{고유값들을 가지고 실행할 함수}}
});
'Web_Application' 카테고리의 다른 글
[mustache] html 그대로 표시 ( Do not escape html ) (0) | 2018.01.10 |
---|---|
[link] online syntax highlighter (0) | 2017.12.29 |
2017 web developer road map (0) | 2017.03.31 |
CORS on Nginx (0) | 2017.01.20 |
[nginx]10013: An attempt was made to access a socket in a way forbidden by its access permissions (0) | 2017.01.12 |