diff --git a/src/renderer/layer/CanvasRenderer.js b/src/renderer/layer/CanvasRenderer.js index 5e75f7475..d1fbd7ee8 100644 --- a/src/renderer/layer/CanvasRenderer.js +++ b/src/renderer/layer/CanvasRenderer.js @@ -41,6 +41,10 @@ class CanvasRenderer extends Class { this.resources = new ResourceCache(); /* eslint-enable no-use-before-define */ } + this.checkAndDraw(this._tryToDraw, framestamp); + } + + checkAndDraw(drawFn, ...args) { if (this.checkResources) { const resources = this.checkResources(); if (resources.length > 0) { @@ -61,10 +65,10 @@ class CanvasRenderer extends Class { } }); } else { - this._tryToDraw(framestamp); + drawFn.call(this, ...args); } } else { - this._tryToDraw(framestamp); + drawFn.call(this, ...args); } } @@ -149,7 +153,7 @@ class CanvasRenderer extends Class { * Whether must call render instead of drawOnInteracting when map is interacting */ mustRenderOnInteracting() { - return !this._painted || (this.checkResources && this.checkResources().length > 0); + return !this._painted; } /** diff --git a/src/renderer/map/MapCanvasRenderer.js b/src/renderer/map/MapCanvasRenderer.js index 353e89003..4ce0d74e0 100644 --- a/src/renderer/map/MapCanvasRenderer.js +++ b/src/renderer/map/MapCanvasRenderer.js @@ -143,7 +143,7 @@ class MapCanvasRenderer extends MapRenderer { if (renderer.prepareRender) { renderer.prepareRender(); } - renderer.drawOnInteracting(this._eventParam, framestamp); + renderer.checkAndDraw(renderer.drawOnInteracting, this._eventParam, framestamp); } else { // map is not interacting, call layer's render renderer.render(framestamp); @@ -221,7 +221,7 @@ class MapCanvasRenderer extends MapRenderer { // call drawOnInteracting to redraw the layer renderer.prepareRender(); renderer.prepareCanvas(); - renderer.drawOnInteracting(this._eventParam, framestamp); + renderer.checkAndDraw(renderer.drawOnInteracting, this._eventParam, framestamp); return drawTime; } else if (map.isZooming() && !map.getPitch() && !map.isRotating()) { // when: