こんにちは、
環境
リーフレット用にいくつかのAngularJSディレクティブを作成しました。 1つはマップ用、1つはレイヤー用、1つはマーカー用、もう1つはポップアップ用です。
ポップアップの角度ディレクティブは、関連付けられるマーカーをリッスンしています。
.bindPopup(popup)
.on('dragstart', function () {
console.log(dragstart");
})
.on('dragend', function () {
console.log("dragend!");
})
.on('popupopen', function (popup) {
console.log("popup opened !", popup);
});
期待される
すべてのイベントを発生させる必要があります。
結果
popupevent
は解雇されませんか? 他は解雇されます。
リーフレット:0,7,2
OS:Windows 7
ブラウザ:Google Chrome 37&Firefox 32
いくつかのテストの後、問題はポップアップカスタムライブラリから発生しました。
コメントavezvous fait?
2014-09-22 11:39 GMT + 02:00ピエールバロン[email protected] :
クローズ#2907https ://github.com/Leaflet/Leaflet/issues/2907。
—
このメールに直接返信するか、GitHubで表示してください
https://github.com/Leaflet/Leaflet/issues/2907#event-168346883 。
これを行うと、ここに問題があります
var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
marker.bindPopup("my content");
bindPopup()
メソッドは、StringオブジェクトまたはPopupオブジェクトのいずれかを持つことができます。 この例では、文字列を渡すと、メソッドが適切なポップアップを作成します。 カスタムポップアップ要素を渡す場合は、前にポップアップにマーカーを追加する必要があります。 それ以外の場合、ポップアップにソース要素が含まれることはありません。
最終的な解決策。
var coordinates = {};
var markerOptions = {};
var marker = L.marker(coordinates), markerOptions );
var popupOptions = {};
// you have to append the marker on the creation of the popup
// so that the popup element will have the marker source.
var popup = L.popup(popupOptions, marker );
// and this will work !
marker
.bindPopup(popup)
.on('dragstart', function () {
console.log(dragstart");
})
.on('dragend', function () {
console.log("dragend!");
})
.on('popupopen', function (popup) {
console.log("popup opened !", popup);
});
最も参考になるコメント
これを行うと、ここに問題があります
bindPopup()
メソッドは、StringオブジェクトまたはPopupオブジェクトのいずれかを持つことができます。 この例では、文字列を渡すと、メソッドが適切なポップアップを作成します。 カスタムポップアップ要素を渡す場合は、前にポップアップにマーカーを追加する必要があります。 それ以外の場合、ポップアップにソース要素が含まれることはありません。最終的な解決策。