Javascript mapbox中标记的多重过滤

Javascript mapbox中标记的多重过滤,javascript,filtering,mapbox,markers,Javascript,Filtering,Mapbox,Markers,我试图在mapbox中加载geojson数据,我想在标记上使用复选框应用多重过滤。我试着看下面给出的例子: 因此,这里的过滤基于每个标记的运行状况和资产代码。无论是“健康”、“警告”、“停止”还是“123125”、“123135”、“123145”。 代码用于加载地图,并根据其健康状况的颜色放置标记。“过滤器”菜单还可以获得六个过滤器选项。但当选择具有相同标记的两个过滤器时,标记将从屏幕上消失 例如,当选择“123125”然后选择“警告”时。黄色标记出现在屏幕上,但当取消选择任何一个过滤器时,它

我试图在mapbox中加载geojson数据,我想在标记上使用复选框应用多重过滤。我试着看下面给出的例子:

因此,这里的过滤基于每个标记的运行状况和资产代码。无论是“健康”、“警告”、“停止”还是“123125”、“123135”、“123145”。 代码用于加载地图,并根据其健康状况的颜色放置标记。“过滤器”菜单还可以获得六个过滤器选项。但当选择具有相同标记的两个过滤器时,标记将从屏幕上消失

例如,当选择“123125”然后选择“警告”时。黄色标记出现在屏幕上,但当取消选择任何一个过滤器时,它将消失。我不知道如何预防这种情况。“123135”、“停止”和“123145”、“健康”也会发生同样的情况

请看一下下面的代码并帮助我


L.mapbox.accessToken='pk.eyj1ijoizg9zcyisimeioiii1nfituws4in0.-9qpbOfE3jC68WDUQA1Akg';
var map=L.mapbox.map('map','mapbox.streets');
var featureLayerGeoJSON={
“类型”:“FeatureCollection”,
“特点”:[
{
“类型”:“功能”,
“财产”:{
“标题”:“大众汽车集团”,
“健康”:错误,
“警告”:没错,
“停止”:错误,
“标记颜色”:“FFFF00”,
“标记大小”:“中等”,
“资产代码”:“123125”,
“运行状况代码”:“警告”
},
“几何学”:{
“类型”:“点”,
“坐标”:[-43.172502,-22.965881]
}
},
{
“类型”:“功能”,
“财产”:{
“标题”:“大众汽车集团”,
“健康”:错误,
“警告”:没错,
“停止”:错误,
“标记颜色”:“FF0000”,
“标记大小”:“中等”,
“资产代码”:“123135”,
“运行状况代码”:“已停止”
},
“几何学”:{
“类型”:“点”,
“坐标”:[-8.990956,38.581054]
}
},
{
“类型”:“功能”,
“财产”:{
“标题”:“大众汽车集团”,
“健康”:错误,
“警告”:没错,
“停止”:错误,
“标记颜色”:“#1EB01E”,
“标记大小”:“中等”,
“资产代码”:“123145”,
“健康代码”:“健康”
},
“几何学”:{
“类型”:“点”,
“坐标”:[139.740667,35.626567]
}
}
]
};
map.featureLayer.setGeoJSON(featureLayerGeoJSON);
//查找并存储对筛选器列表的变量引用。
var filters=document.getElementById('filters');
//等待标记层加载,以生成可能的标记列表
//类型。如果使用其他featureLayer执行此操作,则应更改
//将.featureLayer映射到已指定给featureLayer的变量。
var makeCheckboxes1=函数(){
//收集此层中的符号类型。您还可以
//硬编码一个类型数组如果你知道你想过滤什么,
//like-var-types=['foo','bar'];
var typesObj={},types=[];
map.featureLayer.eachLayer(函数(实体){
typesObj[entity.feature.properties['Asset_Code']]=true;
})
对于(typesObj中的变量k)类型。推送(k);
var复选框=[];
//创建一个过滤器接口。
对于(变量i=0;icheckboxes.push(checkbox); //this is first when makeCheckboxes1() call.
checkboxes.push(checkbox); //this is first when makeCheckboxes2() call.