From c97bf3432f58261f73a260b347adf3c24aadfaa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?= Date: Sun, 4 Jul 2021 04:10:26 +0200 Subject: [PATCH] Fix transform for immediate rendering on canvas If the canvas css transform does not match the frameState pixelRatio the drawing is at the wrong size. --- src/ol/render.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ol/render.js b/src/ol/render.js index 150c8809a3..c9cd338c8d 100644 --- a/src/ol/render.js +++ b/src/ol/render.js @@ -88,6 +88,8 @@ export function toContext(context, opt_options) { * @api */ export function getVectorContext(event) { + // canvas may be at a different pixel ratio than frameState.pixelRatio + const canvasPixelRatio = event.inversePixelTransform[0]; const frameState = event.frameState; const transform = multiplyTransform( event.inversePixelTransform.slice(), @@ -95,7 +97,7 @@ export function getVectorContext(event) { ); const squaredTolerance = getSquaredTolerance( frameState.viewState.resolution, - frameState.pixelRatio + canvasPixelRatio ); let userTransform; const userProjection = getUserProjection(); @@ -107,7 +109,7 @@ export function getVectorContext(event) { } return new CanvasImmediateRenderer( event.context, - frameState.pixelRatio, + canvasPixelRatio, frameState.extent, transform, frameState.viewState.rotation,