使用PAN获得Raphael.js 2.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);
和ZOOM:
//before
paper.setViewBox(0,0, 500,500, false);
//after
paper.setViewBox(0,0, 200, 200, false);
但我遇到两个大问题。这是用于raphael创建的svg对象而不是图像......
任何建议都会受到赞赏,或者在Raphael.js中已经存在这样做的库?我看了一下raphael-spz,它似乎没有解决我上面的任何一个问题。
我想要的基本上就是http://dannyvankooten.com/demo/draggable-image-map-with-zoom/,但对于拉斐尔来说。他正在使用jquery ui draggable ......我似乎无法在拉斐尔工作。
谢谢!
答案 0 :(得分:2)
因为您已缩放了视图框,所以您可能还需要缩放拖动值,为了计算边界,您只需与视口进行比较,例如,
move = function (dx, dy) {
var bb = set.getBBox(),
//Move relative to viewport scale
x = dx/scale,
y = dy/scale,
//Lower bounds
xf = Math.max(0, set.oBB.x - bb.x + x),
yf = Math.max(0, set.oBB.y - bb.y + y);
//upper bounds
xf = Math.min(viewBoxWidth, xf + bb.width) - bb.width;
yf = Math.min(viewBoxHeight, yf + bb.height) - bb.height;
set.translate(xf, yf);
}
scale
是视图框相对于论文的不同因素。即(200/500)