PANを使用してRaphael.js2.0で基本的なズーム/パン効果を得るのに問題はありませんでした:
set = ( // set of elements, contained in a rectangle)
var start = function () {
set.oBB = set.getBBox();
},
move = function (dx, dy) {
var bb = set.getBBox();
set.translate(set.oBB.x - bb.x + dx, set.oBB.y - bb.y + dy);
},
up = function() { // do stuff };
set.drag(move, start, up);
とズーム:
//before
paper.setViewBox(0,0, 500,500, false);
//after
paper.setViewBox(0,0, 200, 200, false);
しかし、私はこれに関して2つの大きな問題を抱えています。これは、ラファエルが作成したsvgオブジェクト用であり、画像用ではありません...
- まず、ズーム後のパンは「スムーズ」ではありません。少しドラッグすると、長方形が大きく動きます。進むほど動きが悪くなります。ズームしたときにドラッグをスケーリングできますか?
- 次に、ズームした長方形をパンしてもビューポートから移動できないように配置するにはどうすればよいですか?jqueryでは、制約を使用してこれを行うことができ、上記のset.translate関数を試して制約を含めようとしましたが、どこにも到達していません...
何かアドバイスをいただければ幸いです。そうでなければ、Raphael.jsでこれを行うためのライブラリがすでに存在しますか?上記の私の問題のどちらにも対処していないように見えるraphael-spzを見ました。
私が欲しいのは基本的にこのhttp://dannyvankooten.com/demo/draggable-image-map-with-zoom/ですが、Raphael用です。彼はドラッグ可能なjqueryuiを使用しています...これはRaphaelでは機能しないようです。
ありがとう!