javascript-根据需要在点击时填写传单弹出窗口

我有一个包含许多标记和复杂弹出内容的地图,该地图由名为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());

演示:http://stefang.cepheus.uberspace.de/farmshops/

解决方法:

我认为您正在寻找的是这样的东西(如果您的图层是interactive layer):

onEachFeature: function (feature, layer) {
  layer.once("click", ()=>{
    layer.bindPopup(popupcontent(feature,layer)).openPopup();
  });
}

使用“一次”而不是“在”,这样在单击图层时它只会被绑定一次.

上一篇:Leaflet插件对TopoJson的解析和支持


下一篇:javascript-将强度点数组转换为标记