我有一个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(地图);
我还添加了一个组合框,我想通过组合框中选择的值来过滤图层的特征。我想在组合框中选择具有图层中每个要素的“级别”属性的值。
到目前为止我已编码:
$(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
此致
答案 0 :(得分:1)
在change
事件中,您正在创建另一个包含正确过滤器选项的geoJSON图层...但您没有删除第一个代码块中显示的先前exp_colJSON
。在使用map.removeLayer(exp_colJSON)
初始化新图层之前删除它。请务必删除addTo(map)
功能中的pointToLayer
,Leaflet会为您执行此操作。最好保存你的选项哈希,以便在每次初始化时继续重用。我想我会提到,因为在change
事件期间你没有将它包含在你的初始化中。