New Layer#getFeatures method with fast hit detection for VectorLayer

This commit is contained in:
Andreas Hocevar
2019-09-26 19:55:14 +02:00
parent 057cc92716
commit 315695eeb8
13 changed files with 429 additions and 31 deletions

View File

@@ -428,7 +428,10 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const declutterReplays = layer.getDeclutter() ? {} : null;
const replayTypes = VECTOR_REPLAYS[renderMode];
const pixelRatio = frameState.pixelRatio;
const rotation = frameState.viewState.rotation;
const viewState = frameState.viewState;
const center = viewState.center;
const resolution = viewState.resolution;
const rotation = viewState.rotation;
const size = frameState.size;
// set forward and inverse pixel transforms
@@ -462,7 +465,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const tileCoord = tile.tileCoord;
const tileExtent = tileGrid.getTileCoordExtent(tile.wrappedTileCoord);
const worldOffset = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent)[0] - tileExtent[0];
const transform = this.getRenderTransform(frameState, width, height, worldOffset);
const transform = this.getRenderTransform(center, resolution, rotation, pixelRatio, width, height, worldOffset);
const executorGroups = tile.executorGroups[getUid(layer)];
let clipped = false;
for (let t = 0, tt = executorGroups.length; t < tt; ++t) {