我有一个包含大量标记和复杂弹出内容的地图,由一个名为popupcontent()的函数生成,当使用oneachfeature函数对地图上的所有标记进行计算时,需要花费大量时间进行计算。
有没有办法在pupop中实现某个函数的实际打开而不是在开头生成所有弹出窗口?这会加快加载时间。
到目前为止,这是我的代码(我正在使用markerclusterer扩展):
var geojson1 = L.geoJson(bigJson,{
onEachFeature: function (feature, layer) {
layer.bindPopup(popupcontent(feature,layer));
}
})
.addLayer(tiles);
var markers = L.markerClusterGroup({
spiderfyOnMaxZoom: true,
showCoverageOnHover: true,
zoomToBoundsOnClick: true,
disableClusteringAtZoom: 10,
removeOutsideVisibleBounds:true
});
var geoJsonLayer = L.geoJson(bigJson, {
});
markers.addLayer(geojson1);
map.addLayer(markers);
map.fitBounds(markers.getBounds());
答案 0 :(得分:4)
我认为您正在寻找的是这样的(如果您的图层是interactive layer):
onEachFeature: function (feature, layer) {
layer.once("click", ()=>{
layer.bindPopup(popupcontent(feature,layer)).openPopup();
});
}
使用“once”而不是“on”,因此只有在单击图层时才会绑定一次。