我正在尝试使用d3.behavior.drag函数来拖动&文本/形状到不同的位置。最后,我希望保存新位置的变量,当它从原来的位置移动到由Ruby on rails运行的SQL DB时。
然而,在我尝试使用当前代码的那一刻,文本/形状不会移动,而是似乎在同一位置复制:
var drag = d3.behavior.drag()
.origin(Object)
.on("drag", function(d) {
d.x = d3.event.x;
d.y = d3.event.y;
draw();
});
然后我有一个函数'draw'用于我的text / shapes&位置
function draw() {
// code is within here - check fiddle
}
draw()
我开始相信它不起作用,因为我使用翻译而不是x& Y在我的对象中:
var node= [ {name:'amy', country: 'USA', 'translate:"translate(190,83)"}]
我见过的一些例子反而有了这个:
var node= [ {name:'amy', country: 'USA', x: 100, y:0}]
我也尝试过这种方式,但是当我拖动形状时,会留下重复形状的痕迹。
如果有人能解释为什么会发生这种情况,我将不胜感激/
答案 0 :(得分:1)
将转换更改为x,并将y更改为所有节点并更改
node= node.enter().append("g")
.call(drag)
到
node.enter().append("g")
.call(drag)
.attr('class', 'node');
工作小提琴:http://jsfiddle.net/Zc4z9/5/
您可能需要查看此bl.ocks.org/mbostock/3808218以确保您了解.enter()[以及.transition()和.exit()]