From f48704cac4b42f7ace9c71f15d1c7fefb24c3ddd Mon Sep 17 00:00:00 2001 From: mike-000 <49240900+mike-000@users.noreply.github.com> Date: Wed, 1 Jan 2020 21:04:12 +0000 Subject: [PATCH] Fix for undefined source in Vector layer A source left or set undefined is equivalent to an empty source so treat it as such to prevent errors in prepareFrame --- src/ol/renderer/canvas/VectorLayer.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ol/renderer/canvas/VectorLayer.js b/src/ol/renderer/canvas/VectorLayer.js index b451a01b88..3915ba8a66 100644 --- a/src/ol/renderer/canvas/VectorLayer.js +++ b/src/ol/renderer/canvas/VectorLayer.js @@ -11,6 +11,16 @@ import CanvasLayerRenderer from './Layer.js'; import {defaultOrder as defaultRenderOrder, getTolerance as getRenderTolerance, getSquaredTolerance as getSquaredRenderTolerance, renderFeature} from '../vector.js'; import {toString as transformToString, makeScale, makeInverse, apply} from '../../transform.js'; import {createHitDetectionImageData, hitDetect} from '../../render/canvas/hitdetect.js'; +import VectorSource from '../../source/Vector.js'; + + +/** + * @const + * @type {VectorSource} + * @private + */ +const emptySource = new VectorSource(); + /** * @classdesc @@ -328,7 +338,7 @@ class CanvasVectorLayerRenderer extends CanvasLayerRenderer { */ prepareFrame(frameState) { const vectorLayer = this.getLayer(); - const vectorSource = vectorLayer.getSource(); + const vectorSource = vectorLayer.getSource() || emptySource; const animating = frameState.viewHints[ViewHint.ANIMATING]; const interacting = frameState.viewHints[ViewHint.INTERACTING];