使用复选框等过滤传单标记Omivore CSV文件

使用复选框等过滤传单标记Omivore CSV文件,csv,leaflet,Csv,Leaflet,我正在研究如何根据CSV文件中的几列使用复选框、单选按钮或其他选择器进行过滤。此文件包含所有我的点并在地图上显示。我的过滤是我挣扎的地方。我正在寻找一种比为每种类型的显示器创建单独的静态过滤器更好的方法 我有正在解析的csv文件 我可以这样过滤: var freeLayer = L.geoJson(null, { filter: function(layer) { if (layer.properties.icon == "free")

我正在研究如何根据CSV文件中的几列使用复选框、单选按钮或其他选择器进行过滤。此文件包含所有我的点并在地图上显示。我的过滤是我挣扎的地方。我正在寻找一种比为每种类型的显示器创建单独的静态过滤器更好的方法

我有正在解析的csv文件

我可以这样过滤:

var freeLayer = L.geoJson(null, {
        filter: function(layer) {
            if (layer.properties.icon == "free")
                return true;
        }
    });
    var feeLayer = L.geoJson(null, {
        filter: function(layer) {
            if (layer.properties.icon == "fee")
                return true;
        }
    });
然后通过Omnivore加载我的图层:

var free = omnivore.csv('data/all.csv', null, freeLayer)...
var fee = omnivore.csv('data/all.csv', null, feeLayer)...
添加我的图层组:

var groupedOverlays = {
            "Fee Type": {
                "<img src='images/fee.png' width='26' height='26'>&nbsp;FEE": fee,
                "<img src='images/free.png' width='26' height='26'>&nbsp;FREE": free
            }...
var groupedOverlays={
“费用类型”:{
“费”:费,
“免费”:免费
}...
这很好,但是如果我想在csv文件中的另一列/属性上进行过滤,我需要编写另一个L.geoJson过滤器


例如,如何更新layer属性以一次使用两个或三个不同的选择?如果我有免费和付费复选框,并且都显示了,但都来自一个L.geoJson过滤器…

每个过滤器创建一个
L.geoJson
层组没有错

主要的缺点是,对同一个CSV文件进行多次解析,如果文件很大,可能会出现性能问题

我不认为您可以改变传单杂食行为来创建多个组,但您可以使用
L.geoJson
或其他策略

因此,一个简单的解决方法是使用
L.geoJson
构造函数的,这取决于您需要什么过滤器。然后,用于Omnivore的
L.geoJson
将不需要添加到map中,它将仅充当中间容器


可供选择的策略是用独立的库取代杂食传单。例如CSV解析库(PapaParse…),然后在每一行中循环,并根据您的过滤器直接在适当的覆盖层组中构建特征/标记。此策略也很容易实现,因为CSV具有简单的结构(与其他格式相反,例如KML,传单杂色发光).

为每个过滤器创建一个
L.geoJson
图层组没有错

主要的缺点是,对同一个CSV文件进行多次解析,如果文件很大,可能会出现性能问题

我不认为您可以改变传单杂食行为来创建多个组,但您可以使用
L.geoJson
或其他策略

因此,一个简单的解决方法是使用
L.geoJson
构造函数的,这取决于您需要什么过滤器。然后,用于Omnivore的
L.geoJson
将不需要添加到map中,它将仅充当中间容器

可供选择的策略是用独立的库取代杂食传单。例如CSV解析库(PapaParse…),然后在每一行中循环,并根据您的过滤器直接在适当的覆盖层组中构建特征/标记。此策略也很容易实现,因为CSV具有简单的结构(与其他格式相反,例如KML,传单杂食闪耀)