diff --git a/externs/oli.js b/externs/oli.js
index 51e181fc27..be5000cc35 100644
--- a/externs/oli.js
+++ b/externs/oli.js
@@ -72,6 +72,10 @@ oli.FrameState.prototype.layersArray;
oli.FrameState.prototype.layerStates;
+/** @type {Array.
} */
+oli.FrameState.prototype.layerStatesArray;
+
+
/** @type {Object.} */
oli.FrameState.prototype.logos;
diff --git a/src/ol/map.js b/src/ol/map.js
index 34f5d37071..b490cd89e6 100644
--- a/src/ol/map.js
+++ b/src/ol/map.js
@@ -1226,6 +1226,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
index: this.frameIndex_++,
layersArray: layersArray,
layerStates: layerStates,
+ layerStatesArray: layerStatesArray,
logos: {},
pixelRatio: this.pixelRatio_,
pixelToCoordinateMatrix: this.pixelToCoordinateMatrix_,
diff --git a/src/ol/renderer/canvas/canvasmaprenderer.js b/src/ol/renderer/canvas/canvasmaprenderer.js
index 7ff360992f..e0d499a520 100644
--- a/src/ol/renderer/canvas/canvasmaprenderer.js
+++ b/src/ol/renderer/canvas/canvasmaprenderer.js
@@ -151,15 +151,14 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
- var layerStates = frameState.layerStates;
- var layersArray = frameState.layersArray;
+ var layerStatesArray = frameState.layerStatesArray;
var viewResolution = frameState.view2DState.resolution;
var i, ii, layer, layerRenderer, layerState;
- for (i = 0, ii = layersArray.length; i < ii; ++i) {
- layer = layersArray[i];
+ for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
+ layerState = layerStatesArray[i];
+ layer = layerState.layer;
layerRenderer = this.getLayerRenderer(layer);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.canvas.Layer);
- layerState = layerStates[goog.getUid(layer)];
if (!layerState.visible ||
layerState.sourceState != ol.source.State.READY ||
viewResolution >= layerState.maxResolution ||
diff --git a/src/ol/renderer/dom/dommaprenderer.js b/src/ol/renderer/dom/dommaprenderer.js
index 0eaa8410bb..8f5eec30ca 100644
--- a/src/ol/renderer/dom/dommaprenderer.js
+++ b/src/ol/renderer/dom/dommaprenderer.js
@@ -117,21 +117,21 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
});
}
- var layerStates = frameState.layerStates;
- var layersArray = frameState.layersArray;
+ var layerStatesArray = frameState.layerStatesArray;
var i, ii, layer, layerRenderer, layerState;
- for (i = 0, ii = layersArray.length; i < ii; ++i) {
- layer = layersArray[i];
+ for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
+ layerState = layerStatesArray[i];
+ layer = layerState.layer;
layerRenderer = /** @type {ol.renderer.dom.Layer} */ (
this.getLayerRenderer(layer));
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer);
addChild.call(this, layerRenderer.getTarget(), i);
- layerState = frameState.layerStates[goog.getUid(layer)];
if (layerState.sourceState == ol.source.State.READY) {
layerRenderer.prepareFrame(frameState, layerState);
}
}
+ var layerStates = frameState.layerStates;
var layerKey;
for (layerKey in this.getLayerRenderers()) {
if (!(layerKey in layerStates)) {
diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js
index aea240c698..df1f4597d1 100644
--- a/src/ol/renderer/webgl/webglmaprenderer.js
+++ b/src/ol/renderer/webgl/webglmaprenderer.js
@@ -441,27 +441,26 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
this.textureCache_.set((-frameState.index).toString(), null);
++this.textureCacheFrameMarkerCount_;
- /** @type {Array.} */
- var layersToDraw = [];
- var layersArray = frameState.layersArray;
+ /** @type {Array.} */
+ var layerStatesToDraw = [];
+ var layerStatesArray = frameState.layerStatesArray;
var viewResolution = frameState.view2DState.resolution;
- var i, ii, layer, layerRenderer, layerState;
- for (i = 0, ii = layersArray.length; i < ii; ++i) {
- layer = layersArray[i];
- layerState = frameState.layerStates[goog.getUid(layer)];
+ var i, ii, layerState;
+ for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
+ layerState = layerStatesArray[i];
if (layerState.visible &&
layerState.sourceState == ol.source.State.READY &&
viewResolution < layerState.maxResolution &&
viewResolution >= layerState.minResolution) {
- layersToDraw.push(layer);
+ layerStatesToDraw.push(layerState);
}
}
- for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
- layer = layersToDraw[i];
- layerRenderer = this.getLayerRenderer(layer);
+ var layerRenderer;
+ for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {
+ layerState = layerStatesToDraw[i];
+ layerRenderer = this.getLayerRenderer(layerState.layer);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
- layerState = frameState.layerStates[goog.getUid(layer)];
layerRenderer.prepareFrame(frameState, layerState);
}
@@ -481,10 +480,9 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
- for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
- layer = layersToDraw[i];
- layerState = frameState.layerStates[goog.getUid(layer)];
- layerRenderer = this.getLayerRenderer(layer);
+ for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {
+ layerState = layerStatesToDraw[i];
+ layerRenderer = this.getLayerRenderer(layerState.layer);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
layerRenderer.composeFrame(frameState, layerState, context);
}