Merge branch 'master' of github.com:openlayers/ol3 into animation-frame
Conflicts: src/ol/renderer/dom/tilelayer.js
This commit is contained in:
@@ -33,12 +33,6 @@ ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer, target) {
|
||||
*/
|
||||
this.renderedMapResolution_ = undefined;
|
||||
|
||||
/**
|
||||
* @type {ol.Extent}
|
||||
* @private
|
||||
*/
|
||||
this.renderedExtent_ = null;
|
||||
|
||||
/**
|
||||
* @type {number|undefined}
|
||||
* @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
|
||||
*/
|
||||
ol.renderer.dom.TileLayer.prototype.removeAltZTiles_ = function() {
|
||||
var z = this.renderedZ_;
|
||||
var key, tileCoord, tile;
|
||||
ol.renderer.dom.TileLayer.prototype.removeExtraTiles_ =
|
||||
function(tilesDrawnByZ) {
|
||||
var key, tileCoord, tilesDrawn, tile;
|
||||
for (key in this.renderedTiles_) {
|
||||
tileCoord = ol.TileCoord.createFromString(key);
|
||||
if (tileCoord.z !== z) {
|
||||
tile = this.renderedTiles_[key];
|
||||
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)) {
|
||||
tilesDrawn = tilesDrawnByZ[tileCoord.z];
|
||||
if (!(tilesDrawn && key in tilesDrawn)) {
|
||||
tile = this.renderedTiles_[key];
|
||||
delete this.renderedTiles_[key];
|
||||
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
|
||||
var allTilesLoaded = true;
|
||||
tileRange.forEachTileCoord(z, function(tileCoord) {
|
||||
var tile = tileSource.getTile(tileCoord);
|
||||
if (goog.isNull(tile)) {
|
||||
@@ -170,7 +146,6 @@ ol.renderer.dom.TileLayer.prototype.render = function() {
|
||||
tilesToDrawByZ[z][key] = tile;
|
||||
return;
|
||||
} else {
|
||||
allTilesLoaded = false;
|
||||
if (state != ol.TileState.LOADING) {
|
||||
goog.events.listen(tile, goog.events.EventType.CHANGE,
|
||||
this.handleTileChange_, false, this);
|
||||
@@ -261,12 +236,8 @@ ol.renderer.dom.TileLayer.prototype.render = function() {
|
||||
goog.dom.appendChild(this.target, fragment);
|
||||
}
|
||||
|
||||
this.renderedExtent_ = mapExtent;
|
||||
this.renderedZ_ = z;
|
||||
this.renderedMapResolution_ = mapResolution;
|
||||
|
||||
if (allTilesLoaded) {
|
||||
this.removeAltZTiles_();
|
||||
}
|
||||
this.removeOutOfRangeTiles_();
|
||||
this.removeExtraTiles_(tilesToDrawByZ);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user