用 d3.js 做力导向图,如何连线上的文字始终居中

想要实现的效果(文字长度不固定,初始位置居中;节点拖动连线,文字随连线变化居中):

http://img2.mukewang.com/5a24a42400019ead04790104.jpg

                                                【图 1】


现在实现的效果(文字初始位置未居中,不会随着连线的变化而变化):

http://img.mukewang.com/5a24a43300015f7704330115.jpg

                                                【图 1】

请问如何修改代码来实现【图 1】 效果:a. 文字初始位置居中; b.连线伸缩时,文字会自适应居中?

王益达
浏览 7979回答 4
4回答

南岸绿竹

我也想请问下,文字是怎么显示在连线上的

慕仰3222845

请问您文字在连线中间是怎么做到的?

王益达

问题已自行解决:lineText.attr({   'dx': d => getLineTextDx(d) });function getLineTextDx(d) {     const sr = d.radius;     const sx = d.source.x;     const sy = d.source.y;     const tx = d.target.x;     const ty = d.target.y;     const distance = Math.sqrt(Math.pow(tx - sx, 2) + Math.pow(ty - sy, 2));          const textLength = d.alllabel.length;     const deviation = 8; // 调整误差     const dx = (distance - sr - textLength * lineTextFontSize) / 2 + deviation;          return dx; }
打开App,查看更多内容
随时随地看视频慕课网APP