0

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

然后我的文本/形状和位置有一个“绘图”功能

                  function draw() { 

               // code is within here - check fiddle

                 }

                  draw()

我开始相信它不起作用,因为我在我的对象中使用 translate 而不是 x & Y:

                var node= [ {name:'amy', country: 'USA', 'translate:"translate(190,83)"}]

我见过的一些例子有这个:

              var node= [ {name:'amy', country: 'USA', x: 100, y:0}]

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

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

4

1 回答 1

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

于 2013-04-16T22:05:54.083 回答