2016-08-07 92 views
0

我使用vis.js 4.16.1来绘制网络图。目前我有两个网络图。用户绘图的一个网络图。用户完成后,我想要将网络图的任何内容复制到第二个网络图。但是,我不能设定与第一个观点相同的观点。这是第一个网络的选项:vis.js网络拟合函数

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 
    } 
}; 

当我使用的拟合函数(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

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

您可以使用DataSet对象为节点和边缘,比其相当容易的所有节点和边缘相同的x,y坐标复制与

VAR XY = network1.edges.get(); network2.edges.add(xy);

0

感谢雷纳,我也弄不清为什么飞度()和的moveTo()函数没有在我的环境中工作,我需要设置的选项:

physics: { 
    "enabled": true 
} 

否则它不工作。在我调用我的fit()函数之前做了什么,启用了更改为true,调用fit()函数,然后将启用设置为false。