diff --git a/src/ol/layer/BaseVector.js b/src/ol/layer/BaseVector.js index 2688bdbc5a..98950bd2e9 100644 --- a/src/ol/layer/BaseVector.js +++ b/src/ol/layer/BaseVector.js @@ -143,12 +143,6 @@ class BaseVectorLayer extends Layer { * @type {import("../LayerType.js").default} */ this.type = LayerType.VECTOR; - - /** - * @private - * @type {import("../renderer/Layer.js").default} - */ - this.renderer_ = null; } /** @@ -249,26 +243,6 @@ class BaseVectorLayer extends Layer { getRenderMode() { return this.renderMode_; } - - /** - * Get the renderer for this layer. - * @return {import("../renderer/Layer.js").default} The layer renderer. - */ - getRenderer() { - if (!this.renderer_) { - this.renderer_ = this.createRenderer(); - } - return this.renderer_; - } - - /** - * Create a renderer for this layer. - * @return {import("../renderer/Layer.js").default} A layer renderer. - * @protected - */ - createRenderer() { - return null; - } } diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index 8ef367acd4..9a0d413b01 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -92,6 +92,12 @@ class Layer extends BaseLayer { */ this.sourceChangeKey_ = null; + /** + * @private + * @type {import("../renderer/Layer.js").default} + */ + this.renderer_ = null; + if (options.map) { this.setMap(options.map); } @@ -215,6 +221,27 @@ class Layer extends BaseLayer { setSource(source) { this.set(LayerProperty.SOURCE, source); } + + /** + * Get the renderer for this layer. + * @return {import("../renderer/Layer.js").default} The layer renderer. + */ + getRenderer() { + if (!this.renderer_) { + this.renderer_ = this.createRenderer(); + } + return this.renderer_; + } + + /** + * Create a renderer for this layer. + * @return {import("../renderer/Layer.js").default} A layer renderer. + * @protected + */ + createRenderer() { + return null; + } + } diff --git a/src/ol/renderer/Map.js b/src/ol/renderer/Map.js index 9acca5e2e9..157dce98d5 100644 --- a/src/ol/renderer/Map.js +++ b/src/ol/renderer/Map.js @@ -217,12 +217,14 @@ class MapRenderer extends Disposable { if (layerKey in this.layerRenderers_) { return this.layerRenderers_[layerKey]; } else { - let renderer; - for (let i = 0, ii = this.layerRendererConstructors_.length; i < ii; ++i) { - const candidate = this.layerRendererConstructors_[i]; - if (candidate['handles'](layer)) { - renderer = candidate['create'](this, layer); - break; + let renderer = layer.getRenderer(); + if (!renderer) { + for (let i = 0, ii = this.layerRendererConstructors_.length; i < ii; ++i) { + const candidate = this.layerRendererConstructors_[i]; + if (candidate['handles'](layer)) { + renderer = candidate['create'](this, layer); + break; + } } } if (renderer) {