我正在编写一个使用 SVG 显示信息的跨平台 Web 应用程序。我需要一个多点触控界面来平移和缩放 SVG 图形。根据我的研究,Hammer.js 似乎是我最好的方法,我使用的是 jQuery 库版本。
我可以使用 SVG 的 viewBox 属性来平移和缩放图像。我遇到的问题是在捏缩放期间使用中心点信息(而不是从左上角缩放)。那个中心点,无论它在我的图像中的什么位置,都应该保持在捏的中心。显然,解决方案是修改 viewBox 的前两部分,但我无法确定正确的值。中心点(event.gesture.center)似乎在浏览器页面坐标中,所以我需要弄清楚如何可靠地缩放它,然后计算 viewBox x 和 y 坐标。我找了一些例子,但找不到任何相关的东西。
使用 viewBox 属性是缩放 SVG 图像的最佳方式吗?有更好的选择吗?有没有人有从捏中心缩放 SVG 图像的示例代码?
另外,我注意到即使我将事件处理绑定到 SVG 元素,捏合手势似乎在页面上的任何位置都有效。它不是默认的浏览器处理夹点,因为它只是使用我的代码缩放 SVG 图像。这是我用来绑定捏事件的代码:
$(window.demoData.svgElement).hammer().on("pinch", function (event) {
event.preventDefault();
...
});
感谢您对这两个问题的任何帮助。