2013-02-19 27 views
1

很久以前我做了一个jsfiddle来演示如何放大到中心(http://jsfiddle.net/Y69nm/1/)。现在我想缩放到给定的点(光标),就像googleMap一样,但不知道该怎么做。我将实际的鼠标坐标发送到用于缩放的功能。RaphaelJs ViewBox放大到点

这里是小提琴: http://jsfiddle.net/Y69nm/3/

这里是缩放功能:

function handle(delta, mousex, mousey) { 

    if (delta < 0) { 
     viewBoxWidth *= 0.95; 
     viewBoxHeight *= 0.95; 
    } else { 
     viewBoxWidth *= 1.05; 
     viewBoxHeight *= 1.05; 
    } 
    scale = paper.width/viewBoxWidth ; 
    console.log(scale); 
    // zoom to center 
    x = (paper.width/2) - (viewBoxWidth/2); 
    y = (paper.height/2) - (viewBoxHeight/2); 
    // i try to zoom to mouse cursor 
    var moveX = (mousex - (mousex * scale)); 
    var moveY = (mousey - (mousey * scale)); 
    x = 0 - moveX; 
    y = 0 - moveY; 
    paper.setViewBox(x, y, viewBoxWidth, viewBoxHeight); 
} 

回答

2

我可以让你更接近一点:

 x = 0 - moveX/scale; 
     y = 0 - moveY/scale; 

这是你updated fiddle。然而,它缩放指出,一旦缩放,如果你移动到另一个点并缩放它跳跃。

更新(4-30-2012): 因为我也需要这个,我进一步研究它以消除缩放到另一点时的跳动。这是Fiddle更新一次更完整的解决方案。