diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js index 9eea07979c..9c0c168e59 100644 --- a/src/ol/renderer/canvas/canvastilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js @@ -365,7 +365,7 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = /** @type {Array.} */ 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)); diff --git a/src/ol/source/tileimagesource.js b/src/ol/source/tileimagesource.js index d6be2e131e..5e7534d78d 100644 --- a/src/ol/source/tileimagesource.js +++ b/src/ol/source/tileimagesource.js @@ -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 */ diff --git a/src/ol/source/tilesource.js b/src/ol/source/tilesource.js index 754004e5f5..3ff95e2cf2 100644 --- a/src/ol/source/tilesource.js +++ b/src/ol/source/tilesource.js @@ -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_; };