diff --git a/src/ol/layer/Image.js b/src/ol/layer/Image.js index ad6b8025c8..2a83a18cc9 100644 --- a/src/ol/layer/Image.js +++ b/src/ol/layer/Image.js @@ -32,11 +32,10 @@ class ImageLayer extends BaseImageLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasImageLayerRenderer(this); } diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index 678860e0d8..723c7b5be1 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -172,6 +172,20 @@ class Layer extends BaseLayer { this.changed(); } + /** + * In charge to manage the rendering of the layer. One layer type is + * bounded with one layer renderer. + * @param {?import("../PluggableMap.js").FrameState} frameState Frame state. + * @return {HTMLElement} The rendered element. + */ + render(frameState) { + const layerRenderer = this.getRenderer(); + const layerState = this.getLayerState(); + if (layerRenderer.prepareFrame(frameState, layerState)) { + return layerRenderer.renderFrame(frameState, layerState); + } + } + /** * Sets the layer to be rendered on top of other layers on a map. The map will * not manage this layer in its layers collection, and the callback in @@ -224,23 +238,21 @@ class Layer extends BaseLayer { /** * Get the renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} The layer renderer. */ - getRenderer(mapRenderer) { + getRenderer() { if (!this.renderer_) { - this.renderer_ = this.createRenderer(mapRenderer); + this.renderer_ = this.createRenderer(); } return this.renderer_; } /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return null; } diff --git a/src/ol/layer/Tile.js b/src/ol/layer/Tile.js index fbd6606a15..6e25f2af6b 100644 --- a/src/ol/layer/Tile.js +++ b/src/ol/layer/Tile.js @@ -31,11 +31,10 @@ class TileLayer extends BaseTileLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasTileLayerRenderer(this); } diff --git a/src/ol/layer/Vector.js b/src/ol/layer/Vector.js index 1458890db2..0456b04ea0 100644 --- a/src/ol/layer/Vector.js +++ b/src/ol/layer/Vector.js @@ -29,11 +29,10 @@ class VectorLayer extends BaseVectorLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasVectorLayerRenderer(this); } } diff --git a/src/ol/layer/VectorImage.js b/src/ol/layer/VectorImage.js index 3c92e77398..42678c778d 100644 --- a/src/ol/layer/VectorImage.js +++ b/src/ol/layer/VectorImage.js @@ -28,11 +28,10 @@ class VectorImageLayer extends BaseVectorLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasVectorImageLayerRenderer(this); } } diff --git a/src/ol/layer/VectorTile.js b/src/ol/layer/VectorTile.js index 58d65e5495..758e6f516e 100644 --- a/src/ol/layer/VectorTile.js +++ b/src/ol/layer/VectorTile.js @@ -116,11 +116,10 @@ class VectorTileLayer extends BaseVectorLayer { /** * Create a renderer for this layer. - * @param {import("../renderer/Map.js").default} mapRenderer The map renderer. * @return {import("../renderer/Layer.js").default} A layer renderer. * @protected */ - createRenderer(mapRenderer) { + createRenderer() { return new CanvasVectorTileLayerRenderer(this); } diff --git a/src/ol/renderer/Composite.js b/src/ol/renderer/Composite.js index 2e4643eeb5..aebcbc0db1 100644 --- a/src/ol/renderer/Composite.js +++ b/src/ol/renderer/Composite.js @@ -95,11 +95,7 @@ class CompositeMapRenderer extends MapRenderer { } const layer = layerState.layer; - const layerRenderer = this.getLayerRenderer(layer); - if (layerRenderer.prepareFrame(frameState, layerState)) { - const element = layerRenderer.renderFrame(frameState, layerState); - this.children_.push(element); - } + this.children_.push(layer.render(frameState)); } replaceChildren(this.element_, this.children_);