2013-06-29 2 views
4

Я использую OpenLayers 2.13. Я хочу обнаружить mousedown, mousemove, mouseup событиях, когда мышь превышает OpenLayers.Map, поэтому я написал следующий код.Как получить событие «mousedown» на OpenLayers.Map?

var map = new OpenLayers.Map("map",{controls:[ 
    new OpenLayers.Control.Navigation(), 
    new OpenLayers.Control.ArgParser(), 
    new OpenLayers.Control.Attribution() 
]}); 
var events = map.events; 
events.register("mousedown",map,function(e){ 
    console.log("mousedown"); 
}); 
events.register("mousemove",map,function(e){ 
    console.log("mousemove"); 
}); 
events.register("mouseup",map,function(e){ 
    console.log("mouseup"); 
}); 

В результате mousemove и mouseup не обнаружено, но не mousedown с.

В нем указано here, что mousemove и mouseup поддерживается, но mousedown нет. Есть ли какие-либо хаки, которые я могу применить для обнаружения событий mousedown без изменения сценария OpenLayers?

ответ

8

Добавить 4-й аргумент как true.

var events = map.events; 
events.register("mousedown",map,function(e){ 
    console.log("mousedown"); 
    return true; 
},true); // This argument is new 

Службы прослушивают событие mousedown. Один из них будет есть событие, когда обнаружено [перетаскивание карты], поэтому событие mousedown никогда не дойдет до последнего слушателя.

Без 4-го аргумента events.register() добавит слушателя в конец цепи прослушивания событий. С 4-м аргументом он добавит его к первому.

0

Простой способ сделать это:

map.events.listeners.mousedown.unshift({ 
    func: function(){ 
     alert('hola muheres'); 
    } 
});