2017-03-10 15 views
2

나는 openlayers 3.20.0을 사용하고 있습니다. 아래 링크는 작은 예를 보여줍니다. '단일 클릭'이벤트를 억제하는 방법지도에서 그림을 그리는 동안 열린 레이어 3에서

click-here.

내가

this.map = new ol.Map({ 
    layers : [ somelayer ], 
    target : 'map', 
    view : new ol.View({ 
     center : [ -11000000, 4600000 ], 
     zoom : 4 
    }) 
}); 
여기

내가지도에 'singleclick'와 'dblclick'를 첨부으로지도 개체가

(예에서 로그 콘솔 참조).

그리고 또한 나는이 방출 'drawstart'와 'drawend'이벤트

this.draw = new ol.interaction.Draw({ 
    features : features, 
    type : "Point" 
}); 

아래로,지도에 상호 작용을 그릴 수 있습니다.

그러나 지점을 그리면지도에서 '단일 클릭'이벤트가 발생합니다. 어떻게 그리면서이 작업을 '싱글 클릭'으로 내 보내지 못하게 할 수 있습니까?

그리는 동안 'singleclick'이벤트 리스너를 제거 할 수 있지만 리스너를 제거하고 다시 추가하고 싶지는 않습니다.

이 이벤트를 억제하는 다른 방법이 있습니까?

+0

'event.stopPropagation를(); '이 사용합니다. – Jai

+0

그 중 하나도 시도했지만 작동하지는 않습니다. –

+1

'singleclick'이 활성화되어 있거나 활성화되어 있지 않으면 아무 것도 변경되지 않으므로 억제하려는 대상이 명확하지 않습니다. 하지만 당신이'event.preventDefault()'를 찾고 있다고 생각합니다. –

답변

1

동일한 문제가있었습니다. unByKey 메서드를 사용하여이 문제를 해결했습니다. 모든 map.on 메소드는 고유 키를 리턴합니다. map.unByKey (singleclick_key)를 사용하여 단일 클릭 이벤트를 중지 할 수 있습니다. 더 많은 시간에 도면을 완성한 후에 초기화 할 수 있습니다.

var singleclick_key= map.on('singleclick', function(evt){ 
//statements 
} 

을하고 다음 명령을 사용하여이 이벤트를 제거 할 수 있습니다 :

그래서,이 같은 뭔가를 찾고있다

map.unByKey(singleclick_key);