2016-05-13 4 views
0

私はOpenlayers 3のWebマッピングアプリケーションを開発中です。機能(ポイント)を地図上に表示します。クリックすると、ボタンを追加したポップアップが表示されます。その後Ol3ポップアップでjavascriptで作成されたボタンにクリックイベントを追加する方法はありますか?

map.on('singleclick', function(evt) { 
popup.hide(); 
popup.setOffset([0, 0]); 

// Attempt to find a feature in one of the visible vector layers 
var feature = map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) { 
return feature; 
}); 
if (feature) { 
    var coord = feature.getGeometry().getCoordinates(); 
    var props = feature.getProperties(); 
    var info = "<input type='button' id='popupButton' value='Get here ?' />" ; 
    // Offset the popup so it points at the middle of the marker not the tip 
    popup.setOffset([0, -22]); 
    popup.show(coord, info); 
    } 
}); 

私はstackoverflowの中にいくつかの同様の質問を見て、イベントが発生したとき、私は機能を起動するには、このコードを試してみました:ここにポップアップし、最初のボタンのコードがある問題

$(document).on("click", "#popupButton", function(){ 
     alert(nearest_feature(my_position)); 
}); 

私は、ドキュメントを '#map'(マップが表示されているdiv)で置き換えようとしましたが、まだ何も表示されませんでした。

ポップアップ内のそのボタンのイベントをトリガーするにはどうすればよいですか?

答えて

0

私はあなたがそれを使用していると思うように実装しようとしました。

<div id='container'> 
<button id="AddDynamicBtn"> 
Add Dynamic Btn 
</button> 
</div> 


$(document).ready(function() { 
    $('#container').on('click','#DynamicBtn', function() { 
    alert('TEST'); 
    }); 
    $('#AddDynamicBtn').on('click',function() { 
     $('#container').append('<button id="DynamicBtn">Dynamic Btn</button>'); 
    }); 

}); 

https://jsfiddle.net/d9eubeeu/

+0

私が試した最初のものでしたが、イベントがまだ私は「それだけでポップアップがにISNことを言及するのを忘れ –

+0

をトリガしなかったことをHTML要素では、javascriptファイル内にol.Overlay.Popup();と宣言しました。 Openlayers 3から。 この方法でボタンを追加する方法がわかりません –

0

私は@JesperHøjerと@Mariusは、私はこれを追加しましたので、それが最初に動作しませんでしたその答えに与えたコードを使用:

map.on('singleclick', function(evt){ 
--------- 
$("#popupButton").on("click", function(){ 
     alert(nearest_feature(my_position)); 
}); 
} 

し、それを今すぐイベントが発生しました

+0

しかし、今あなたはmaplistをクリックするたびにeventlistenerを設定していますか? –

+0

$( "#popupButton")$(document).ready(function){ アラート(nearest_feature(my_position)); }); map.on. –

+0

地図上の地物をクリックしてから#popupButtonを作成した場合にのみポップアップが表示されるので、今は問題ないと思いますが、何か不足していますか? –

0

イベントのバブリングが行われている可能性がありますか?すでに地図上にリスナーがあります。ポップアップにも潜在的に1つが存在する可能性があります。あなたはあなたの関数へのパラメータとしてイベントに渡す場合は、使用できます。

event.stopPropagation(); 
関連する問題