Merge pull request #4628 from klokantech/opaque-reprojection-fix

Fix for reprojecting opaque tile sources
This commit is contained in:
Petr Sloup
2016-01-12 09:06:14 +01:00
3 changed files with 17 additions and 2 deletions

View File

@@ -365,7 +365,7 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
/** @type {Array.<number>} */
var zs = Object.keys(tilesToDrawByZ).map(Number);
zs.sort(ol.array.numberSafeCompareFunction);
var opaque = tileSource.getOpaque();
var opaque = tileSource.getOpaque(projection);
var origin = ol.extent.getTopLeft(tileGrid.getTileCoordExtent(
[z, canvasTileRange.minX, canvasTileRange.maxY],
tmpExtent));

View File

@@ -120,6 +120,20 @@ ol.source.TileImage.prototype.expireCache = function(projection, usedTiles) {
};
/**
* @inheritDoc
*/
ol.source.TileImage.prototype.getOpaque = function(projection) {
if (ol.ENABLE_RASTER_REPROJECTION &&
this.getProjection() && projection &&
!ol.proj.equivalent(this.getProjection(), projection)) {
return false;
} else {
return goog.base(this, 'getOpaque', projection);
}
};
/**
* @inheritDoc
*/

View File

@@ -178,9 +178,10 @@ ol.source.Tile.prototype.getKeyZXY = ol.tilecoord.getKeyZXY;
/**
* @param {ol.proj.Projection} projection
* @return {boolean} Opaque.
*/
ol.source.Tile.prototype.getOpaque = function() {
ol.source.Tile.prototype.getOpaque = function(projection) {
return this.opaque_;
};