Skip executor groups when tile does not contain coordinates
This commit is contained in:
@@ -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,14 +404,8 @@ 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)) {
|
||||||
|
continue;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
const layerUid = getUid(layer);
|
const layerUid = getUid(layer);
|
||||||
const executorGroups = [tile.executorGroups[layerUid]];
|
const executorGroups = [tile.executorGroups[layerUid]];
|
||||||
@@ -436,15 +429,13 @@ 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);
|
}
|
||||||
}
|
if (!(key in features)) {
|
||||||
if (!(key in features)) {
|
features[key] = true;
|
||||||
features[key] = true;
|
return callback(feature, layer, geometry);
|
||||||
return callback(feature, layer, geometry);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
executorGroups === declutterExecutorGroups
|
executorGroups === declutterExecutorGroups
|
||||||
|
|||||||
Reference in New Issue
Block a user