2013-02-01 50 views
0

我想在openlayers中彈出一個click事件。現在,我在此功能的硬編碼的onclick這樣做:ClickHandler在OpenLayers中的功能

var vector = new OpenLayers.Layer.Vector("Points",{ 
      eventListeners:{ 
       'featureselected':function(evt){ 
        var feature = evt.feature; 
        var popup = new OpenLayers.Popup.Anchored("popup", 
         OpenLayers.LonLat.fromString(feature.geometry.toShortString()), 
         new OpenLayers.Size(275,71), 
         '<div id="pincontent" onclick="pindetails()"><h3>' + feature.attributes.title +'</h3><div style="display: none;" id="pindescription">'+ feature.attributes.content +'</div></div>', 
         null, 
         false 
        ); 
        popup.imageSrc = 'img/popup.png'; 
        popup.autoSize = false; 
        popup.backgroundColor = 'transparent'; 
        var offset = {'size':new OpenLayers.Size(0,0),'offset':new OpenLayers.Pixel(-74,-10)}; 
        popup.anchor = offset; 
        popup.panMapIfOutOfView = true; 
        popup.imageSize = new OpenLayers.Size(275,71); 
        popup.relativePosition = "br"; 
        popup.calculateRelativePosition = function() { 
         return 'tr'; 
        }; 
        feature.popup = popup; 
        map.addPopup(popup); 
    //adding event listener 
        map.events.register('mousedown', popup, function(evt){alert('help')}, false); 
       }, 
       'featureunselected':function(evt){ 
        var feature = evt.feature; 
        map.removePopup(feature.popup); 
        feature.popup.destroy(); 
        feature.popup = null; 
       } 

      } 
     }); 

但更主要的OpenLayers DIV被攔截的點擊,所以我必須點擊兩次..我不知道是否有禁用方法這個。我查看了openLayers文檔,並且我不確定如何使用它們的API來添加事件偵聽器來單擊某個功能。

回答

2

也許你應該在onclick函數調用後添加return false;來停止事件傳播(這是默認值)。 也可以看看在冊方法:

this.map.events.register('click', this.map, function handleMapClick(e) { ... } 

http://dev.openlayers.org/releases/OpenLayers-2.6/doc/apidocs/files/OpenLayers/Events-js.html#OpenLayers.Events.register

+0

在'返回FALSE',我也嘗試添加'map.events.register( '鼠標按下',popcontent,功能(EVT沒有骰子){alert('help')},false);'對於featureselect和其他幾個地方的函數,不能觸發它。文檔abt事件很稀少 – Damon

+0

這可能與z索引 –

+1

修復它與'OpenLayers.Event.observe(popcontent,'mousedown',函數(evt){pindetails()},false); '感謝events.register提示 – Damon