使用leaflet时,我在向地图添加图层时调用以下函数。此功能为每个功能添加弹出窗口。
当我点击它们时它们会起作用,但我无法让bindPopup.openPopup()
工作,所以它会打开而不会被点击。
没有任何错误,但弹出窗口没有被点击就打开了。
var popupToOpen = null;
var clickedLocationId = 0;
function onEachFeature(feature, layer) {
if (feature.properties && feature.properties.UserName) {
if (feature.properties.MarkerId == clickedLocationId) {
layer.bindPopup("<div id='unlockLocationId'>" + feature.properties.MarkerId + "</div><div>" + feature.properties.UserName + "</div>").openPopup();
} else {
layer.bindPopup("<div id='unlockLocationId'>" + feature.properties.MarkerId + "</div><div>" + feature.properties.UserName + "</div>");
}
}
}
答案 0 :(得分:0)
我已经尝试过你尝试的方式,但弹出窗口并没有打开。好吧,你可以尝试以另一种方式打开弹出窗口。
创建一个函数,在其中迭代geojson图层并在id匹配时打开弹出窗口。这是函数
function openMarkerPopup(id){
geojson.eachLayer(function(feature){
if(feature.feature.properties.id==id){
feature.openPopup();
}
});
}
只需将所需的ID传递给此功能即可。
openMarkerPopup(108);
这是一个有效的fiddle