我使用vis.js 4.16.1绘制网络图。目前我有两个网络图。用户绘图的一个网络图。在用户完成之后,我想将网络图完全复制到第二个网络图。但是,我不能设置与第一个相同的视点。这是第一个网络的选项:
options = {
locale: 'en',
physics: {
"enabled": false,
},
edges: {
smooth: {
type: 'continuous'
}
},
interaction: {
navigationButtons: true,
selectConnectedEdges: false
}
};
我已禁用物理,允许用户自己组织节点 这是第二个网络的选项:
var options = {
locale: 'en',
physics: {
"enabled": false
},
edges: {
smooth: {
type: 'continuous'
}
},
interaction: {
dragNodes: false,
dragView:true
}
};
当我使用fit函数(http://www.cse.unsw.edu.au/~mike/myrlibrary/visNetwork/doc/network/)
时var fitOption = {
nodes: nodes.getIds() //nodes is type of vis.DataSet contains all the nodes
}
secondNetwork.fit(fitOption);
没有任何改变。
当我使用moveTo
函数时:
var centerOptions = {
position: {
x: firstNetwork.getViewPosition().x,
y: firstNetwork.getViewPosition().y},
}
}
secondNetwork.moveTo(centerOptions);
尽管如此,我还是无法将画布移动到第一个网络所关注的位置。画布根本不动。 有人可以给我一些建议吗?提前谢谢,
答案 0 :(得分:0)
您可以使用network.fit()
,这与右下角的上方按钮相同。因此,所有节点都将被聚焦。
您可以将数据集对象用于节点和边缘,而不是将所有节点和边缘复制到相同的xy坐标
var xy = network1.edges.get();
network2.edges.add(xy);
答案 1 :(得分:0)
感谢Reiner,我已经弄清楚fit()和moveTo()函数在我的上下文中不起作用的原因,我需要设置选项:
physics: {
"enabled": true
}
否则它不起作用。在调用我的fit()函数,将enabled更改为true,调用fit()函数,然后将enabled设置为false之前,我们做了什么。