Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 放大后保持SVG中的文本可见_Javascript_Text_Svg_Zooming - Fatal编程技术网

Javascript 放大后保持SVG中的文本可见

Javascript 放大后保持SVG中的文本可见,javascript,text,svg,zooming,Javascript,Text,Svg,Zooming,我在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);

我在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的中上部区域可见


谢谢

尝试将文本元素添加到
svg
命名空间,而不是
xmlns

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

“harcoded”坐标应该无关紧要。如果元素添加正确,则这些坐标应该是相对于svg画布的坐标

绝对没有办法知道你在说什么样的
zoom
。另外,如果你问的是
zoom
,你的代码应该能说明这一点。好吧,如果你使用的是基于触摸的设备,比如iPad,那将是收缩和缩放。在浏览器中,与使用鼠标滚轮放大地图时在谷歌地图上获得的效果相同。但我相信你对这一切都很熟悉,所以我对你的评论有点困惑。也许你有自己制作的缩放。谁知道呢。不幸的是,在替换了创建文本元素的两行之后没有任何区别。仅此而已。我没有做什么特别的事。除了我发布的方法之外,在一个单独的函数中,我只是根据用户触摸SVG的位置更新文本。但是x和y永远不会改变。我看没问题。我可以放大(甚至在手机上)没有问题。我没有正确解释我的问题。我可以放大SVG,但由于文本最初显示在SVG的顶部,现在在放大后,该文本不再可见。如果我向上滚动,我可以很好地看到文本,但我希望文本始终保持可见,无论缩放程度如何。