Layer / accepts a custom render function

This commit is contained in:
Olivier Guyot
2019-05-13 16:08:24 +02:00
parent a2e6d4b324
commit 14f580fe30
2 changed files with 21 additions and 0 deletions

View File

@@ -10,6 +10,10 @@ import {assign} from '../obj.js';
import RenderEventType from '../render/EventType.js';
import SourceState from '../source/State.js';
/**
* @typedef {function(import("../PluggableMap.js").FrameState):HTMLElement} RenderFunction
*/
/**
* @typedef {Object} Options
@@ -29,6 +33,8 @@ import SourceState from '../source/State.js';
* the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after
* construction.
* @property {import("../PluggableMap.js").default} [map] Map.
* @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an
* HTML element. Will overwrite the default rendering for the layer.
*/
@@ -100,6 +106,11 @@ class Layer extends BaseLayer {
*/
this.renderer_ = null;
// Overwrite default render method with a custom one
if (options.render) {
this.render = options.render;
}
if (options.map) {
this.setMap(options.map);
}

View File

@@ -94,6 +94,16 @@ describe('ol.layer.Layer', function() {
layer.dispose();
});
it('accepts a custom render function', function() {
let called = false;
const layer = new Layer({
render: function() {
called = true;
}
});
layer.render();
expect(called).to.eql(true);
});
});
describe('visibleAtResolution', function() {