Re-assign variables on setStyle()
This commit is contained in:
@@ -456,10 +456,13 @@ class WebGLTileLayer extends BaseTileLayer {
|
|||||||
/**
|
/**
|
||||||
* Update the layer style. The `updateStyleVariables` function is a more efficient
|
* Update the layer style. The `updateStyleVariables` function is a more efficient
|
||||||
* way to update layer rendering. In cases where the whole style needs to be updated,
|
* way to update layer rendering. In cases where the whole style needs to be updated,
|
||||||
* this method may be called instead.
|
* this method may be called instead. Note that calling this method will also replace
|
||||||
|
* any previously set variables, so the new style also needs to include new variables,
|
||||||
|
* if needed.
|
||||||
* @param {Style} style The new style.
|
* @param {Style} style The new style.
|
||||||
*/
|
*/
|
||||||
setStyle(style) {
|
setStyle(style) {
|
||||||
|
this.styleVariables_ = style.variables || {};
|
||||||
this.style_ = style;
|
this.style_ = style;
|
||||||
const parsedStyle = parseStyle(this.style_, this.getSourceBandCount_());
|
const parsedStyle = parseStyle(this.style_, this.getSourceBandCount_());
|
||||||
const renderer = this.getRenderer();
|
const renderer = this.getRenderer();
|
||||||
|
|||||||
@@ -255,6 +255,49 @@ describe('ol/layer/WebGLTile', function () {
|
|||||||
layer.updateStyleVariables({foo: 'bam'});
|
layer.updateStyleVariables({foo: 'bam'});
|
||||||
expect(layer.styleVariables_.foo).to.be('bam');
|
expect(layer.styleVariables_.foo).to.be('bam');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('also works after setStyle()', function (done) {
|
||||||
|
const layer = new WebGLTileLayer({
|
||||||
|
className: 'testlayer2',
|
||||||
|
source: new DataTileSource({
|
||||||
|
loader(z, x, y) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
resolve(new ImageData(256, 256));
|
||||||
|
});
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
map.addLayer(layer);
|
||||||
|
layer.setStyle({
|
||||||
|
variables: {
|
||||||
|
r: 0,
|
||||||
|
g: 255,
|
||||||
|
b: 0,
|
||||||
|
},
|
||||||
|
color: ['color', ['var', 'r'], ['var', 'g'], ['var', 'b']],
|
||||||
|
});
|
||||||
|
map.renderSync();
|
||||||
|
|
||||||
|
layer.updateStyleVariables({
|
||||||
|
r: 255,
|
||||||
|
g: 0,
|
||||||
|
b: 255,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(layer.styleVariables_['r']).to.be(255);
|
||||||
|
const targetContext = createCanvasContext2D(100, 100);
|
||||||
|
layer.on('postrender', () => {
|
||||||
|
targetContext.clearRect(0, 0, 100, 100);
|
||||||
|
targetContext.drawImage(target.querySelector('.testlayer2'), 0, 0);
|
||||||
|
});
|
||||||
|
map.once('rendercomplete', () => {
|
||||||
|
expect(Array.from(targetContext.getImageData(0, 0, 1, 1).data)).to.eql([
|
||||||
|
255, 0, 255, 255,
|
||||||
|
]);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('dispatches a precompose event with WebGL context', (done) => {
|
it('dispatches a precompose event with WebGL context', (done) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user