是否在任何地方记录了如何在单击时填充标记弹出窗口的内容?
另外,是否可以为所有可见标记填充弹出内容? 我正在使用 Leaflet.markercluster,当我放大到足以看到单个标记时,只加载弹出内容会很好。
我对 js 不是很好,我的搜索没有找到任何东西,但我觉得我想要做的事情是可能的......?
再次感谢!
如果您显式创建弹出窗口,则可以设置内容:
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
}
希望有帮助!
谢谢,我要研究这个并实施!
这在谷歌上得到了很好的引用,所以这里是供人们寻找的:
这是传单 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为我省去了很多麻烦。 谢啦
@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 = '
return el;
@kunaldhariwal你需要发布一个 plunkr 或其他东西,没有例子就不可能说。 不过,对于初学者来说,您正在加载代码片段(“http://www.example.com/data”)的 url 似乎没有返回有效的 json-
@chriszrc虽然这是一个示例 URL。 由于一些明显的原因,我无法透露确切的网址。
对不起,我会想办法解决的。
最有用的评论
这在谷歌上得到了很好的引用,所以这里是供人们寻找的:
这是传单 0.7.3 的工作示例: