diff --git a/src/ol/renderer/Composite.js b/src/ol/renderer/Composite.js index 0a94afe680..269ee6e560 100644 --- a/src/ol/renderer/Composite.js +++ b/src/ol/renderer/Composite.js @@ -130,6 +130,9 @@ class CompositeMapRenderer extends MapRenderer { const layer = layerState.layer; if (visibleAtResolution(layerState, viewResolution) && layerFilter.call(thisArg2, layer)) { const layerRenderer = this.getLayerRenderer(layer); + if (!layerRenderer) { + continue; + } result = layerRenderer.forEachLayerAtCoordinate(coordinate, frameState, hitTolerance, callback, thisArg); if (result) { return result; diff --git a/src/ol/renderer/Map.js b/src/ol/renderer/Map.js index dd8bff7c49..10cc048dad 100644 --- a/src/ol/renderer/Map.js +++ b/src/ol/renderer/Map.js @@ -141,7 +141,7 @@ class MapRenderer extends Disposable { if (visibleAtResolution(layerState, viewResolution) && layerFilter.call(thisArg2, layer)) { const layerRenderer = this.getLayerRenderer(layer); const source = layer.getSource(); - if (source) { + if (layerRenderer && source) { result = layerRenderer.forEachFeatureAtCoordinate( source.getWrapX() ? translatedCoordinate : coordinate, frameState, hitTolerance, forEachFeatureAtCoordinate); @@ -196,7 +196,7 @@ class MapRenderer extends Disposable { /** * @param {import("../layer/Layer.js").default} layer Layer. * @protected - * @return {import("./Layer.js").default} Layer renderer. + * @return {import("./Layer.js").default} Layer renderer. May return null. */ getLayerRenderer(layer) { const layerKey = getUid(layer); @@ -204,9 +204,9 @@ class MapRenderer extends Disposable { return this.layerRenderers_[layerKey]; } - const renderer = layer.getRenderer(this); + const renderer = layer.getRenderer(); if (!renderer) { - throw new Error('Unable to create renderer for layer'); + return null; } this.layerRenderers_[layerKey] = renderer;