Create a layer state map instead of an array of uids
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* @module ol/renderer/Map
|
* @module ol/renderer/Map
|
||||||
*/
|
*/
|
||||||
import {includes} from '../array.js';
|
|
||||||
import {abstract, getUid} from '../util.js';
|
import {abstract, getUid} from '../util.js';
|
||||||
import Disposable from '../Disposable.js';
|
import Disposable from '../Disposable.js';
|
||||||
import {listen, unlistenByKey} from '../events.js';
|
import {listen, unlistenByKey} from '../events.js';
|
||||||
@@ -258,9 +257,9 @@ class MapRenderer extends Disposable {
|
|||||||
*/
|
*/
|
||||||
removeUnusedLayerRenderers_(map, frameState) {
|
removeUnusedLayerRenderers_(map, frameState) {
|
||||||
if (frameState) {
|
if (frameState) {
|
||||||
const layersUids = getLayersUids(frameState.layerStatesArray);
|
const layerStatesMap = getLayerStatesMap(frameState.layerStatesArray);
|
||||||
for (const layerKey in this.layerRenderers_) {
|
for (const layerKey in this.layerRenderers_) {
|
||||||
if (!includes(layersUids, layerKey)) {
|
if (!(layerKey in layerStatesMap)) {
|
||||||
this.removeLayerRendererByKey_(layerKey).dispose();
|
this.removeLayerRendererByKey_(layerKey).dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -304,12 +303,13 @@ function expireIconCache(map, frameState) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Array<import("../layer/Layer.js").State>} layerStatesArray Layer states array.
|
* @param {Array<import("../layer/Layer.js").State>} layerStatesArray Layer states array.
|
||||||
* @return {Array<string>} Layers uid.
|
* @return {Object<string, import("../layer/Layer.js").State>} States mapped by layer uid.
|
||||||
*/
|
*/
|
||||||
function getLayersUids(layerStatesArray) {
|
function getLayerStatesMap(layerStatesArray) {
|
||||||
return layerStatesArray.map(function(state) {
|
return layerStatesArray.reduce(function(acc, state) {
|
||||||
return getUid(state.layer);
|
acc[getUid(state.layer)] = state;
|
||||||
});
|
return acc;
|
||||||
|
}, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user