2013-04-16 2 views
0

d3.behavior.drag 함수를 사용하여 & 텍스트/모양을 다른 위치로 드래그하려고합니다. 결국, 원래 위치에서 Ruby on Rails가 실행하는 SQL DB로 이동할 때 새 위치의 변수를 저장하려고합니다.D3 사용 그룹화 된 요소 위로 드래그

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

나는 그것이 내가 내 개체 내에서 대신 X & Y의 번역 사용하고 있기 때문에 작업 않네 있다고 생각하기 시작했다 모양 본 필자

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

몇 가지 예는 대신이 있습니다

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

나는 또한이 방법을 시도했다, 그러나 나는 모양을 드래그 할 때 반복 모양의 흔적을 남긴다.

나는 사람이이 X로 변환/

답변

1

변화가 일어나고있는 이유를 설명 할 수 있다면 감사와 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()]

+1

새로운 모양과 텍스트가 드래그 할 때마다 추가됩니다. 여러 개의 레이어 요소가 텍스트를 굵게 표시합니다. 드래그 기능을 수정하여 draw()를 다시 호출하지 않고 g.node 요소의 위치를 ​​변경하도록 수정할 수 있습니다. 라인 57과 58을보십시오 : http://jsfiddle.net/Zc4z9/8/ –