在下面的代码中,我创建了文本SVG元素,对其进行自动换行,然后基于新的(换行的)文本尺寸和矩形创建边界框.我只能用以下方式来做,我想知道代码是否不能简化,以便可能框创建在相同的功能作为文本?
var a=settings.g.selectAll(".axislabel")
.data(featureData)
.join(
enter => enter.append("text")
.attr("x", d => d.label_coord.x)
.attr("y", d => d.label_coord.y)
.text(d => d.name)
.attr("dy", "0.35em")
.call(wrap, 60)
)
var x=settings.g.selectAll("text")
/getting the elements I just created
for(let a of x['_groups'][0])
{
//iterating through and create bounding boxes
var v=a.getBBox();
//createing rectangles based on the boundinx boxes
settings.g.selectAll("labelBack")
.data([a.textContent])
.join(
enter => enter.append("rect")
.attr("x", v.x)
.attr("y", v.y)
.attr("width", v.width)
.attr("height", v.height)
.attr("fill", "white")
.attr("opacity", 1)
.attr("stroke-width", 1)
.attr("stroke", "black")
);