[英]Filter features with properties in OpenLayers
我想使用功能属性过滤 map 上的功能。
例如,如果我在 geojson 中有这个属性:
...
"properties": {
"Start": 10
}
...
而且我只想查看Start > 10
的功能,如何实现Start < 10
的功能被隐藏?
如果我使用以下代码更改样式,则功能是透明的,但如果我使用forEachFeatureAtPixel
,它们在单击后仍然可用。 我希望不显示功能并且无法单击等。
let invisibleStyle = new ol.style.Fill({
color: [0,0, 0, 0],
});
const NewLayer= new ol.layer.VectorImage ({
source: new ol.source.Vector({
url: *url*,
format: new ol.format.GeoJSON(),
}),
visible: true,
style: function (feature) {
if (feature.get('Start')>10) {
let style = new ol.style.Style({
fill: fillStyle,
stroke: strokeStyle
})
return style;
} else {
let style = new ol.style.Style({
fill: invisibleStyle,
})
return style;
}
});
map.addLayer(NewLayer);
我也尝试过像这样使用visible
的,但它不起作用:
const NewLayer= new ol.layer.VectorImage ({
source: new ol.source.Vector({
url: *url*,
format: new ol.format.GeoJSON(),
}),
visible: function(feature) {
if (feature.get('Start')<10) {
return true;
} else {
return false;
}
},
style: new ol.style.Style({
fill: fillStyle,
stroke: strokeStyle,
})
});
map.addLayer(NewLayer);
透明填充看不到,但被检测到(因此您可以通过在多边形内部单击 select 多边形)。 为了避免显示和点击检测,简单地不返回样式
style: function (feature) {
if (feature.get('Start')>10) {
let style = new ol.style.Style({
fill: fillStyle,
stroke: strokeStyle
})
return style;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.