以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  [求助]关于svg将某个元素点击放大,并将点击点移到画面中央  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=72795)


--  作者:zz2119_cn
--  发布时间:3/9/2009 7:51:00 PM

--  [求助]关于svg将某个元素点击放大,并将点击点移到画面中央
下面这段代码是我从网上找的,但是运行时会报错,
  svgE.currentScale = (svgE.currentScale * vScaleFactor);
“未知错误”,大家帮我看看是什么原因?
是不是currentScale,不能这样赋值?

var svgDoc;
var svgE;
var bW = CliWidth - 300 - 10;
var bH = CliHeight - 50 - 10;
var vScaleFactor = 2;
function initsvg(evt) {

    svgDoc = evt.target.ownerDocument;
    svgE = svgDoc.getElementById('mainview');
    
    
    
//    svgDoc = document.all("mapdiv").getSVGDocument();
//    svgE = svgDoc.getDocumentElement();
    svgE.addEventListener("click", evt_Click, false);
}

//点击放大,并将点击点移到画面中央
function evt_Click(evt) {
    var scale = 1.0000 / svgE.getCurrentScale();
    var trx = svgE.getCurrentTranslate().getX();
    var try1 = svgE.getCurrentTranslate().getY();
    var curCoordx = scale * (evt.getClientX() - trx);
    var curCoordy = scale * (evt.getClientY() - try1);
    //zoomin

     svgE.currentScale = (svgE.currentScale * vScaleFactor);
    
    //pan to center
    scale = 1.0000 / svgE.getCurrentScale();
    cX = -svgE.currentTranslate.x * scale + (bW * scale / 2)
    cY = -svgE.currentTranslate.y * scale + (bH * scale / 2)

    offsetX = curCoordx - cX;
    offsetY = curCoordy - cY;
    var x = svgE.currentTranslate.x;
    var y = svgE.currentTranslate.y;
    svgE.currentTranslate.x = svgE.currentTranslate.x - offsetX / scale;
    svgE.currentTranslate.y = svgE.currentTranslate.y - offsetY / scale;
}


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms