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 加载内容,然后在它返回时将其 setContent 到里面。

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() 。 它将在弹出窗口打开时调用,并且必须返回StringHTMLElement 。 因此,您的代码的另一个版本(不指定哪种事件类型导致弹出窗口打开):

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为我省去了很多麻烦。 谢啦

@chriszrc无法使用 API 中的 JSON 数据执行此操作。

没有弹出窗口出现。

示例数据如下所示:
{"datapoint":[{"intensity":92,"latitud":"18.52","longitud":"82.4767"},{"intensity":68,"latitud":"17.7375","longitud":"82.8347"}]}

我试图在弹出窗口中显示强度。

这是我尝试过的:

``
标记.bindPopup((popup)=>{
var el = document.createElement('div');
el.classList.add("我的班级");
$.getJSON(" http://www.example.com/data ",function(datapoint){
el.innerHTML = '

' + 数据点[i].强度 + '

';
});
 return el;

@kunaldhariwal你需要发布一个 plunkr 或其他东西,没有例子就不可能说。 不过,对于初学者来说,您正在加载代码片段(“http://www.example.com/data”)的 url 似乎没有返回有效的 json-

@chriszrc虽然这是一个示例 URL。 由于一些明显的原因,我无法透露确切的网址。
对不起,我会想办法解决的。

此页面是否有帮助?
0 / 5 - 0 等级