身体丢失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>
?
答
的OpenLayers有自己的事件监听,所以你需要覆盖它们,例如在`OpenLayers.Controls.DragPan
map.events.listeners.mousedown.unshift({
func: function(){
alert('hola muheres');
}
});
+0
感谢您的回答,但仍在努力。 –
检查()'功能,如果有任何与'.preventdefault'或'线.stopPropagation',删除它,然后测试 – muneebShabbir
感谢您的提醒,我看到有'OpenLayers.Event.preventDefault(evt);'在'OpenLayers.Handler.Drag'中的'dragstart'以阻止文档拖动,但似乎我不应该删除它。 是否有另一种方式来处理它? –