다중 오버레이에서 다른 오버레이 클릭시 이전 오버레이 닫기 관련 문의

두가지 방법이 있습니다.

  1. CustomOverlay를 전역으로 하나만 만드시고
    클릭할 때마다 setPosition()로 위치를, setContent()로 내용을 바꿔치는 방식

  2. 전역 변수를 하나 두시고
    클릭할 때마다 이 변수에 할당되어 있는 CustomOverlay를 setMap(null) 하고 현재 클릭된 CustomOverlay를 해당 변수에 재할당하여 계속하여 이 전 CustomOverlay를 지우는 방식

무엇을 구현하시느냐에 따라 사용해야 할 방법이 다른데
뭐… 간단하게 두 번째껄로 간다고 하면

// global variable
var clickedOverlay = null;

geocoder.addressSearch(addr, function(result, status) {
  /*
  ...
  ...
  ...
  */
  var CustomOverlay = new daum.maps.CustomOverlay({
    //content: content,
    map: map,
    position: marker.getPosition()
  });
  /*
  ...
  ...
  ...
  */
  daum.maps.event.addListener(marker, 'click', function() {
    if (clickedOverlay) {
        clickedOverlay.setMap(null);
    }
    CustomOverlay.setMap(map);
    clickedOverlay = CustomOverlay;
  });
  /*
  ...
  ...
  ...
  */
});
4개의 좋아요