0
私はariutta svg-pan-zoomライブラリを使用しています。私はviewBox="0 0 1052.3622 744.09448"
とwidth=649
とheigth=525,59
のdivコンテナを持つSVGファイルを持っています。 SVG内でカーソル位置を取得しようとしています。ズーム後のカーソル位置svg-pan-zoom
マイコード:
var divX = ev.pageX - this.offsetLeft;
var divY = ev.pageY - this.offsetTop;
var currentPan = panZoom.getPan();
var realZoom = panZoom.getSizes().realZoom;
var panZoomHeight = panZoom.getSizes().height;
var viewboxHeight = panZoom.getSizes().viewBox.height;
var x = (divX - currentPan.x)/realZoom;
var y = ((panZoomHeight - divY - ((panZoomHeight-(viewboxHeight*realZoom))/2) + currentPan.y)/realZoom);
var zoom = panZoom.getZoom(); // only to explain my problem - I'm not using this value
zoom
が1(デフォルトのズームレベル)になるまで、それは正常に動作します。ズームが1より大きい場合、y
の値が正しくありません(x
が良い)。例えば :
- (
zoom: 3.9562617313728334
、カーソルが画面上の同じ位置のままである)私はいくつかの点でクリックし、結果はマウスホイールを使用してx: 197.82463543913713, y: 616.3652582594272
- ズームあります。
- もう一度クリックして、結果は
x: 197.82463192575807, y: 540.7407139122004
は、私は、コードの多くの組み合わせをしようとしてきたが、何も良い働きません。私はこれをどうやって行うのか分かりません。私は明白な何かを欠いていますか カーソル位置を取得するためのより良い解決策はありますか?
私は、原点は左上だと思うので、あなたが 'y'のためにした 'X'のために同じ計算を行う必要があります。 'x =(divY - currentPan.y)/ realZoom;のようなものです。 – bumbu