Ajax 传单过滤
我正在使用L.GeoJSON.AJAX加载我的json。我有以下方法来设置标记的样式:Ajax 传单过滤,ajax,filter,leaflet,geojson,Ajax,Filter,Leaflet,Geojson,我正在使用L.GeoJSON.AJAX加载我的json。我有以下方法来设置标记的样式: var weakClusterMarkerOptions = { radius: 5, fillColor: "#FFFF00", color: "#000", weight: 2, opacity: 1, fillOpacity: 0.8 }, strongClusterMarkerOptions = {
var weakClusterMarkerOptions = {
radius: 5,
fillColor: "#FFFF00",
color: "#000",
weight: 2,
opacity: 1,
fillOpacity: 0.8
},
strongClusterMarkerOptions = {
radius: 7,
fillColor: "#CC0000",
color: "#CC0000",
opacity: 1,
fillOpacity: 0.8
};
function customizeClusterIcon(feature, latlng) {
if (feature.properties.strongCl === 'strong') {
return L.circleMarker(latlng, strongClusterMarkerOptions);
} else {
return L.circleMarker(latlng, weakClusterMarkerOptions);
}
}
然后,我使用以下方法进行筛选:
function toggleStrength(strength, showLayer) {
jsonLayer.refilter(function (feature, layer) {
if (strength == 'all') {
return true;
} else {
if (showLayer) {
return feature.properties.strongCl === strength;
}
}
});
}
这里的问题是,当我过滤时,圆圈标记器的边框消失,但标记仍然可见,特别是填充颜色。您的fillColor和color具有相同的值CC0000。可能边界在那里。它的颜色与填充颜色相同。因此,我最终为每个条件弱和强创建了图层组,然后根据过滤器清除并添加相应的组
toggleStrength = function (layer, showLayer, theMap) {
switch (layer) {
case 'weak':
if (showLayer) {
theMap.addLayer(weakGroup);
} else {
theMap.removeLayer(weakGroup);
}
break;
case 'strong':
if (showLayer) {
theMap.addLayer(strongGroup);
} else {
theMap.removeLayer(strongGroup);
}
break;
default:
clearAll(theMap);
if (showLayer) {
theMap.addLayer(weakGroup);
theMap.addLayer(strongGroup);
}
break;
}
};
我不关心应该在那里的标记,我的问题是我试图过滤掉的标记仍然在边界上,即颜色消失,但填充颜色仍然可见。你能显示重新过滤代码吗?传单的过滤功能仅适用于新添加的层。我敢肯定你的作品是一样的。如果是这样,您需要使用每个功能并有条件地删除项目。您是否找到解决方案?@Barbarossa请参阅下面的答案