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;
|
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_();
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user