vis.js网络适应功能

时间:2016-08-07 03:54:29

标签: javascript vis.js vis.js-network

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

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

2 个答案:

答案 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之前,我们做了什么。