身体丢失MouseDown事件与的OpenLayers

问题描述:

我有一个鼠标按下事件添加到<body>使用jQuery的.bind()功能如下面的代码:身体丢失MouseDown事件与的OpenLayers

$( '身体')绑定( '鼠标按下',函数(){警报(1)});

它可以在页面的任何地方完美地工作。但它会被(???)“地图”格挡住。 (我不知道它是否足够精确地说“封锁”或没有,出来跟我的感觉的话)

和功能.mousedown()不工作也不:

$( '主体')鼠标按下(函数(){警报(1)})。

以下是使用的OpenLayers地图div:

<script type='text/javascript'> 
var map; 
function init() { 
    var controls_array = [ 
     new OpenLayers.Control.Navigation({}), 
     new OpenLayers.Control.PanZoomBar({}), 
     new OpenLayers.Control.LayerSwitcher(), 
    ]; 
    var mapOptions = { 
     controls: controls_array, 
     projection: new OpenLayers.Projection("EPSG:900913") 
    }; 
    map = new OpenLayers.Map('map', mapOptions); 

    var googleLayer = new OpenLayers.Layer.Google(
     'Google Map Layer', 
     { 
      numZoomLevels: 20, 
      isBaseLayer: true, 
      sphericalMercator: true, 
      projection: "EPSG:900913" 
     } 
    ); 
    map.addLayer(googleLayer); 
    map.zoomToExtent(
     new OpenLayers.Bounds(3235795.723665,493480.6015713, 
     3716431.757455,911132.5240634), true 
    ); 
} 
</script> 
<body onload='init();'> 
    <div id="map" style='width: 800px; height: 700px;'></div> 
</body> 

的问题是,它的作品“地图”分区外,但是当在地图上我“鼠标按下”,它没有警报信息。

但是,下列事件“鼠标松开”这两个作品nomatter内/“地图”的div外:

$('body').bind('mouseup', function(){alert(1)}); 
$('body').mouseup(function(){alert(1)}); 

我想这是因为OpenLayers.Controls.DragPan()功能与mousedown事件反应。

那么我该如何解决它呢?让事件通过到<body>

+0

检查()'功能,如果有任何与'.preventdefault'或'线.stopPropagation',删除它,然后测试 – muneebShabbir

+0

感谢您的提醒,我看到有'OpenLayers.Event.preventDefault(evt);'在'OpenLayers.Handler.Drag'中的'dragstart'以阻止文档拖动,但似乎我不应该删除它。 是否有另一种方式来处理它? –

的OpenLayers有自己的事件监听,所以你需要覆盖它们,例如在`OpenLayers.Controls.DragPan

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

感谢您的回答,但仍在努力。 –