Ajax 传单过滤

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 = {

我正在使用L.GeoJSON.AJAX加载我的json。我有以下方法来设置标记的样式:

    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请参阅下面的答案