我有一个强制有向图,我实现了一个自动完成,以突出显示一个节点。基本上,一旦你选择一个节点,它就会被染成红色。我现在想在这个节点上“缩放”,这会将我的窗口更改为节点大小的400%,并且节点应该居中放置。D3力布局中的对象自动缩放
这里是我的代码的相关样品(或者你可以直接去jsFiddle我的设置。)
首先用于创建svg
元素的代码:
var w = 4000,
h = 3000;
var vis = d3.select("#mysvg")
.append("svg:svg")
.attr("width", "100%")
.attr("height", "100%")
.attr("id","svg")
.attr("pointer-events", "all")
.attr("viewBox","0 0 "+w+" "+h)
.attr("perserveAspectRatio","xMinYMid")
.append('svg:g')
.call(d3.behavior.zoom().on("zoom", redraw))
.append('svg:g');
然后,一个例子,该函数用于在“正常”缩放上重绘有向图。
function redraw() {
trans=d3.event.translate;
scale=d3.event.scale;
vis.attr("transform",
"translate(" + trans + ")"
+ " scale(" + scale + ")");
}
这里是我的图的节点:
vis.selectAll("g.node")
.data(nodes, function(d) {return d.id;})
.enter().append("g")
.append("circle")
.attr("id", function(d){return "circle-node-"+ d.id})
.attr("fill","white")
.attr("r","50px")
.attr("stroke", "black")
.attr("stroke-width","2px");
最后这里是我的自动完成。
$(function() {
$("#tags").autocomplete({
source: nodes; //...
select: function(event, ui){
// ...
vis.selectAll("#circle-node-"+ui.item.value)
.transition()
.attr("fill", "red")
}
})
});
我试着把尽可能少的代码,所以,如果我忘记了一些事情对不起。
更新这是一个jsFiddle说明我现在在哪里。
http://jsfiddle.net/ demo会非常有帮助。 –
@FelixKling我按要求设置了一个jsFiddle。谢谢你的帮助。 http://jsfiddle.net/wRXsK/2/ –