Skip executor groups when tile does not contain coordinates

This commit is contained in:
Maximilian Krög
2020-11-29 18:14:26 +01:00
parent f3a7703194
commit cde2dac19f
+1 -10
View File
@@ -389,7 +389,6 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const rotation = frameState.viewState.rotation; const rotation = frameState.viewState.rotation;
hitTolerance = hitTolerance == undefined ? 0 : hitTolerance; hitTolerance = hitTolerance == undefined ? 0 : hitTolerance;
const layer = this.getLayer(); const layer = this.getLayer();
const declutter = layer.getDeclutter();
const source = layer.getSource(); const source = layer.getSource();
const tileGrid = source.getTileGridForProjection( const tileGrid = source.getTileGridForProjection(
frameState.viewState.projection frameState.viewState.projection
@@ -405,15 +404,9 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
for (i = 0, ii = renderedTiles.length; i < ii; ++i) { for (i = 0, ii = renderedTiles.length; i < ii; ++i) {
const tile = renderedTiles[i]; const tile = renderedTiles[i];
const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord); const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);
const tileContainsCoordinate = containsCoordinate(tileExtent, coordinate); if (!containsCoordinate(tileExtent, coordinate)) {
if (!declutter) {
// When not decluttering, we only need to consider the tile that contains the given
// coordinate, because each feature will be rendered for each tile that contains it.
if (!tileContainsCoordinate) {
continue; continue;
} }
}
const layerUid = getUid(layer); const layerUid = getUid(layer);
const executorGroups = [tile.executorGroups[layerUid]]; const executorGroups = [tile.executorGroups[layerUid]];
const declutterExecutorGroups = tile.declutterExecutorGroups[layerUid]; const declutterExecutorGroups = tile.declutterExecutorGroups[layerUid];
@@ -436,7 +429,6 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
* @return {?} Callback result. * @return {?} Callback result.
*/ */
function (feature, geometry) { function (feature, geometry) {
if (tileContainsCoordinate) {
let key = feature.getId(); let key = feature.getId();
if (key === undefined) { if (key === undefined) {
key = getUid(feature); key = getUid(feature);
@@ -445,7 +437,6 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
features[key] = true; features[key] = true;
return callback(feature, layer, geometry); return callback(feature, layer, geometry);
} }
}
}, },
executorGroups === declutterExecutorGroups executorGroups === declutterExecutorGroups
? frameState.declutterTree.all().map((item) => item.value) ? frameState.declutterTree.all().map((item) => item.value)