Consider layer opacity for lower resolution tile clipping
This commit is contained in:
@@ -9,6 +9,7 @@ goog.require('ol.array');
|
|||||||
goog.require('ol.dom');
|
goog.require('ol.dom');
|
||||||
goog.require('ol.extent');
|
goog.require('ol.extent');
|
||||||
goog.require('ol.layer.Tile');
|
goog.require('ol.layer.Tile');
|
||||||
|
goog.require('ol.object');
|
||||||
goog.require('ol.render.EventType');
|
goog.require('ol.render.EventType');
|
||||||
goog.require('ol.renderer.canvas.Layer');
|
goog.require('ol.renderer.canvas.Layer');
|
||||||
goog.require('ol.source.Tile');
|
goog.require('ol.source.Tile');
|
||||||
@@ -25,9 +26,9 @@ ol.renderer.canvas.TileLayer = function(tileLayer) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
* @type {Object.<string, Array.<ol.Extent>>}
|
* @type {!Object.<string, Array.<ol.Extent>>}
|
||||||
*/
|
*/
|
||||||
this.clipExtents_ = null;
|
this.clipExtents_ = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
@@ -68,7 +69,6 @@ ol.renderer.canvas.TileLayer.prototype.composeFrame = function(
|
|||||||
goog.asserts.assertInstanceof(source, ol.source.Tile,
|
goog.asserts.assertInstanceof(source, ol.source.Tile,
|
||||||
'source is an ol.source.Tile');
|
'source is an ol.source.Tile');
|
||||||
var tileGutter = source.getGutter(projection);
|
var tileGutter = source.getGutter(projection);
|
||||||
var opaque = source.getOpaque(projection);
|
|
||||||
|
|
||||||
var transform = this.getTransform(frameState, 0);
|
var transform = this.getTransform(frameState, 0);
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ ol.renderer.canvas.TileLayer.prototype.composeFrame = function(
|
|||||||
tile = tilesToDraw[i];
|
tile = tilesToDraw[i];
|
||||||
tileExtent = tileGrid.getTileCoordExtent(
|
tileExtent = tileGrid.getTileCoordExtent(
|
||||||
tile.getTileCoord(), this.tmpExtent_);
|
tile.getTileCoord(), this.tmpExtent_);
|
||||||
clipExtents = !opaque && this.clipExtents_[tile.tileCoord.toString()];
|
clipExtents = this.clipExtents_[tile.tileCoord.toString()];
|
||||||
if (clipExtents) {
|
if (clipExtents) {
|
||||||
// Create a clip mask for regions in this low resolution tile that will be
|
// Create a clip mask for regions in this low resolution tile that will be
|
||||||
// filled by a higher resolution tile
|
// filled by a higher resolution tile
|
||||||
@@ -266,8 +266,9 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.renderedTiles_ = renderables;
|
this.renderedTiles_ = renderables;
|
||||||
if (!tileSource.getOpaque(projection)) {
|
ol.object.clear(this.clipExtents_);
|
||||||
var clipExtents = {};
|
if (!(tileSource.getOpaque(projection) && layerState.opacity == 1)) {
|
||||||
|
var clipExtents = this.clipExtents_;
|
||||||
var tileCoord;
|
var tileCoord;
|
||||||
for (i = renderables.length - 1; i >= 0; --i) {
|
for (i = renderables.length - 1; i >= 0; --i) {
|
||||||
tileCoord = renderables[i].getTileCoord();
|
tileCoord = renderables[i].getTileCoord();
|
||||||
@@ -291,7 +292,6 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame = function(
|
|||||||
return false;
|
return false;
|
||||||
}, this, tmpTileRange, tmpExtent);
|
}, this, tmpTileRange, tmpExtent);
|
||||||
}
|
}
|
||||||
this.clipExtents_ = clipExtents;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
|
this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange);
|
||||||
|
|||||||
Reference in New Issue
Block a user