SVG を使用して情報を表示するクロスプラットフォーム Web アプリケーションを作成しています。SVG グラフィックをパンおよびズームするには、マルチタッチ インターフェイスが必要です。私の調査によると、Hammer.js が私の最善のアプローチであり、jQuery ライブラリ バージョンを使用しているようです。
SVG の viewBox プロパティを使用して、画像をパンおよびズームできます。私が抱えている問題は、ピンチズーム中に中心点情報を使用することです(対左上隅からのスケーリング)。その中心点は、私のイメージのどこにあっても、ピンチの中心に留まる必要があります。明らかに、解決策は viewBox の最初の 2 つの部分を変更することですが、正しい値を判断するのに苦労しています。中心点 (event.gesture.center) はブラウザー ページの座標にあるように見えるので、これを確実にスケーリングする方法を見つけてから、viewBox の x 座標と y 座標を計算する必要があります。例を探しましたが、かなり関連するものは見つかりませんでした。
viewBox 属性を使用して SVG 画像をスケーリングする最良の方法はありますか? より良い代替手段はありますか?ピンチセンターからSVG画像をズームするサンプルコードはありますか?
また、イベント処理を SVG 要素にバインドしているにもかかわらず、ピンチ ジェスチャがページのどこからでも機能するように見えることに気付きました。私のコードを使用してSVG画像をズームしているだけなので、ピンチのデフォルトのブラウザー処理ではありません。ピンチイベントをバインドするために使用しているコードは次のとおりです。
$(window.demoData.svgElement).hammer().on("pinch", function (event) {
event.preventDefault();
...
});
これら2つの問題についてご協力いただきありがとうございます。