Factor out updateTileUsage
This commit is contained in:
@@ -89,21 +89,6 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
|||||||
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
||||||
frameState.extent, tileResolution);
|
frameState.extent, tileResolution);
|
||||||
|
|
||||||
// FIXME should also consider interim tiles
|
|
||||||
var tileUsage = frameState.tileUsage;
|
|
||||||
var tileSourceKey = goog.getUid(tileSource).toString();
|
|
||||||
var zKey = z.toString();
|
|
||||||
if (tileSourceKey in tileUsage) {
|
|
||||||
if (z in tileUsage[tileSourceKey]) {
|
|
||||||
tileUsage[tileSourceKey][zKey].extend(tileRange);
|
|
||||||
} else {
|
|
||||||
tileUsage[tileSourceKey][zKey] = tileRange;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tileUsage[tileSourceKey] = {};
|
|
||||||
tileUsage[tileSourceKey][zKey] = tileRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @type {Object.<number, Object.<string, ol.Tile>>} */
|
/** @type {Object.<number, Object.<string, ol.Tile>>} */
|
||||||
var tilesToDrawByZ = {};
|
var tilesToDrawByZ = {};
|
||||||
tilesToDrawByZ[z] = {};
|
tilesToDrawByZ[z] = {};
|
||||||
@@ -251,6 +236,8 @@ ol.renderer.dom.TileLayer.prototype.renderFrame =
|
|||||||
frameState.animate = true;
|
frameState.animate = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.updateTileUsage(frameState.tileUsage, tileSource, z, tileRange);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ goog.provide('ol.renderer.Layer');
|
|||||||
goog.require('goog.events');
|
goog.require('goog.events');
|
||||||
goog.require('goog.events.EventType');
|
goog.require('goog.events.EventType');
|
||||||
goog.require('ol.Object');
|
goog.require('ol.Object');
|
||||||
|
goog.require('ol.TileRange');
|
||||||
goog.require('ol.layer.Layer');
|
goog.require('ol.layer.Layer');
|
||||||
goog.require('ol.layer.LayerProperty');
|
goog.require('ol.layer.LayerProperty');
|
||||||
|
|
||||||
@@ -125,3 +126,28 @@ ol.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction;
|
|||||||
* @protected
|
* @protected
|
||||||
*/
|
*/
|
||||||
ol.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction;
|
ol.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @protected
|
||||||
|
* @param {Object.<string, Object.<string, ol.TileRange>>} tileUsage Tile usage.
|
||||||
|
* @param {ol.source.Source} source Source.
|
||||||
|
* @param {number} z Z.
|
||||||
|
* @param {ol.TileRange} tileRange Tile range.
|
||||||
|
*/
|
||||||
|
ol.renderer.Layer.prototype.updateTileUsage =
|
||||||
|
function(tileUsage, source, z, tileRange) {
|
||||||
|
// FIXME should we use tilesToDrawByZ instead?
|
||||||
|
var sourceKey = goog.getUid(source).toString();
|
||||||
|
var zKey = z.toString();
|
||||||
|
if (sourceKey in tileUsage) {
|
||||||
|
if (z in tileUsage[sourceKey]) {
|
||||||
|
tileUsage[sourceKey][zKey].extend(tileRange);
|
||||||
|
} else {
|
||||||
|
tileUsage[sourceKey][zKey] = tileRange;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
tileUsage[sourceKey] = {};
|
||||||
|
tileUsage[sourceKey][zKey] = tileRange;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
@@ -276,23 +276,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
var tileRange = tileGrid.getTileRangeForExtentAndResolution(
|
||||||
frameState.extent, tileResolution);
|
frameState.extent, tileResolution);
|
||||||
|
|
||||||
// FIXME should also consider interim tiles
|
|
||||||
var tileUsage = frameState.tileUsage;
|
|
||||||
var tileSourceKey = goog.getUid(tileSource).toString();
|
|
||||||
var zKey = z.toString();
|
|
||||||
if (tileSourceKey in tileUsage) {
|
|
||||||
if (z in tileUsage[tileSourceKey]) {
|
|
||||||
tileUsage[tileSourceKey][zKey].extend(tileRange);
|
|
||||||
} else {
|
|
||||||
tileUsage[tileSourceKey][zKey] = tileRange;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
tileUsage[tileSourceKey] = {};
|
|
||||||
tileUsage[tileSourceKey][zKey] = tileRange;
|
|
||||||
}
|
|
||||||
|
|
||||||
var framebufferExtent;
|
var framebufferExtent;
|
||||||
|
|
||||||
if (!goog.isNull(this.renderedTileRange_) &&
|
if (!goog.isNull(this.renderedTileRange_) &&
|
||||||
this.renderedTileRange_.equals(tileRange)) {
|
this.renderedTileRange_.equals(tileRange)) {
|
||||||
framebufferExtent = this.renderedFramebufferExtent_;
|
framebufferExtent = this.renderedFramebufferExtent_;
|
||||||
@@ -475,6 +459,8 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.updateTileUsage(frameState.tileUsage, tileSource, z, tileRange);
|
||||||
|
|
||||||
goog.vec.Mat4.makeIdentity(this.matrix_);
|
goog.vec.Mat4.makeIdentity(this.matrix_);
|
||||||
goog.vec.Mat4.translate(this.matrix_,
|
goog.vec.Mat4.translate(this.matrix_,
|
||||||
(view2DState.center.x - framebufferExtent.minX) /
|
(view2DState.center.x - framebufferExtent.minX) /
|
||||||
|
|||||||
Reference in New Issue
Block a user