Merge branch 'master' of github.com:openlayers/ol3 into animation-frame

Conflicts:
	src/ol/renderer/dom/tilelayer.js
This commit is contained in:
Tim Schaub
2012-10-08 00:50:12 -06:00
+9 -38
View File
@@ -33,12 +33,6 @@ ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer, target) {
*/ */
this.renderedMapResolution_ = undefined; this.renderedMapResolution_ = undefined;
/**
* @type {ol.Extent}
* @private
*/
this.renderedExtent_ = null;
/** /**
* @type {number|undefined} * @type {number|undefined}
* @private * @private
@@ -78,35 +72,18 @@ ol.renderer.dom.TileLayer.prototype.getTileOffset_ = function(z, resolution) {
/** /**
* Get rid of tiles that are not at the currently rendered z. * Get rid of all tiles that weren't drawn in the most recent rendering.
* @param {Object.<number, Object.<string, ol.Tile>>} tilesDrawnByZ Tiles just
* rendered.
* @private * @private
*/ */
ol.renderer.dom.TileLayer.prototype.removeAltZTiles_ = function() { ol.renderer.dom.TileLayer.prototype.removeExtraTiles_ =
var z = this.renderedZ_; function(tilesDrawnByZ) {
var key, tileCoord, tile; var key, tileCoord, tilesDrawn, tile;
for (key in this.renderedTiles_) { for (key in this.renderedTiles_) {
tileCoord = ol.TileCoord.createFromString(key); tileCoord = ol.TileCoord.createFromString(key);
if (tileCoord.z !== z) { tilesDrawn = tilesDrawnByZ[tileCoord.z];
tile = this.renderedTiles_[key]; if (!(tilesDrawn && key in tilesDrawn)) {
delete this.renderedTiles_[key];
goog.dom.removeNode(tile.getImage(this));
}
}
};
/**
* Get rid of tiles outside the rendered extent.
* @private
*/
ol.renderer.dom.TileLayer.prototype.removeOutOfRangeTiles_ = function() {
var mapExtent = this.renderedExtent_;
var grid = this.getLayer().getTileSource().getTileGrid();
var key, tileCoord, tileExtent, tile;
for (key in this.renderedTiles_) {
tileCoord = ol.TileCoord.createFromString(key);
tileExtent = grid.getTileCoordExtent(tileCoord);
if (!tileExtent.intersects(mapExtent)) {
tile = this.renderedTiles_[key]; tile = this.renderedTiles_[key];
delete this.renderedTiles_[key]; delete this.renderedTiles_[key];
goog.dom.removeNode(tile.getImage(this)); goog.dom.removeNode(tile.getImage(this));
@@ -156,7 +133,6 @@ ol.renderer.dom.TileLayer.prototype.render = function() {
// first pass through the tile range to determine all the tiles needed // first pass through the tile range to determine all the tiles needed
var allTilesLoaded = true;
tileRange.forEachTileCoord(z, function(tileCoord) { tileRange.forEachTileCoord(z, function(tileCoord) {
var tile = tileSource.getTile(tileCoord); var tile = tileSource.getTile(tileCoord);
if (goog.isNull(tile)) { if (goog.isNull(tile)) {
@@ -170,7 +146,6 @@ ol.renderer.dom.TileLayer.prototype.render = function() {
tilesToDrawByZ[z][key] = tile; tilesToDrawByZ[z][key] = tile;
return; return;
} else { } else {
allTilesLoaded = false;
if (state != ol.TileState.LOADING) { if (state != ol.TileState.LOADING) {
goog.events.listen(tile, goog.events.EventType.CHANGE, goog.events.listen(tile, goog.events.EventType.CHANGE,
this.handleTileChange_, false, this); this.handleTileChange_, false, this);
@@ -261,12 +236,8 @@ ol.renderer.dom.TileLayer.prototype.render = function() {
goog.dom.appendChild(this.target, fragment); goog.dom.appendChild(this.target, fragment);
} }
this.renderedExtent_ = mapExtent;
this.renderedZ_ = z; this.renderedZ_ = z;
this.renderedMapResolution_ = mapResolution; this.renderedMapResolution_ = mapResolution;
if (allTilesLoaded) { this.removeExtraTiles_(tilesToDrawByZ);
this.removeAltZTiles_();
}
this.removeOutOfRangeTiles_();
}; };