diff --git a/src/ol/control/Attribution.js b/src/ol/control/Attribution.js index cdff920019..81b7b81931 100644 --- a/src/ol/control/Attribution.js +++ b/src/ol/control/Attribution.js @@ -8,7 +8,7 @@ import {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js'; import {removeChildren, replaceNode} from '../dom.js'; import {listen} from '../events.js'; import EventType from '../events/EventType.js'; -import Layer from '../layer/Layer.js'; +import {visibleAtResolution} from '../layer/Layer.js'; /** * @classdesc @@ -146,7 +146,7 @@ Attribution.prototype.getSourceAttributions_ = function(frameState) { const resolution = frameState.viewState.resolution; for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) { const layerState = layerStatesArray[i]; - if (!Layer.visibleAtResolution(layerState, resolution)) { + if (!visibleAtResolution(layerState, resolution)) { continue; } diff --git a/src/ol/layer/Layer.js b/src/ol/layer/Layer.js index 094aaa6007..1f6bf6ef29 100644 --- a/src/ol/layer/Layer.js +++ b/src/ol/layer/Layer.js @@ -81,10 +81,10 @@ inherits(Layer, BaseLayer); * @param {number} resolution Resolution. * @return {boolean} The layer is visible at the given resolution. */ -Layer.visibleAtResolution = function(layerState, resolution) { +export function visibleAtResolution(layerState, resolution) { return layerState.visible && resolution >= layerState.minResolution && resolution < layerState.maxResolution; -}; +} /** diff --git a/src/ol/renderer/Map.js b/src/ol/renderer/Map.js index 847e76cb2d..dc7c63ffa2 100644 --- a/src/ol/renderer/Map.js +++ b/src/ol/renderer/Map.js @@ -7,7 +7,7 @@ import {listen, unlistenByKey} from '../events.js'; import EventType from '../events/EventType.js'; import {getWidth} from '../extent.js'; import {TRUE} from '../functions.js'; -import Layer from '../layer/Layer.js'; +import {visibleAtResolution} from '../layer/Layer.js'; import {getLayerRendererPlugins} from '../plugins.js'; import {iconImageCache} from '../style.js'; import _ol_transform_ from '../transform.js'; @@ -139,8 +139,7 @@ MapRenderer.prototype.forEachFeatureAtCoordinate = function(coordinate, frameSta for (i = numLayers - 1; i >= 0; --i) { const layerState = layerStates[i]; const layer = layerState.layer; - if (Layer.visibleAtResolution(layerState, viewResolution) && - layerFilter.call(thisArg2, layer)) { + if (visibleAtResolution(layerState, viewResolution) && layerFilter.call(thisArg2, layer)) { const layerRenderer = this.getLayerRenderer(layer); if (layer.getSource()) { result = layerRenderer.forEachFeatureAtCoordinate( diff --git a/src/ol/renderer/canvas/Map.js b/src/ol/renderer/canvas/Map.js index 0b655c7c0e..2bf44fd300 100644 --- a/src/ol/renderer/canvas/Map.js +++ b/src/ol/renderer/canvas/Map.js @@ -8,7 +8,7 @@ import {inherits} from '../../index.js'; import {stableSort} from '../../array.js'; import {CLASS_UNSELECTABLE} from '../../css.js'; import {createCanvasContext2D} from '../../dom.js'; -import Layer from '../../layer/Layer.js'; +import {visibleAtResolution} from '../../layer/Layer.js'; import RenderEvent from '../../render/Event.js'; import RenderEventType from '../../render/EventType.js'; import _ol_render_canvas_ from '../../render/canvas.js'; @@ -179,7 +179,7 @@ CanvasMapRenderer.prototype.renderFrame = function(frameState) { layerState = layerStatesArray[i]; layer = layerState.layer; layerRenderer = /** @type {ol.renderer.canvas.Layer} */ (this.getLayerRenderer(layer)); - if (!Layer.visibleAtResolution(layerState, viewResolution) || + if (!visibleAtResolution(layerState, viewResolution) || layerState.sourceState != SourceState.READY) { continue; } @@ -223,8 +223,7 @@ CanvasMapRenderer.prototype.forEachLayerAtPixel = function(pixel, frameState, ca for (i = numLayers - 1; i >= 0; --i) { const layerState = layerStates[i]; const layer = layerState.layer; - if (Layer.visibleAtResolution(layerState, viewResolution) && - layerFilter.call(thisArg2, layer)) { + if (visibleAtResolution(layerState, viewResolution) && layerFilter.call(thisArg2, layer)) { const layerRenderer = /** @type {ol.renderer.canvas.Layer} */ (this.getLayerRenderer(layer)); result = layerRenderer.forEachLayerAtCoordinate( coordinate, frameState, callback, thisArg); diff --git a/test/spec/ol/layer/layer.test.js b/test/spec/ol/layer/layer.test.js index 7d8ca955e7..01b8d1931b 100644 --- a/test/spec/ol/layer/layer.test.js +++ b/test/spec/ol/layer/layer.test.js @@ -1,6 +1,6 @@ import {getUid} from '../../../../src/ol/index.js'; import Map from '../../../../src/ol/Map.js'; -import Layer from '../../../../src/ol/layer/Layer.js'; +import Layer, {visibleAtResolution} from '../../../../src/ol/layer/Layer.js'; import {get as getProjection} from '../../../../src/ol/proj.js'; import RenderEvent from '../../../../src/ol/render/Event.js'; import Source from '../../../../src/ol/source/Source.js'; @@ -117,7 +117,7 @@ describe('ol.layer.Layer', function() { layer.setMinResolution(3); layer.setMaxResolution(5); const layerState = layer.getLayerState(); - expect(Layer.visibleAtResolution(layerState, 4)).to.be(false); + expect(visibleAtResolution(layerState, 4)).to.be(false); }); it('returns false if resolution lower than minResolution', function() { @@ -125,7 +125,7 @@ describe('ol.layer.Layer', function() { layer.setMinResolution(3); layer.setMaxResolution(5); const layerState = layer.getLayerState(); - expect(Layer.visibleAtResolution(layerState, 2)).to.be(false); + expect(visibleAtResolution(layerState, 2)).to.be(false); }); it('returns false if resolution greater than maxResolution', function() { @@ -133,7 +133,7 @@ describe('ol.layer.Layer', function() { layer.setMinResolution(3); layer.setMaxResolution(5); const layerState = layer.getLayerState(); - expect(Layer.visibleAtResolution(layerState, 6)).to.be(false); + expect(visibleAtResolution(layerState, 6)).to.be(false); }); it('returns true otherwise', function() { @@ -141,7 +141,7 @@ describe('ol.layer.Layer', function() { layer.setMinResolution(3); layer.setMaxResolution(5); const layerState = layer.getLayerState(); - expect(Layer.visibleAtResolution(layerState, 4)).to.be(true); + expect(visibleAtResolution(layerState, 4)).to.be(true); }); });