在径向树布局中拖动节点组,单击时不跳转到新位置
d3 - drag node groups in radial tree layout without jumping to new position on click
从这个问题开始,我试图拖动节点(包含圆圈和文本组)作为组合单位,而不是在我单击时首先跳到新的位置。
我已经尝试将建议的技术实现到径向树布局(JSFIDDLE)中,但是碰壁了。我怀疑这是因为径向布局使用了与通常的x,y系统不同的x,y系统。我一直在尝试将rotate
转换为var drag
,但似乎无法破解它。那是我应该关注的地方吗?谢谢。
var drag = d3.behavior.drag()
.on("drag", function(d,i) {
d.x += d3.event.dx
d.y += d3.event.dy
d3.select(this)
.attr("transform", function(d,i){
return "translate(" + d.x + "," + d.y + ")"
})
});
这是因为在径向视图中使用了不同的x,y变换。我改变了你的拖动函数,以获得正常的x,y坐标
var drag = d3.behavior.drag()
.on("drag", function(d,i) {
var translateCoords = d3.transform(d3.select(this).attr("transform")); //gets the actual transform value
d.x = translateCoords.translate[0]; // set x coordinate
d.y = translateCoords.translate[1]; // set y coordinate
d.x += d3.event.dx
d.y += d3.event.dy
d3.select(this)
.attr("transform", function(d,i){
return "translate(" + d.x + "," + d.y + ")"
})
});
这里是jsfiddle的工作代码链接
相关文章:
- gmaps4rails-将标记放到新位置
- 使用 bindTo() 无法删除新位置的标记
- 创建新的结构画布会更改画布位置
- 如何在反应性呈现新帖子时保持滚动位置
- 如何在不创建新元素的情况下修改 DOM 元素的位置
- Firefox弹出窗口“;这个网页被重定向到一个新的位置“;在每个requestPromise ajax调用上,有什么方
- EcmaScript 6:尾部位置的新操作符
- 从可移动标记获取新位置
- 对象以编程方式移动后的 Fabricjs 在其新位置上不可选择
- 希望在不创建新类的情况下将警告图标显示在正确的位置
- 重定向到新页面,但记住原始位置
- 将新页面滚动到相同的页面滚动位置
- Javascript多次搜索新的位置变量
- 如何阅读新标签位置.href.match?使用 Javascript
- javascript新窗口位置参数未按预期工作
- 如何使用Angular$location通过动态更改其键值params来设置我的新url位置
- 检测给定字符串中的位置/位置名称
- 如何在窗口上保持页面位置.位置更改
- var 位置 = 位置对我的对象有什么作用
- CSS3的转换角度从一个新的位置