전역 변수를 하나 두고 클릭할 때마다 이 변수에 할당되어 있는 overlay(clickedOverlay)를 setMap(null) 하고 현재 클릭된 overlay를 해당 변수에 재할당하여 계속하여 이 전 overlay(clickedOverlay)를 지우는 방식을 사용해서 문제를 해결했다.
var clickedOverlay;
// 마커를 클릭했을 때 커스텀 오버레이를 표시합니다
kakao.maps.event.addListener(marker, 'click', function() {
// 마커 클릭 정보가 전역변수에 담은 오버레이 삭제
if (clickedOverlay) {
clickedOverlay.setMap(null);
}
overlay.setMap(map);
clickedOverlay = overlay;
});
var map;
window.onload = function () {
var zoomable = $(window).width() > 500? false: true;
var mapContainer = document.getElementById('map'), // 지도를 표시할 div
mapOption = {
center: new kakao.maps.LatLng(37.56682, 126.97865), // 지도의 중심좌표
level: 3, // 지도의 확대 레벨
zoomable: zoomable,
mapTypeId: kakao.maps.MapTypeId.ROADMAP // 지도종류
};
// 지도를 생성한다
map = new kakao.maps.Map(mapContainer, mapOption);
}
$(window).resize(function () {
if ($(window).width() > 500) {
alert('지도 확대,축소 비활성화');
map.setZoomable(false); // 지도 확대,축소 막기
}else{
alert('지도 확대,축소 활성화');
map.setZoomable(true);
}
});
최초로 화면이 로드될 때 화면 크기가 500이상인 경우는 지도 확대, 축소를 비활성화 한다. 그 후 화면이 resize 될 때마다 화면 크기를 구해 500이상인 경우 지도 확대, 축소를 비활성화 하고 그렇지 않으면 활성화한다. *map에 확대,축소를 설정하려면 먼저 map이 생성되야 한다.