diff --git a/dist/index.js b/dist/index.js index 800c0ff5..a90c8b1e 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1257,8 +1257,14 @@ if (event.touches.length < 2) return; event.preventDefault(); const currentDistance = distance(event); + const midX = midpoint(event, "x"); + const midY = midpoint(event, "y"); const ratio = currentDistance / initialDistance; - apply(initialZoom * ratio); + const difference = currentDistance - initialDistance; + apply(initialZoom * ratio, [ + initialX + (midX - difference - initialTouchX) / initialZoom / 2, + initialY + (midY - difference - initialTouchY) / initialZoom / 2 + ]); }); } function collectObjectValuesForKey(key, converter, objects) { diff --git a/src/Model/Utility/utility.ts b/src/Model/Utility/utility.ts index fdb0b8a5..4f240833 100644 --- a/src/Model/Utility/utility.ts +++ b/src/Model/Utility/utility.ts @@ -361,8 +361,14 @@ export function implementPinchZoom(canvas: HTMLElement) { if (event.touches.length < 2) return; event.preventDefault(); const currentDistance = distance(event); + const midX = midpoint(event, "x"); + const midY = midpoint(event, "y"); const ratio = currentDistance / initialDistance; - apply(initialZoom * ratio); + const difference = currentDistance - initialDistance; + apply(initialZoom * ratio, [ + initialX + (midX - difference - initialTouchX) / initialZoom / 2, + initialY + (midY - difference - initialTouchY) / initialZoom / 2, + ]); }); }