d3.js-添加缩放和平移可防止拖动节点

d3.js-添加缩放和平移可防止拖动节点,d3.js,zooming,D3.js,Zooming,我已使用以下代码(片段)将缩放功能添加到图形中: 这正如预期的那样有效。我可以缩放或平移整个图形。但是,我无法再影响节点的位置,因为任何“单击”都会触发平移 我的拖动定义如下: dragStart = function(d) { d.fixed = true; }; drag = d3.drag() .on("dragstart", dragStart); node = svg.selectAll(".node") .data(graph.nodes) .en

我已使用以下代码(片段)将缩放功能添加到图形中:

这正如预期的那样有效。我可以缩放或平移整个图形。但是,我无法再影响节点的位置,因为任何“单击”都会触发平移

我的拖动定义如下:

dragStart = function(d) {
    d.fixed = true;
};

drag = d3.drag()
    .on("dragstart", dragStart);

node = svg.selectAll(".node")
    .data(graph.nodes)
    .enter()
    .append("rect")
    .attr("class", "node")
    .attr("width", function (d) { return d.width - 2 * pad; })
    .attr("height", function (d) { return d.height - 2 * pad; })
    .attr("rx", 5).attr("ry", 5)
    .call(drag);

我不确定我做错了什么,但我的实现与我能找到的具有类似功能的所有示例一致。如果有任何帮助,我们将不胜感激。

我最终禁用了平移功能,通过禁用缩放时的单击事件使其工作:

selection.call(zoom)
    .on("mousedown.zoom", null)
selection.call(zoom)
    .on("mousedown.zoom", null)