在实际需要时点击填写传单弹出窗口
Fill Leaflet popup on click when acctually needed
我有一张地图,其中包含很多标记和复杂的弹出内容,由名为 popupcontent() 的函数生成,当使用 oneachfeature 对地图上的所有标记完成计算时需要花费大量时间功能。
有没有办法只在实际打开时触发弹出窗口中的函数,而不是一开始就生成所有弹出窗口?这会大大加快加载时间。
到目前为止,这是我的代码(我正在使用 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());
我想你要找的是这样的东西(如果你的图层是 interactive layer):
onEachFeature: function (feature, layer) {
layer.once("click", ()=>{
layer.bindPopup(popupcontent(feature,layer)).openPopup();
});
}
使用"once"而不是"on",这样当图层被点击时它只会被绑定一次。
我有一张地图,其中包含很多标记和复杂的弹出内容,由名为 popupcontent() 的函数生成,当使用 oneachfeature 对地图上的所有标记完成计算时需要花费大量时间功能。
有没有办法只在实际打开时触发弹出窗口中的函数,而不是一开始就生成所有弹出窗口?这会大大加快加载时间。
到目前为止,这是我的代码(我正在使用 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());
我想你要找的是这样的东西(如果你的图层是 interactive layer):
onEachFeature: function (feature, layer) {
layer.once("click", ()=>{
layer.bindPopup(popupcontent(feature,layer)).openPopup();
});
}
使用"once"而不是"on",这样当图层被点击时它只会被绑定一次。