通过 OpenLayers 中的过滤器设置 GeoJSON 样式
Styling GeoJSON by filters in OpenLayers
我正在尝试根据 类 的图层分类来设置 GeoJSON 的样式。
我正在尝试使用 greaterThan 类型过滤器等的方法来做到这一点......这或多或少是我想要对 GeoJSON 进行分类的方式。
我做了以下操作,最初,我想只测试一个间隔,看看它是否有效。
//style
var individuals = new ol.style.Style({
symbolizers: [
new ol.style.Stroke({color: '#000000', width: 1}),
new ol.style.Fill({color: '#ff0000'})
],
filter:ol.format.filter.greaterThan(
ol.format.filter.GreaterThanOrEqualTo('individuals', '0'),
ol.format.filter.LessThanOrEqualTo('individuals', '500')
)
});
//vecLayer
var vectorDistribution = new ol.source.Vector({
url: 'data/distribution.json',
projection: 'EPSG:4326',
format: new ol.format.GeoJSON(),
});
var distribution = new ol.layer.Vector({
name: 'Distribution',
source: vectorDistribution,
visible:true,
displayInLayerSwitcher: false,
style: individuo,
maxZoom:7,
//minResolution: 200,
//maxResolution: 2000,
});
嗯,不代表,有人做过类似的,可以帮帮我。
ol.style.Style
没有符号器或过滤器属性,您可能会将它与 OpenLayers 2 样式混淆。
在 OpenLayers 6 中,如果你想用基于 属性 值的颜色填充多边形,你可以使用样式函数,例如
var style = new ol.style.Style({
stroke: new ol.style.Stroke({color: '#000000', width: 1}),
fill: new ol.style.Fill()
});
var individuals = function(feature) {
var value = feature.get('individuals');
var color = value < 115 ? '#ffffff' :
value < 360 ? '#ff7f7f' :
value < 570 ? '#ff3f3f' :
value < 850 ? '#ff0000' :
value < 1600 ? '#7f0000' : '#3f0000';
style.getFill().setColor(color);
return style;
};
我正在尝试根据 类 的图层分类来设置 GeoJSON 的样式。 我正在尝试使用 greaterThan 类型过滤器等的方法来做到这一点......这或多或少是我想要对 GeoJSON 进行分类的方式。
我做了以下操作,最初,我想只测试一个间隔,看看它是否有效。
//style
var individuals = new ol.style.Style({
symbolizers: [
new ol.style.Stroke({color: '#000000', width: 1}),
new ol.style.Fill({color: '#ff0000'})
],
filter:ol.format.filter.greaterThan(
ol.format.filter.GreaterThanOrEqualTo('individuals', '0'),
ol.format.filter.LessThanOrEqualTo('individuals', '500')
)
});
//vecLayer
var vectorDistribution = new ol.source.Vector({
url: 'data/distribution.json',
projection: 'EPSG:4326',
format: new ol.format.GeoJSON(),
});
var distribution = new ol.layer.Vector({
name: 'Distribution',
source: vectorDistribution,
visible:true,
displayInLayerSwitcher: false,
style: individuo,
maxZoom:7,
//minResolution: 200,
//maxResolution: 2000,
});
嗯,不代表,有人做过类似的,可以帮帮我。
ol.style.Style
没有符号器或过滤器属性,您可能会将它与 OpenLayers 2 样式混淆。
在 OpenLayers 6 中,如果你想用基于 属性 值的颜色填充多边形,你可以使用样式函数,例如
var style = new ol.style.Style({
stroke: new ol.style.Stroke({color: '#000000', width: 1}),
fill: new ol.style.Fill()
});
var individuals = function(feature) {
var value = feature.get('individuals');
var color = value < 115 ? '#ffffff' :
value < 360 ? '#ff7f7f' :
value < 570 ? '#ff3f3f' :
value < 850 ? '#ff0000' :
value < 1600 ? '#7f0000' : '#3f0000';
style.getFill().setColor(color);
return style;
};