Reuse existing canvases from vector render tiles

This commit is contained in:
Andreas Hocevar
2020-01-08 10:42:34 +01:00
parent 5a8df1d4e2
commit 9f4dbd3c35
4 changed files with 27 additions and 4 deletions

View File

@@ -18,6 +18,10 @@ import {createCanvasContext2D} from './dom.js';
* @property {number} renderedTileZ
*/
/**
* @type {Array<HTMLCanvasElement>}
*/
const canvasPool = [];
class VectorRenderTile extends Tile {
@@ -107,7 +111,7 @@ class VectorRenderTile extends Tile {
getContext(layer) {
const key = getUid(layer);
if (!(key in this.context_)) {
this.context_[key] = createCanvasContext2D();
this.context_[key] = createCanvasContext2D(1, 1, canvasPool);
}
return this.context_[key];
}
@@ -156,6 +160,16 @@ class VectorRenderTile extends Tile {
load() {
this.getSourceTiles();
}
/**
* @inheritDoc
*/
release() {
for (const key in this.context_) {
canvasPool.push(this.context_[key].canvas);
}
super.release();
}
}