Only render parts of source tile that are needed for the view tile
This commit is contained in:
@@ -159,6 +159,8 @@ ol.renderer.canvas.VectorTileLayer.prototype.createReplayGroup_ = function(
|
|||||||
var sourceTileCoord = sourceTile.tileCoord;
|
var sourceTileCoord = sourceTile.tileCoord;
|
||||||
var sourceTileExtent = sourceTileGrid.getTileCoordExtent(sourceTileCoord);
|
var sourceTileExtent = sourceTileGrid.getTileCoordExtent(sourceTileCoord);
|
||||||
var sharedExtent = ol.extent.getIntersection(tileExtent, sourceTileExtent);
|
var sharedExtent = ol.extent.getIntersection(tileExtent, sourceTileExtent);
|
||||||
|
var bufferedExtent = ol.extent.equals(sourceTileExtent, sharedExtent) ? null :
|
||||||
|
ol.extent.buffer(sharedExtent, layer.getRenderBuffer() * resolution);
|
||||||
var tileProjection = sourceTile.getProjection();
|
var tileProjection = sourceTile.getProjection();
|
||||||
var reproject = false;
|
var reproject = false;
|
||||||
if (!ol.proj.equivalent(projection, tileProjection)) {
|
if (!ol.proj.equivalent(projection, tileProjection)) {
|
||||||
@@ -210,7 +212,9 @@ ol.renderer.canvas.VectorTileLayer.prototype.createReplayGroup_ = function(
|
|||||||
}
|
}
|
||||||
feature.getGeometry().transform(tileProjection, projection);
|
feature.getGeometry().transform(tileProjection, projection);
|
||||||
}
|
}
|
||||||
renderFeature.call(this, feature);
|
if (!bufferedExtent || ol.extent.intersects(bufferedExtent, feature.getExtent())) {
|
||||||
|
renderFeature.call(this, feature);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
replayGroup.finish();
|
replayGroup.finish();
|
||||||
sourceTile.setReplayGroup(layer, tile.tileCoord.toString(), replayGroup);
|
sourceTile.setReplayGroup(layer, tile.tileCoord.toString(), replayGroup);
|
||||||
|
|||||||
Reference in New Issue
Block a user