diff --git a/src/ol/renderer/Map.js b/src/ol/renderer/Map.js index 1387192392..9bbbc61115 100644 --- a/src/ol/renderer/Map.js +++ b/src/ol/renderer/Map.js @@ -1,7 +1,6 @@ /** * @module ol/renderer/Map */ -import {includes} from '../array.js'; import {abstract, getUid} from '../util.js'; import Disposable from '../Disposable.js'; import {listen, unlistenByKey} from '../events.js'; @@ -258,9 +257,9 @@ class MapRenderer extends Disposable { */ removeUnusedLayerRenderers_(map, frameState) { if (frameState) { - const layersUids = getLayersUids(frameState.layerStatesArray); + const layerStatesMap = getLayerStatesMap(frameState.layerStatesArray); for (const layerKey in this.layerRenderers_) { - if (!includes(layersUids, layerKey)) { + if (!(layerKey in layerStatesMap)) { this.removeLayerRendererByKey_(layerKey).dispose(); } } @@ -304,12 +303,13 @@ function expireIconCache(map, frameState) { /** * @param {Array} layerStatesArray Layer states array. - * @return {Array} Layers uid. + * @return {Object} States mapped by layer uid. */ -function getLayersUids(layerStatesArray) { - return layerStatesArray.map(function(state) { - return getUid(state.layer); - }); +function getLayerStatesMap(layerStatesArray) { + return layerStatesArray.reduce(function(acc, state) { + acc[getUid(state.layer)] = state; + return acc; + }, {}); } /**