传单过滤现有功能组

Leaflet filtering existing featuregroup

我有一个 leftleat 地图,我想过滤我正在显示的要素组。

exp_colJSON = new L.geoJson(exp_col,{
onEachFeature: pop_col,
pointToLayer: function (feature, latlng) {  
    return L.circleMarker(latlng, {
        radius: feature.properties.radius_qgis2leaf,
        fillColor: feature.properties.color_qgis2leaf,
        color: feature.properties.borderColor_qgis2leaf,
        weight: 1,
        opacity: feature.properties.transp_qgis2leaf,
        fillOpacity: feature.properties.transp_qgis2leaf    }).addTo(map).bindLabel(Autolinker.link(String(feature.properties['name'])), { noHide: true });
    }
});

feature_group.addLayer(exp_colJSON);
exp_colJSON.addTo(地图);

我还添加了一个组合框,我想通过在组合框中选择的值来过滤图层的特征。我想将组合框中的选定值与图层中每个要素的 "level" 属性 进行对比。

到目前为止我已经编码了:

$(document).ready(function(){ // ran when the document is fully loaded
  // retrieve the jQuery wrapped dom object identified by the selector 
  var exp_getxocolcolegiosJSON = {};
  var sel = $('#niveles');
  // assign a change listener to it
  sel.change(function(){ //inside the listener
    // retrieve the value of the object firing the event (referenced by this)
    var value = $(this).val();

    //do whatever needed here to filter the layer

    L.geoJson(exp_col, {
    filter: function(feature, layer) {
         return(feature.properties.nivelmodelo.match(/.*value.*\/)) 
     }
    }).addTo(map);

    // I know this has no sense but i don't know how to code it

  }); // close the change listener
}); // close the ready listener 

此致,

在您的 change 事件中,您正在创建另一个包含适当过滤器选项的 geoJSON 层...但您没有删除先前显示在第一个代码块中的 exp_colJSON。在用 map.removeLayer(exp_colJSON) 初始化新层之前去掉它。确保在你的 pointToLayer 函数中删除 addTo(map),Leaflet 会为你完成。还最好保存您的选项散列以便在每次初始化中继续重用。我想我会提到这一点,因为在 change 事件期间您没有将它包含在初始化中。