0

オープン ストリート マップのイメージ オーバーレイを作成しようとしています。次のようになります。

プレビュー http://www.wildurb.at/urbwalker-app/preview.png

私が直面している問題は、画像の透過領域を介してイベントを委任できないことです。

イベントをトリガーするために使用しようとしたコードは次のとおりです。

    <img id="overlay" style="position:absolute;" src="overlay.png"/>
    <div id="map"></div>

 

    #overlay {
            position:absolute;       
    }
    #map {
            position:absolute;
            width:300px;
            height:300px;
    }

 

    initMap();

    $('#overlay').bind({
            'mousedown' : function(event) {
                    event.preventDefault(); //no image dragging
                    $('#OpenLayers.Map_4_OpenLayers_ViewPort').trigger(event);
            }
    }
    $('#OpenLayers.Map_4_OpenLayers_ViewPort').bind('mousedown', function(event) {
            console.log(event);
    }

mousedown は起動されず、ここで使用するセレクターがわかりません。オーバーレイで発生するすべてのイベントをマップに渡す方法はありますか?

前もって感謝します

よろしく カオス

- - 編集 - -

私はフィドルを作成しました

4

2 に答える 2

1

bind以下のようなAPIを使用します。次に、マウスダウンをトリガーします

$('#overlay').bind('mousedown',function(event) {
                alert("overlayfired");
                event.preventDefault(); //no image dragging
                $('#OpenLayers.Map_4_OpenLayers_ViewPort').mousedown();
        }
);

参考:http ://api.jquery.com/bind/

デモ: http://jsfiddle.net/KwLce/

于 2012-10-19T12:33:24.050 に答える
0

pointer-events:none; を使用できることがわかりました。Chrome firefox と saferie の場合、ie と Opera の svg を使用した回避策

var map;

$(document).ready(function() {
    map = new OpenLayers.Map('map');
    layer = new OpenLayers.Layer.OSM("Simple OSM Map");
    map.addLayer(layer);

    map.setCenter(
        new OpenLayers.LonLat(-71.147, 42.472).transform(
        new OpenLayers.Projection("EPSG:4326"),
        map.getProjectionObject()),
        12
    );

    if($.browser.msie || $.browser.opera) {
        var over = '<svg id="overlay"><image width="300" height="300" xlink:href="overlay.png"></image></svg>';
    } else {
        var over = '<img id="imgOverlay" src="overlay.png"/>';
    }
    $('body').append(over);
});

実用的なソリューションについては、このフィドルを表示してください

于 2012-10-19T19:11:43.483 に答える