diff --git a/rendering/cases/multiple-layers/main.js b/rendering/cases/multiple-layers/main.js index c5dd78ae69..0d2df97582 100644 --- a/rendering/cases/multiple-layers/main.js +++ b/rendering/cases/multiple-layers/main.js @@ -9,12 +9,6 @@ import Point from '../../../src/ol/geom/Point.js'; const map = new Map({ layers: [ - new TileLayer({ - source: new XYZ({ - url: '/data/tiles/satellite/{z}/{x}/{y}.jpg', - maxZoom: 3 - }) - }), new VectorLayer({ zIndex: 1, style: new Style({ @@ -27,6 +21,12 @@ const map = new Map({ url: '/data/countries.json', format: new GeoJSON() }) + }), + new TileLayer({ + source: new XYZ({ + url: '/data/tiles/satellite/{z}/{x}/{y}.jpg', + maxZoom: 3 + }) }) ], target: 'map', diff --git a/src/ol/renderer/Composite.js b/src/ol/renderer/Composite.js index e1e68f70cd..d0b5566d0b 100644 --- a/src/ol/renderer/Composite.js +++ b/src/ol/renderer/Composite.js @@ -81,10 +81,13 @@ class CompositeMapRenderer extends MapRenderer { this.calculateMatrices2D(frameState); this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState); - const layerStatesArray = frameState.layerStatesArray; + const layerStatesArray = frameState.layerStatesArray.sort(function(a, b) { + return a.zIndex - b.zIndex; + }); const viewResolution = frameState.viewState.resolution; this.children_.length = 0; + let element = null; for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) { const layerState = layerStatesArray[i]; if (!visibleAtResolution(layerState, viewResolution) || @@ -93,12 +96,8 @@ class CompositeMapRenderer extends MapRenderer { } const layer = layerState.layer; - const element = layer.render(frameState); + element = layer.render(frameState); if (element) { - const zIndex = layerState.zIndex; - if (zIndex !== element.style.zIndex) { - element.style.zIndex = zIndex === Infinity ? Number.MAX_SAFE_INTEGER : zIndex; - } this.children_.push(element); } }