admin管理员组

文章数量:1277475

I'm using OpenLayers 2.13. I want to detect mousedown, mousemove, mouseup events while mouse is over OpenLayers.Map, so I wrote the following code.

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");
});

As a result, mousemove and mouseup is detected but no mousedowns.

It says here that mousemove and mouseup is supported but mousedown is not. Is there any hacks I can apply to detect mousedown events without modifying OpenLayers script?

I'm using OpenLayers 2.13. I want to detect mousedown, mousemove, mouseup events while mouse is over OpenLayers.Map, so I wrote the following code.

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");
});

As a result, mousemove and mouseup is detected but no mousedowns.

It says here that mousemove and mouseup is supported but mousedown is not. Is there any hacks I can apply to detect mousedown events without modifying OpenLayers script?

Share Improve this question asked Jun 29, 2013 at 10:29 Izumi KawashimaIzumi Kawashima 1,22713 silver badges26 bronze badges
Add a ment  | 

4 Answers 4

Reset to default 8

Add the 4th argument as true.

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

There are several event listeners already listening the mousedown event. One of them will eat the event when [map drag start] is detected, so the mousedown event will never reach the last listener.

Without the 4th argument, events.register() will add the listener to the end of the event-listening chain. With the 4th argument, it will add it to the first.

There is also a registerPriority() which adds to the front of the list:

http://dev.openlayers/docs/files/OpenLayers/Events-js.html#OpenLayers.Events.registerPriority

if you using open layer API > 5 then us can use below code

 map.on('pointerdown', function(){
      console.log("mousedown");

    });

Simple way to make it:

map.events.listeners.mousedown.unshift({ 
    func: function(){
        // code
    }
});

本文标签: javascriptHow to get mousedown event on OpenLayersMapStack Overflow