Make map methods tolerant of layers without renderers
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user