From 025b27bdec80682072311ad5d85e0358ead83da4 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Tue, 29 Oct 2019 18:31:53 +0100 Subject: [PATCH] Use correct resolution for tile hit canvas --- src/ol/renderer/canvas/VectorTileLayer.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ol/renderer/canvas/VectorTileLayer.js b/src/ol/renderer/canvas/VectorTileLayer.js index 208200c4d4..ba1463fc55 100644 --- a/src/ol/renderer/canvas/VectorTileLayer.js +++ b/src/ol/renderer/canvas/VectorTileLayer.js @@ -437,10 +437,12 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer { resolve([]); return; } - const corner = getTopLeft(tileGrid.getTileCoordExtent(sourceTile.tileCoord)); + const sourceTileCoord = sourceTile.tileCoord; + const corner = getTopLeft(tileGrid.getTileCoordExtent(sourceTileCoord)); + const renderScale = sourceTileGrid.getResolution(sourceTileCoord[0]) / resolution; const tilePixel = [ - (coordinate[0] - corner[0]) / resolution, - (corner[1] - coordinate[1]) / resolution + (coordinate[0] - corner[0]) / resolution / renderScale, + (corner[1] - coordinate[1]) / resolution / renderScale ]; if (!sourceTile.hitDetectionImageData) { const tileSize = toSize(sourceTileGrid.getTileSize(sourceTileGrid.getZForResolution(resolution))); @@ -448,7 +450,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer { const rotation = this.renderedRotation_; const transforms = [ this.getRenderTransform(tileGrid.getTileCoordCenter(sourceTile.tileCoord), - resolution, 0, 0.5, size[0], size[1], 0) + resolution * renderScale, 0, 0.5, size[0], size[1], 0) ]; requestAnimationFrame(function() { sourceTile.hitDetectionImageData = createHitDetectionImageData(tileSize, transforms,