Drawing manager의 put 함수를 통해 생성한 polygon에 listener 붙이는 방법

drawing manger의 put함수를 통해 polygon을 그렸을 때 그려진 polygon에 listener를 붙이고 싶습니다.

시도한 방법은

  1. drawend: put이 그린 polygon은 drawend evnt에 걸리지 않는 듯 합니다. (실패)

  2. manager.getOverlay 를 통해 지도에 그러진 obejct를 받아서 listener 붙이기 (실패)
    var testobject = manager.getOverlays([kakao.maps.drawing.OverlayType.POLYGON]);
    var testarea = testobject.getArea();
    console.log(testarea);
    kakao.maps.event.addListener(testobject, ‘click’, function(mouseEvent){
    console.log(‘listener is added’);
    opentest();
    });
    이렇게 해봤는데 testarea 가 code error라고 나옵니다. 아마 getOverlay의 return값을 제가 잘 못 이해하고 있는듯 합니다.

manager.getOverlays([kakao.maps.drawing.OverlayType.POLYGON]); 의 리턴값은
{ polygon: Array(..)}이기 때문에 반복문을 돌며 각 polygon에 이벤트를 걸어주어야 합니다.

아래 코드도 참고해주세요.

// 위에 작성한 옵션으로 Drawing Manager를 생성합니다
var manager = new kakao.maps.drawing.DrawingManager(options);

var path = [
    new kakao.maps.LatLng(33.452344169439975, 126.56878163224233),
    new kakao.maps.LatLng(33.452739313807456, 126.5709308145358),
    new kakao.maps.LatLng(33.45178067090639, 126.5726886938753) 
];
    
// 그리기 관리자에 폴리곤을 추가한다 
manager.put(kakao.maps.drawing.OverlayType.POLYGON, path);

// 지도의 그린 요소 중 폴리곤 객체를 반환합니다. ex){polygon:[...,...]}    
var overlays = manager.getOverlays([kakao.maps.drawing.OverlayType.POLYGON]);

// 폴리곤 배열값을 담습니다.
var polygons = overlays.polygon;
    
// polygon에 클릭 이벤트를 줍니다.
for(var i=0; i<polygons.length; i++){
    var polygon = polygons[i];    
    kakao.maps.event.addListener(polygon, 'click', function(mouseEvent){
        console.log('listener is added');
    });
}
1개의 좋아요