From e6a2d4b2355208b91f7ccf438cfd8aa268e619ae Mon Sep 17 00:00:00 2001 From: John Leonard Date: Mon, 9 Mar 2020 18:36:12 +0000 Subject: [PATCH] fix: handle layer clear event in case clear(true) called and individual delete feature events aren't generated --- src/ol/renderer/webgl/PointsLayer.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ol/renderer/webgl/PointsLayer.js b/src/ol/renderer/webgl/PointsLayer.js index d6da17801d..b35e3831b7 100644 --- a/src/ol/renderer/webgl/PointsLayer.js +++ b/src/ol/renderer/webgl/PointsLayer.js @@ -290,7 +290,8 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { this.sourceListenKeys_ = [ listen(source, VectorEventType.ADDFEATURE, this.handleSourceFeatureAdded_, this), listen(source, VectorEventType.CHANGEFEATURE, this.handleSourceFeatureChanged_, this), - listen(source, VectorEventType.REMOVEFEATURE, this.handleSourceFeatureDelete_, this) + listen(source, VectorEventType.REMOVEFEATURE, this.handleSourceFeatureDelete_, this), + listen(source, VectorEventType.CLEAR, this.handleSourceFeatureClear_, this) ]; source.forEachFeature(function(feature) { this.featureCache_[getUid(feature)] = { @@ -339,6 +340,14 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer { this.featureCount_--; } + /** + * @private + */ + handleSourceFeatureClear_() { + this.featureCache_ = {}; + this.featureCount_ = 0; + } + /** * @inheritDoc */