如何将文本放在svg路径的中心

为了渲染SVG我正在使用jQuery SVG插件。 而且,现在我想为每个路径和多边形添加文本。 在jsFiddle上,您可以看到插件生成的标记。

为了创建文本,我编写了以下代码:

var svgg = $("#rsr").svg('get'); var texts = svgg.createText(); svgg.textpath($("#Layer_x0020_1"),id, texts.string('We go '). span('up', { dy: -30, fill: 'red' }).span(',', { dy: 30 }). string(' then we go down, then up again')); 

在jsFiddle的代码中,您可以看到textpath标记存在,但它不可见。 如何将文本添加到每个路径的中心?
谢谢。

要将文本以直线放置在形状的顶部,请在边界框的中间显示:

http://jsfiddle.net/dYuAA/114/

它只是添加了一些javascript来放置文本。

 function addText(p) { var t = document.createElementNS("http://www.w3.org/2000/svg", "text"); var b = p.getBBox(); t.setAttribute("transform", "translate(" + (bx + b.width/2) + " " + (by + b.height/2) + ")"); t.textContent = "a"; t.setAttribute("fill", "red"); t.setAttribute("font-size", "14"); p.parentNode.insertBefore(t, p.nextSibling); } var paths = document.querySelectorAll("path"); for (var p in paths) { addText(paths[p]) } 

以上仅查看路径元素,但您可以调整选择器以包含您需要的任何内容。

这里有几个问题。

a)SVG区分大小写,因此它是textPath而不是textpath。

b)textPath必须包含在元素中才有效

这是你的jsFiddle修复 。