2016-06-02 4 views
-1

일부 오버레이 (텍스트 콘텐츠가있는 DIV)가있는지도가 있습니다.Openlayer 3 맵에 이벤트를 올바르게 전달하는 방법은 무엇입니까?

map.on('click', function(evt) { 
    var click_coordinates = evt.coordinate; 
}); 

사용자가 오버레이를 클릭 할 때까지 제대로 작동합니다. 이 경우 이벤트는 오버레이에 의해 잡힐 가능성이 있지만지도에 전파되지는 않습니다. 상황에 따라 문제가 없지만 때로는지도에서 처리해야하는 이벤트가 필요합니다. 그래서 오버레이에 클릭 이벤트를 잡을 내가 시도

map.dispatchEvent("click"); 

좋은 것은 불행히도 그것은 "다른"개체는 originaly으로보다의지도에 이벤트가 시작된다하여지도 요소에 보내려면 어떻게합니까 그것은 "좌표"속성과 다른 Openlayers 물건을 포함하고 있지 않습니다. 지도를 자연스럽게 클릭하는 것과 같은 방법으로 이벤트를 전달하는 방법이 있습니까?

답변

0

당신이 달성 할 수 단순히

// content is ol.Overlay#element therefore a DOM element 
content.addEventListener('click', function(evt){ 
    map.dispatchEvent(evt); 
}); 

map.on('click', function(evt){ 
    var pixel = [evt.clientX, evt.clientY]; 
    var coord = map.getCoordinateFromPixel(pixel); 

    console.info('event', evt); 
    console.info('pixel', pixel); 
    console.info('coord', coord); 
}); 

또는 : 아마, 나는이 점을 놓치고

content.addEventListener('click', function(evt){ 
    var pixel = [evt.clientX, evt.clientY]; 
    var coord = map.getCoordinateFromPixel(pixel); 

    console.info('event', evt); 
    console.info('pixel', pixel); 
    console.info('coord', coord); 
}); 
+0

을하지만,이 경우에도 객체 나에게 대신 OL의 표준 이벤트 객체를 줄 것이다 (예를 들어, EVT . 좌표가 누락되었습니다.) 즉,지도 클릭 및 객체 클릭을 처리하는 데 동일한 절차를 사용할 수 없거나 map.click 프로 시저에 전달하기 전에 객체 클릭 이벤트를 미리 변형해야합니다 (예 : 좌표를 가져 오는 var coord = map.getCoordinateFromPixel (픽셀)). . 그래서 OL이 자연의 방식을 취하고 있다고 믿는 것처럼 "지도에서 자연 클릭과 동일한 방식으로 이벤트를 파견하는 방법"에 대해 묻는 것입니다. – user3523426

+0

그러면 대답은 ** 아니오, 할 방법이 없습니다 **. –

+1

내 대답은 "네가 ** ** 이걸로 달성 할 수있다 ..." –