Merge pull request #3591 from fredj/fixes-3589
Only draw the layer if visible and inside the resolution range
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user