身体缺少与Openlayers的mousedown事件

时间:2013-07-09 04:02:43

标签: dom javascript-events jquery openlayers

我使用jQuery的<body>函数向.bind()添加了一个mousedown事件,如下面的代码:

  

$('body')。bind('mousedown',function(){alert(1)});

它在页面的任何位置都能完美运行。但它会被(???)一个“map”div阻止。 (我不知道它是否足够精确地说“被阻止”,这个词出现了我的感觉)

并且函数.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>

问题是它在“map”div之外工作,但是当我在地图上“mousedown”时,它不会提示信息。

但是,以下事件“mouseup”在“map”div内部/外部都无效:

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

我想这是因为OpenLayers.Controls.DragPan()函数与mousedown事件做出反应。

那我该如何解决呢?让事件传递到<body>

1 个答案:

答案 0 :(得分:0)

OpenLayers有自己的eventListener,因此您需要覆盖它们,例如

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