svgpanzoom:beforeZoom on return false不会停止

时间:2015-03-05 22:25:51

标签: javascript svgpanzoom

我正在使用这个很棒的插件。但是缩放停止有问题

        panZoom = svgPanZoom('#svg3336', {
            zoomEnabled: true,
            controlIconsEnabled: false,
            fit: true,
            center: true,
            panEnabled: true,
            zoomScaleSensitivity: 2,
            beforeZoom: function(){

                if(zoomed)
                {
                    return false;
                }
                else
                {
                    zoomed = true;
                }
            },
            mouseWheelZoomEnabled: false,
            minZoom: 0.1
        });

所以return false我的地图消失了。我有检查矩阵数据,我看到坐标上有一个很大的减号

transform="matrix(5.630453109741211,0,0,5.630453109741211,-2396.02587890625,-7678.998046875)"  

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题是当你使用mousescroll进行缩放时,它相对于鼠标指针的位置来完成。因此,您不仅可以滚动,还可以平移。

在您的示例中,仅阻止缩放,但使用mousescroll滚动时平移仍然有效。

解决方案是在缩放后立即取消平移:

beforeZoom: function(){
  isZooming = true;
  if(zoomed) {
    return false;
  } else {
    zoomed = true;
  }
},
beforePan: function(){
  if(isZooming) {
    isZooming = false;
    return false;
  }
}