我正在編寫一個使用SVG顯示信息的跨平臺Web應用程序。我需要有一個多點觸控界面來平移和縮放SVG圖形。從我的研究中看來,Hammer.js是我最好的方法,而且我正在使用jQuery庫版本。用Hammer.js縮放SVG
我能夠平移和使用SVG的視框中財產縮放圖像。我遇到的問題是在縮放過程中使用中心點信息(與左上角的縮放比較)。那個中心點,無論在我的形象中,都應該停留在捏的中心。顯然,解決方案是修改viewBox的前兩部分,但我無法確定正確的值。中心點(event.gesture.center)似乎在瀏覽器頁面座標中,所以我需要弄清楚如何可靠地縮放這個,然後計算viewBox的x和y座標。我查找了一些例子,但找不到任何相關的東西。
是否使用viewBox屬性來縮放SVG圖像的最佳方式?有更好的選擇嗎?有沒有人有縮放壓縮中心的SVG圖像的示例代碼?
另外,我也注意到,即使我綁定的事件處理到SVG元素,捏合手勢,似乎從頁面上的任何地方工作。它不是默認瀏覽器處理捏,因爲它只是使用我的代碼縮放SVG圖像。這裏是我用來綁定捏事件的代碼:
$(window.demoData.svgElement).hammer().on("pinch", function (event) {
event.preventDefault();
...
});
感謝您對這兩個問題的任何幫助。
我知道這並不能回答你的問題,所以把它作爲一個評論,但我已經有很多的好運氣與jQuery PanZoom做類似的事情,你問什麼。 https://github.com/timmywil/jquery.panzoom。你可能想嘗試一下。 – JasCav
非常感謝您的評論。我已經確定了我的問題的答案,並計劃寫出來併發布。我現在懷疑你提到的圖書館長遠來說可能對我更好。他們的演示在我的手機上運行良好,但我需要在平板電腦上將其與我的其他解決方案進行比較,以瞭解哪種方法最適合。正如你所說,它看起來完全符合我的要求(在約束元素內縮放和平移SVG)。 – JSwartzen