2012-05-12 140 views
-1

放大我在SVG中定义的下列文本元素后:保持文本SVG可见

var data = document.createTextNode("Testing text in SVG"); 
var text = document.createElementNS(xmlns, "text"); 
text.setAttributeNS(null, "font-size",'60'); 
text.setAttributeNS(null, "x", 2000); 
text.setAttributeNS(null, "y", 100); 
text.setAttributeNS(null, "fill", "black"); 
text.setAttributeNS(null, "text-anchor", "middle"); 
text.setAttributeNS(null, "id", "textLabel"); 
text.appendChild(data); 
Root.appendChild(text); 

不幸的是,有一次我放大到SVG的文本不再可见,这是有道理的,因为x和y坐标是硬编码的。我如何解决这个问题,因为我希望文本始终在SVG的顶部中间区域可见,而不管我放大和缩小多少?

谢谢!

+0

但是绝对没有办法知道zoom'你说的是什么样的'。此外,如果你问'zoom'你的代码应该说明这一点。 – Alexander

+0

好吧,如果你使用的是像iPad那样的基于触摸的设备,那就是捏和缩放。在浏览器中,使用鼠标滚轮放大地图时,可以获得与Google地图相同的效果。但我相信你对这一切都很熟悉,因此我对你的评论有点困惑。 –

+0

也许你有自己的制作缩放。谁知道。 – Alexander

回答

0

尝试增加你的文本元素的命名空间svg而不是xmlns

var text = document.createElementNS("http://www.w3.org/2000/svg", "text"); 

的 “harcoded” 坐标不应该的问题。如果元素正确添加,这些应该是相对于svg画布的坐标。

+0

不幸的是,在替换创建文本元素的两行后,它没有任何区别。 –

+1

k,也许你可以显示更多的代码。 – mihai

+0

就是这样。我没有做任何特别的事情。除了我发布的方法,在一个单独的函数中,我只是根据用户触摸SVG的位置更新文本。但是x和y永远不会改变。 –