我正在编写一个跨平台的Web应用程序,使用SVG显示信息。我需要具有多点触摸界面来平移和缩放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();
...
});
Thanks for any help on these two issues.