如何启用/禁用函数的结果

时间:2016-02-15 11:33:03

标签: javascript jquery leaflet marker

我有一个函数可以从文件中读取我的标记并将它们输出到我的地图中。 这是我的功能:

function showResourcesByName(name) {
                for (var i = 0; i < markers.resources.length; i++) {
                    var resName = markers.resources[i].name;

                    if (resName == name) {
                        var resIcon = icons.resources[i].icon;
                        var resSize = icons.resources[i].size;
                        var resPname = icons.resources[i].pname;

                        var customIcon = L.icon({
                            iconUrl: resIcon,
                            iconSize: resSize, // size of the icon
                            iconAnchor:   [resSize[0]/2, resSize[1]/2], // point of the icon which will correspond to marker's location
                            popupAnchor:  [2, -resSize[1]/2] // point from which the popup should open relative to the iconAnchor
                        });

                        for (var j = 0; j < markers.resources[i].coords.length; j++) {
                            var x = markers.resources[i].coords[j].x;
                            var y = markers.resources[i].coords[j].y;

                            marker = L.marker([y, x], {icon: customIcon});
                            marker.addTo(map).bindPopup(resPname);
                            $(marker._icon).addClass('chutiya')



                        }
                    }
                }
            }

要显示我的标记,我使用如下函数:

showResourcesByName("AITokarServer");
showResourcesByName("AIBorServer");

如果我评论结果如下://showResourcesByName("AITokarServer"); 标记消失了。

我的问题是我有来自29个组的5950个标记,并且一旦页面加载就加载它们。

我想创建一个启用/禁用该功能结果的复选框,就像我可以通过注释启用和禁用它一样。 有可能吗?

我的临时解决方法是使用css类打开/关闭标记(每个标记都有一个带有组名的类):

$('#shigitoggle').change(function () {
    if (!this.checked) 
    //  ^
$('.AIShigiServer').fadeOut('slow');
    else 
$('.AIShigiServer').fadeIn('slow');

});

问题是当它们“关闭”时它们仍然在代码中,使页面变慢(我说这是因为代码中有5950个标记)。

您可以在此处查看我的完整代码:http://plnkr.co/edit/s5xUx9LQcwYP3g3Cx7MX?p=preview

1 个答案:

答案 0 :(得分:0)

  

我的问题是我有来自29个组的5950个标记,并且一旦页面加载就加载它们。

使用Leaflet.markercluster不会一次显示所有标记。

  

问题是当它们“关闭”时它们仍然在代码中,使页面变慢(我说这是因为代码中有5950个标记)。

没有。在数据结构中有6000个项目并浪费一点内存不是问题。

是您的网页中有6000个可见DOM元素