[英]How to get `mousedown` event on OpenLayers.Map?
我正在使用 OpenLayers 2.13。 我想在鼠標懸停在OpenLayers.Map
上時檢測mousedown
、 mousemove
、 mouseup
事件,所以我編寫了以下代碼。
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
。
它在這里說支持mousemove
和mouseup
但不支持mousedown
。 是否有任何技巧可以在不修改 OpenLayers 腳本的情況下應用來檢測mousedown
事件?
將第四個參數添加為true
。
var events = map.events;
events.register("mousedown",map,function(e){
console.log("mousedown");
return true;
},true); // This argument is new
有幾個事件偵聽器已經在偵聽mousedown
事件。 其中一個會在檢測到 [map drag start] 時吃掉該事件,因此mousedown
事件永遠不會到達最后一個偵聽器。
如果沒有第四個參數, events.register()
會將監聽器添加到事件監聽鏈的末尾。 使用第四個參數,它將添加到第一個參數。
還有一個 registerPriority() 添加到列表的前面:
http://dev.openlayers.org/docs/files/OpenLayers/Events-js.html#OpenLayers.Events.registerPriority
如果您使用開放層 API > 5 那么我們可以使用以下代碼
map.on('pointerdown', function(){
console.log("mousedown");
});
簡單的制作方法:
map.events.listeners.mousedown.unshift({
func: function(){
// code
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.