Leaflet: ajaxを介してポップアップコンテンツを設定する方法のドキュメント

作成日 2012年08月27日  ·  10コメント  ·  ソース: Leaflet/Leaflet

マーカーポップアップをクリックしたときにその内容を入力する方法はどこかに文書化されていますか?

また、表示されているすべてのマーカーのポップアップコンテンツにデータを入力することはできますか? Leaflet.markerclusterを使用していますが、個々のマーカーが表示されるようにズームインした場合にのみ、ポップアップコンテンツを読み込むと便利です。

私はjsがあまり得意ではなく、検索で何も思いつかなかったのですが、私がやろうとしていることは可能だと感じています...?

再度、感謝します!

最も参考になるコメント

これはグーグルでよく参照されていたので、ここに探している人々のためにあります:

  • ポップアップを手動で作成してmap.openPopupを呼び出す必要はありません。 マーカーがある場合は、必要に応じてbindPopup()とgetPopup()を使用できます。
  • popup.update() http://leafletjs.com/reference.html#popup-updateを呼び出すことを忘れないでください

リーフレット0.7.3の実際の例を次に示します。

var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup("Loading...")
marker.on('click', function(e) {
    var popup = e.target.getPopup();
    var url="DYNAMIC_CONTENT_URL";
    $.get(url).done(function(data) {
        popup.setContent(data);
        popup.update();
    });

全てのコメント10件

ポップアップを明示的に作成する場合は、コンテンツを設定できます。

var popup = new L.Popup();
popup.setLatLng(latlng);
popup.setContent('seme content');
map.openPopup(popup);

http://leaflet.cloudmade.com/reference.html#popup

したがって、マーカーの「クリック」イベントをリッスンします(これはMarkerClusterGroupで設定できます)。 次に、起動時に、読み込みメッセージを含むポップアップを作成し、ajaxを介してコンテンツを読み込み、戻ってきたときにコンテンツを内部に設定します。

var group = new L.MarkerClusterGroup();
group.on('click', showMarker);

function showMarker(marker) {
//use marker.layer for the marker IIRC
//Create popup here and fetch content
}

お役に立てば幸いです。

おかげで、私はこれを研究して実装するつもりです!

これはグーグルでよく参照されていたので、ここに探している人々のためにあります:

  • ポップアップを手動で作成してmap.openPopupを呼び出す必要はありません。 マーカーがある場合は、必要に応じてbindPopup()とgetPopup()を使用できます。
  • popup.update() http://leafletjs.com/reference.html#popup-updateを呼び出すことを忘れないでください

リーフレット0.7.3の実際の例を次に示します。

var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup("Loading...")
marker.on('click', function(e) {
    var popup = e.target.getPopup();
    var url="DYNAMIC_CONTENT_URL";
    $.get(url).done(function(data) {
        popup.setContent(data);
        popup.update();
    });

bindPopup()関数を渡すこともできることに注意してください。 ポップアップが開かれたときに呼び出され、 StringまたはHTMLElementを返す必要があります。 したがって、コードの別のバージョン(どのイベントタイプがポップアップを開くかを指示しません):

var marker = L.marker([48.859085, 2.347403]);
marker.bindPopup(function() {
    var el = $('<div/>');

    $.get("DYNAMIC_CONTENT_URL").done(function(data) {
        el.setContent(data);
        popup.update();
    });

    return el;
});

誰かが共有したいと思うこの実例を持っていますか?

@chriszrcは私に多くのトラブルを救った。 ありがとう

@chriszrcAPIからのJSONデータを使用してそれを行うことができません。

ポップアップは表示されません。

サンプルデータは次のようになります。
{"datapoint":[{"intensity":92,"latitud":"18.52","longitud":"82.4767"},{"intensity":68,"latitud":"17.7375","longitud":"82.8347"}]}

ポップアップに強度を表示しようとしています。

これは私が試したものです:

`` `
marker.bindPopup((popup)=> {
var el = document.createElement( 'div');
el.classList.add( "my-class");
$ .getJSON( " http://www.example.com/data "、function(datapoint){
el.innerHTML = '

'+ datapoint [i] .intensity +'

';
});
 return el;

@kunaldhariwal例なしでは言うことのできない、プランカーか何かを投稿する必要があります。 ただし、初心者の場合、コードスニペットをロードしているURL( "http://www.example.com/data")は有効なjsonを返すようには見えません-

@chriszrcこれはURLの例です。 いくつかの明らかな理由で、正確なURLを明らかにすることはできません。
申し訳ありませんが、私は何かを理解しようとします。

このページは役に立ちましたか?
0 / 5 - 0 評価