Only render and cache tiles that have features
This commit is contained in:
@@ -406,7 +406,7 @@ ol.renderer.canvas.VectorLayer.prototype.renderFrame =
|
|||||||
deferred = false,
|
deferred = false,
|
||||||
dirty = false,
|
dirty = false,
|
||||||
i, geomFilter, tileExtent, extentFilter, type,
|
i, geomFilter, tileExtent, extentFilter, type,
|
||||||
groups, group, j, numGroups;
|
groups, group, j, numGroups, featuresObject, tileHasFeatures;
|
||||||
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
||||||
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
|
for (y = tileRange.minY; y <= tileRange.maxY; ++y) {
|
||||||
tileCoord = new ol.TileCoord(z, x, y);
|
tileCoord = new ol.TileCoord(z, x, y);
|
||||||
@@ -420,17 +420,22 @@ ol.renderer.canvas.VectorLayer.prototype.renderFrame =
|
|||||||
tileExtent[2] -= tileGutter;
|
tileExtent[2] -= tileGutter;
|
||||||
tileExtent[3] += tileGutter;
|
tileExtent[3] += tileGutter;
|
||||||
extentFilter = new ol.filter.Extent(tileExtent);
|
extentFilter = new ol.filter.Extent(tileExtent);
|
||||||
|
tileHasFeatures = false;
|
||||||
for (i = 0; i < numFilters; ++i) {
|
for (i = 0; i < numFilters; ++i) {
|
||||||
geomFilter = filters[i];
|
geomFilter = filters[i];
|
||||||
type = geomFilter.getType();
|
type = geomFilter.getType();
|
||||||
if (!goog.isDef(featuresToRender[type])) {
|
if (!goog.isDef(featuresToRender[type])) {
|
||||||
featuresToRender[type] = {};
|
featuresToRender[type] = {};
|
||||||
}
|
}
|
||||||
goog.object.extend(featuresToRender[type],
|
featuresObject = layer.getFeaturesObject(new ol.filter.Logical(
|
||||||
layer.getFeaturesObject(new ol.filter.Logical(
|
[geomFilter, extentFilter], ol.filter.LogicalOperator.AND));
|
||||||
[geomFilter, extentFilter], ol.filter.LogicalOperator.AND)));
|
tileHasFeatures = tileHasFeatures ||
|
||||||
|
!goog.object.isEmpty(featuresObject);
|
||||||
|
goog.object.extend(featuresToRender[type], featuresObject);
|
||||||
|
}
|
||||||
|
if (tileHasFeatures) {
|
||||||
|
tilesOnSketchCanvas[key] = tileCoord;
|
||||||
}
|
}
|
||||||
tilesOnSketchCanvas[key] = tileCoord;
|
|
||||||
} else {
|
} else {
|
||||||
dirty = true;
|
dirty = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user