Only draw the layer if visible and inside the resolution range

This commit is contained in:
Frederic Junod
2015-04-20 12:15:34 +02:00
parent c31a9ee71e
commit 8fd2fae0cb

View File

@@ -14,6 +14,7 @@ goog.require('ol.RendererType');
goog.require('ol.css');
goog.require('ol.dom');
goog.require('ol.layer.Image');
goog.require('ol.layer.Layer');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.render.Event');
@@ -232,6 +233,7 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
var layerStatesArray = frameState.layerStatesArray;
var viewResolution = frameState.viewState.resolution;
var i, ii, layer, layerRenderer, layerState;
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
layerState = layerStatesArray[i];
@@ -241,7 +243,8 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer,
'renderer is an instance of ol.renderer.dom.Layer');
addChild.call(this, layerRenderer.getTarget(), i);
if (layerState.sourceState == ol.source.State.READY) {
if (ol.layer.Layer.visibleAtResolution(layerState, viewResolution) &&
layerState.sourceState == ol.source.State.READY) {
if (layerRenderer.prepareFrame(frameState, layerState)) {
layerRenderer.composeFrame(frameState, layerState);
}