Handle tile source revisions in DOM tile layer renderer
This commit is contained in:
@@ -49,6 +49,12 @@ ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer) {
|
|||||||
*/
|
*/
|
||||||
this.renderedOpacity_ = 1;
|
this.renderedOpacity_ = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
*/
|
||||||
|
this.renderedRevision_ = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {Object.<number, ol.renderer.dom.TileLayerZ_>}
|
* @type {Object.<number, ol.renderer.dom.TileLayerZ_>}
|
||||||
@@ -145,6 +151,19 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the tile source revision changes, we destroy the existing DOM structure
|
||||||
|
// so that a new one will be created. It would be more efficient to modify
|
||||||
|
// the existing structure.
|
||||||
|
var tileLayerZ, tileLayerZKey;
|
||||||
|
if (this.renderedRevision_ != tileSource.getRevision()) {
|
||||||
|
for (tileLayerZKey in this.tileLayerZs_) {
|
||||||
|
tileLayerZ = this.tileLayerZs_[+tileLayerZKey];
|
||||||
|
goog.dom.removeNode(tileLayerZ.target);
|
||||||
|
}
|
||||||
|
this.tileLayerZs_ = {};
|
||||||
|
this.renderedRevision_ = tileSource.getRevision();
|
||||||
|
}
|
||||||
|
|
||||||
/** @type {Array.<number>} */
|
/** @type {Array.<number>} */
|
||||||
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
|
||||||
goog.array.sort(zs);
|
goog.array.sort(zs);
|
||||||
@@ -152,8 +171,7 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
|||||||
/** @type {Object.<number, boolean>} */
|
/** @type {Object.<number, boolean>} */
|
||||||
var newTileLayerZKeys = {};
|
var newTileLayerZKeys = {};
|
||||||
|
|
||||||
var iz, iziz;
|
var iz, iziz, tileCoordKey, tileCoordOrigin, tilesToDraw;
|
||||||
var tileCoordKey, tileCoordOrigin, tileLayerZ, tileLayerZKey, tilesToDraw;
|
|
||||||
for (iz = 0, iziz = zs.length; iz < iziz; ++iz) {
|
for (iz = 0, iziz = zs.length; iz < iziz; ++iz) {
|
||||||
tileLayerZKey = zs[iz];
|
tileLayerZKey = zs[iz];
|
||||||
if (tileLayerZKey in this.tileLayerZs_) {
|
if (tileLayerZKey in this.tileLayerZs_) {
|
||||||
|
|||||||
Reference in New Issue
Block a user