Use correct resolution for tile hit canvas

This commit is contained in:
Andreas Hocevar
2019-10-29 18:31:53 +01:00
parent 00af5a87be
commit 025b27bdec

View File

@@ -437,10 +437,12 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
resolve([]); resolve([]);
return; 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 = [ const tilePixel = [
(coordinate[0] - corner[0]) / resolution, (coordinate[0] - corner[0]) / resolution / renderScale,
(corner[1] - coordinate[1]) / resolution (corner[1] - coordinate[1]) / resolution / renderScale
]; ];
if (!sourceTile.hitDetectionImageData) { if (!sourceTile.hitDetectionImageData) {
const tileSize = toSize(sourceTileGrid.getTileSize(sourceTileGrid.getZForResolution(resolution))); const tileSize = toSize(sourceTileGrid.getTileSize(sourceTileGrid.getZForResolution(resolution)));
@@ -448,7 +450,7 @@ class CanvasVectorTileLayerRenderer extends CanvasTileLayerRenderer {
const rotation = this.renderedRotation_; const rotation = this.renderedRotation_;
const transforms = [ const transforms = [
this.getRenderTransform(tileGrid.getTileCoordCenter(sourceTile.tileCoord), 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() { requestAnimationFrame(function() {
sourceTile.hitDetectionImageData = createHitDetectionImageData(tileSize, transforms, sourceTile.hitDetectionImageData = createHitDetectionImageData(tileSize, transforms,