Merge pull request #3591 from fredj/fixes-3589

Only draw the layer if visible and inside the resolution range
This commit is contained in:
Frédéric Junod
2015-04-20 12:45:23 +02:00
2 changed files with 5 additions and 1 deletions

View File

@@ -22,6 +22,7 @@ var layers = [
var map = new ol.Map({
layers: layers,
target: 'map',
renderer: common.getRendererFromQueryString(),
view: new ol.View({
center: [-10997148, 4569099],
zoom: 4

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);
}