使用D3拖动分组元素

时间:2013-04-16 21:11:09

标签: javascript json d3.js

我正在尝试使用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}]

我也尝试过这种方式,但是当我拖动形状时,会留下重复形状的痕迹。

如果有人能解释为什么会发生这种情况,我将不胜感激/

1 个答案:

答案 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()]