Remove 'layerStates' property from the FrameState
This commit is contained in:
@@ -41,7 +41,6 @@ import {create as createTransform, apply as applyTransform} from './transform.js
|
||||
* @property {null|import("./extent.js").Extent} extent
|
||||
* @property {import("./coordinate.js").Coordinate} focus
|
||||
* @property {number} index
|
||||
* @property {Object<string, import("./layer/Layer.js").State>} layerStates
|
||||
* @property {Array<import("./layer/Layer.js").State>} layerStatesArray
|
||||
* @property {import("./transform.js").Transform} pixelToCoordinateTransform
|
||||
* @property {Array<PostRenderFunction>} postRenderFunctions
|
||||
@@ -1188,11 +1187,6 @@ class PluggableMap extends BaseObject {
|
||||
let frameState = null;
|
||||
if (size !== undefined && hasArea(size) && view && view.isDef()) {
|
||||
const viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);
|
||||
const layerStatesArray = this.getLayerGroup().getLayerStatesArray();
|
||||
const layerStates = {};
|
||||
for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||
layerStates[getUid(layerStatesArray[i].layer)] = layerStatesArray[i];
|
||||
}
|
||||
viewState = view.getState(this.pixelRatio_);
|
||||
frameState = /** @type {FrameState} */ ({
|
||||
animate: false,
|
||||
@@ -1200,8 +1194,7 @@ class PluggableMap extends BaseObject {
|
||||
extent: extent,
|
||||
focus: this.focus_ ? this.focus_ : viewState.center,
|
||||
index: this.frameIndex_++,
|
||||
layerStates: layerStates,
|
||||
layerStatesArray: layerStatesArray,
|
||||
layerStatesArray: this.getLayerGroup().getLayerStatesArray(),
|
||||
pixelRatio: this.pixelRatio_,
|
||||
pixelToCoordinateTransform: this.pixelToCoordinateTransform_,
|
||||
postRenderFunctions: [],
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
*/
|
||||
import {listen, unlistenByKey} from '../events.js';
|
||||
import EventType from '../events/EventType.js';
|
||||
import {getUid} from '../util.js';
|
||||
import {getChangeEventType} from '../Object.js';
|
||||
import BaseLayer from './Base.js';
|
||||
import LayerProperty from './Property.js';
|
||||
@@ -219,7 +218,6 @@ class Layer extends BaseLayer {
|
||||
layerState.zIndex = Infinity;
|
||||
}
|
||||
renderEvent.frameState.layerStatesArray.push(layerState);
|
||||
renderEvent.frameState.layerStates[getUid(this)] = layerState;
|
||||
}, this);
|
||||
this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);
|
||||
this.changed();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/**
|
||||
* @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';
|
||||
@@ -105,6 +106,11 @@ class MapRenderer extends Disposable {
|
||||
let result;
|
||||
const viewState = frameState.viewState;
|
||||
const viewResolution = viewState.resolution;
|
||||
const managedLayers = frameState.layerStatesArray.map(function(state) {
|
||||
if (state.managed) {
|
||||
return getUid(state.layer);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @param {import("../Feature.js").FeatureLike} feature Feature.
|
||||
@@ -112,7 +118,7 @@ class MapRenderer extends Disposable {
|
||||
* @return {?} Callback result.
|
||||
*/
|
||||
function forEachFeatureAtCoordinate(feature, layer) {
|
||||
const managed = frameState.layerStates[getUid(layer)].managed;
|
||||
const managed = includes(managedLayers, getUid(layer));
|
||||
if (!(getUid(feature) in frameState.skippedFeatureUids && !managed)) {
|
||||
return callback.call(thisArg, feature, managed ? layer : null);
|
||||
}
|
||||
@@ -255,8 +261,9 @@ class MapRenderer extends Disposable {
|
||||
* @private
|
||||
*/
|
||||
removeUnusedLayerRenderers_(map, frameState) {
|
||||
const layersUids = getLayersUids(frameState.layerStatesArray);
|
||||
for (const layerKey in this.layerRenderers_) {
|
||||
if (!frameState || !(layerKey in frameState.layerStates)) {
|
||||
if (!frameState || !(includes(layersUids, layerKey))) {
|
||||
this.removeLayerRendererByKey_(layerKey).dispose();
|
||||
}
|
||||
}
|
||||
@@ -284,8 +291,9 @@ class MapRenderer extends Disposable {
|
||||
* @protected
|
||||
*/
|
||||
scheduleRemoveUnusedLayerRenderers(frameState) {
|
||||
const layersUids = getLayersUids(frameState.layerStatesArray);
|
||||
for (const layerKey in this.layerRenderers_) {
|
||||
if (!(layerKey in frameState.layerStates)) {
|
||||
if (!(includes(layersUids, layerKey))) {
|
||||
frameState.postRenderFunctions.push(
|
||||
/** @type {import("../PluggableMap.js").PostRenderFunction} */ (this.removeUnusedLayerRenderers_.bind(this))
|
||||
);
|
||||
@@ -304,6 +312,15 @@ function expireIconCache(map, frameState) {
|
||||
iconImageCache.expire();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array<import("../layer/Layer.js").State>} layerStatesArray Layer states array.
|
||||
* @return {Array<string>} Layers uid.
|
||||
*/
|
||||
function getLayersUids(layerStatesArray) {
|
||||
return layerStatesArray.map(function(state) {
|
||||
return getUid(state.layer);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {import("../layer/Layer.js").State} state1 First layer state.
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/**
|
||||
* @module ol/source/Raster
|
||||
*/
|
||||
import {getUid} from '../util.js';
|
||||
import ImageCanvas from '../ImageCanvas.js';
|
||||
import TileQueue from '../TileQueue.js';
|
||||
import {createCanvasContext2D} from '../dom.js';
|
||||
@@ -185,16 +184,6 @@ class RasterSource extends ImageSource {
|
||||
return 1;
|
||||
}, this.changed.bind(this));
|
||||
|
||||
const layerStatesArray = getLayerStatesArray(this.layers_);
|
||||
|
||||
/**
|
||||
* @type {Object<string, import("../layer/Layer.js").State>}
|
||||
*/
|
||||
const layerStates = {};
|
||||
for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {
|
||||
layerStates[getUid(layerStatesArray[i].layer)] = layerStatesArray[i];
|
||||
}
|
||||
|
||||
/**
|
||||
* The most recently requested frame state.
|
||||
* @type {import("../PluggableMap.js").FrameState}
|
||||
@@ -225,8 +214,7 @@ class RasterSource extends ImageSource {
|
||||
extent: null,
|
||||
focus: null,
|
||||
index: 0,
|
||||
layerStates: layerStates,
|
||||
layerStatesArray: layerStatesArray,
|
||||
layerStatesArray: getLayerStatesArray(this.layers_),
|
||||
pixelRatio: 1,
|
||||
pixelToCoordinateTransform: createTransform(),
|
||||
postRenderFunctions: [],
|
||||
|
||||
Reference in New Issue
Block a user