如何从其标记更新弹出内容?


11

我这样做是用Leaflet创建了一个弹出窗口:

marker.bindPopup(content).openPopup();

之后如何更新content值?

我想从标记中执行此操作,如下所示:

marker.updatePopup(newContent);

Answers:


9

我想您希望在发生某些事件(例如,鼠标悬停,上下文菜单或其他任何事件)后更改内容。

为此,您可以使用以下代码:

//marker creation
var marker = L.marker([44.63, 22.65]).bindPopup('something').addTo(map);
marker.openPopup();

//changing the content on mouseover
marker.on('mouseover', function(){
    marker._popup.setContent('something else')
});

如您所见,您可以使用marker._popup方法访问所需标记的弹出窗口,然后使用setContent方法更改其中的文本。

popup.setContent方法参考

这是在Plunker上演示此代码的一些代码:http ://plnkr.co/edit/vjS495QPXiJpKalrNpvo?p=preview


我发现在鼠标悬停时需要执行以下操作:this.getPopup.setContent('blah blah blah');
TheSteve0


3

可能迟到了,但对于其他人,我认为最好的方法就在这里

http://jsfiddle.net/cPTQF/

$('button').click(function() {
   // Update the contents of the popup
   $(popup._contentNode).html('The new content is much longer so the popup should update how it looks.');

   // Calling _updateLayout to the popup resizes to the new content
   popup._updateLayout();

   // Calling _updatePosition so the popup is centered.
   popup._updatePosition();
   return false;
});

我知道这很旧,但是它出现在我的Google搜索结果中,因此也可能对其他人...此方法的问题是:如果当前未打开弹出窗口,则单击#1,然后单击该按钮(或其他方法)您绑定)不执行任何操作。其次,如果您放弃弹出窗口并再次单击它,您将获得原始内容,而不是新内容!
DR

1

您可以通过以下方式获取弹出内容:

marker.getPopup().getContent();

设置内容:

marker.getPopup().setContent("123");
marker.getPopup().update();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.