Merge pull request #8908 from tschaub/opacity
Handle layer opacity in the composite renderer
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
import Map from '../../../src/ol/CompositeMap.js';
|
||||||
|
import View from '../../../src/ol/View.js';
|
||||||
|
import Feature from '../../../src/ol/Feature.js';
|
||||||
|
import LineString from '../../../src/ol/geom/LineString.js';
|
||||||
|
import VectorLayer from '../../../src/ol/layer/Vector.js';
|
||||||
|
import VectorSource from '../../../src/ol/source/Vector.js';
|
||||||
|
import Style from '../../../src/ol/style/Style.js';
|
||||||
|
import Stroke from '../../../src/ol/style/Stroke.js';
|
||||||
|
|
||||||
|
|
||||||
|
const vectorSource = new VectorSource();
|
||||||
|
let feature;
|
||||||
|
|
||||||
|
feature = new Feature({
|
||||||
|
geometry: new LineString([[-60, 60], [45, 60]])
|
||||||
|
});
|
||||||
|
vectorSource.addFeature(feature);
|
||||||
|
|
||||||
|
feature = new Feature({
|
||||||
|
geometry: new LineString([[-60, -50], [30, 10]])
|
||||||
|
});
|
||||||
|
feature.setStyle(new Style({
|
||||||
|
stroke: new Stroke({color: '#f00', width: 3})
|
||||||
|
}));
|
||||||
|
vectorSource.addFeature(feature);
|
||||||
|
|
||||||
|
feature = new Feature({
|
||||||
|
geometry: new LineString([[-110, -100], [0, 100], [100, -90]])
|
||||||
|
});
|
||||||
|
feature.setStyle(new Style({
|
||||||
|
stroke: new Stroke({
|
||||||
|
color: 'rgba(55, 55, 55, 0.75)',
|
||||||
|
width: 5,
|
||||||
|
lineCap: 'square',
|
||||||
|
lineDash: [4, 8],
|
||||||
|
lineJoin: 'round'
|
||||||
|
})
|
||||||
|
}));
|
||||||
|
vectorSource.addFeature(feature);
|
||||||
|
|
||||||
|
feature = new Feature({
|
||||||
|
geometry: new LineString([[-80, 80], [80, 80], [-40, -90]])
|
||||||
|
});
|
||||||
|
feature.setStyle([
|
||||||
|
new Style({
|
||||||
|
stroke: new Stroke({color: '#F2F211', width: 5})
|
||||||
|
}),
|
||||||
|
new Style({
|
||||||
|
stroke: new Stroke({color: '#292921', width: 1})
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
vectorSource.addFeature(feature);
|
||||||
|
|
||||||
|
|
||||||
|
new Map({
|
||||||
|
pixelRatio: 1,
|
||||||
|
layers: [
|
||||||
|
new VectorLayer({
|
||||||
|
opacity: 0.5,
|
||||||
|
source: vectorSource
|
||||||
|
})
|
||||||
|
],
|
||||||
|
target: 'map',
|
||||||
|
view: new View({
|
||||||
|
center: [0, 0],
|
||||||
|
resolution: 1
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
render();
|
||||||
@@ -99,7 +99,10 @@ class CompositeMapRenderer extends MapRenderer {
|
|||||||
const layerRenderer = this.getLayerRenderer(layer);
|
const layerRenderer = this.getLayerRenderer(layer);
|
||||||
if (layerRenderer.prepareFrame(frameState, layerState)) {
|
if (layerRenderer.prepareFrame(frameState, layerState)) {
|
||||||
const element = layerRenderer.renderFrame(frameState, layerState);
|
const element = layerRenderer.renderFrame(frameState, layerState);
|
||||||
// TODO: deal with opacity
|
const opacity = layerState.opacity;
|
||||||
|
if (opacity !== element.style.opacity) {
|
||||||
|
element.style.opacity = opacity;
|
||||||
|
}
|
||||||
this.children_.push(element);
|
this.children_.push(element);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user