Make map methods tolerant of layers without renderers

This commit is contained in:
Tim Schaub
2018-11-15 12:35:54 +01:00
parent 96dd5417e3
commit 3f624ec0c0
2 changed files with 7 additions and 4 deletions

View File

@@ -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;

View File

@@ -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;