1

我正在使用 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);

尽管如此,我还是无法将我的画布移动到第一个网络关注的点。画布根本不动。有人可以给我一些建议吗?提前致谢,

4

2 回答 2

2

谢谢 Reiner,我已经弄清楚 fit() 和 moveTo() 函数在我的上下文中不起作用的原因,我需要设置选项:

 physics: {
     "enabled": true
 }

否则它不起作用。在我调用我的 fit() 函数之前,将 enable 更改为 true,调用 fit() 函数,然后将 enable 设置为 false。

于 2016-08-16T23:28:58.327 回答
0

您可以使用network.fit(),这将与右下角的上按钮相同。所以所有节点都会被聚焦。

您可以将数据集对象用于节点和边,而不是将所有节点和边复制到相同的 xy 坐标相当容易

var xy = network1.edges.get(); 
network2.edges.add(xy);
于 2016-08-09T09:03:49.060 回答