fix pinch to zoom on touch devices
This commit is contained in:
Vendored
+7
-1
@@ -1257,8 +1257,14 @@
|
|||||||
if (event.touches.length < 2) return;
|
if (event.touches.length < 2) return;
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const currentDistance = distance(event);
|
const currentDistance = distance(event);
|
||||||
|
const midX = midpoint(event, "x");
|
||||||
|
const midY = midpoint(event, "y");
|
||||||
const ratio = currentDistance / initialDistance;
|
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) {
|
function collectObjectValuesForKey(key, converter, objects) {
|
||||||
|
|||||||
@@ -361,8 +361,14 @@ export function implementPinchZoom(canvas: HTMLElement) {
|
|||||||
if (event.touches.length < 2) return;
|
if (event.touches.length < 2) return;
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
const currentDistance = distance(event);
|
const currentDistance = distance(event);
|
||||||
|
const midX = midpoint(event, "x");
|
||||||
|
const midY = midpoint(event, "y");
|
||||||
const ratio = currentDistance / initialDistance;
|
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,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user