传单过滤现有功能组
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
事件期间您没有将它包含在初始化中。
我有一个 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
事件期间您没有将它包含在初始化中。