2015-04-06 69 views
0

我正在繪製一些小線條,我允許用戶拖動以進行選擇。我如何在保持拖曳機制的同時將一個圓圈附加到該線的中心?在保持拖動機制的同時添加圓到線條

var borderData = [ 
{x : 0, side: "leftBorder"}, {x : rightBorder, side: "rightBorder"} 
] 

svg.selectAll("line") 
.data(borderData) 
.enter().append('line') 
.attr("x1", function (d) { 
    return d.x - 2; 
}) 
.attr("x2", function (d) { 
    return d.x - 2; 
}) 
.attr("y1", graphHeight - kernelHeight - 1) 
.attr("y2", graphHeight + 1) 
.attr("class", function (d) { 
    return d.side; 
}) 
.call(dragBorder); 

我已經嘗試將以下內容添加到鏈的末尾,但不會顯示任何內容。

... 
.call(dragBorder) 
.append('circle') 
    .attr("cy", (graphHeight - kernelHeight - 1 + graphHeight + 1)/2) 
    .attr("cx", function(d, i) { return d.x; }) 
    .attr("r", 2); 

回答

2

兩個觀點:作爲您的直線和圓的容器g元素

  1. 電話dragBorder

    var draggables = svg.selectAll('g.draggableLineCircleWrapper') 
        .data(borderData) 
        .enter() 
        .append('g') 
        .classed('draggableLineCircleWrapper') 
        .call(dragBorder); 
    
    draggables.append('line')... 
    draggables.append('circle')... 
    
  2. 代替追加的線路和一個圓的,附加的路徑(具有一個複雜的形狀的一個元件),並在其上調用阻力。

+0

我非常喜歡第一個想法,因爲如果需要的話,我可以添加更多的對象。但是,我似乎無法追加任何東西。如果我在調試器中查看'draggables',我只能得到'False'的解釋。 – pir

+0

@felbo請提供您的更新代碼。 – Oleg

+0

我已經做了一個快速小提琴來演示第一個想法:http://jsfiddle.net/p5ns6jd9/2/ – Oleg

相關問題