使用Vis.js网络预定义布局

时间:2018-05-15 12:42:33

标签: vis.js vis.js-network

我想知道是否有办法在Vis中注入预定义布局。

当我拖放每个节点时,我设法保存了我的节点的所有坐标(X:Y),然后将每个节点保存到具有指定ID的数据库中。

我正在努力的是在用vis初始化地图时将此数据集指定为vis(这是布局初始化的文档:http://visjs.org/docs/network/layout.html#

我想将一个数组与我的id节点和位置X Y放在一起,以便在用户更改其布局时保存它。

看来这是不可能的,但也许有一种隐藏的方式?

提前致谢

2 个答案:

答案 0 :(得分:0)

您可以使用getSeed()方法将布局配置保存在种子中,而不是保存位置和ID。然后,当您再次启动网络时,可以将此种子加载到layout.randomSeed以具有相同的配置。

getSeed()的文档说:

  

如果您喜欢网络的布局并希望下次以相同的方式启动,请使用此方法请求种子并将其放在layout.randomSeed选项中。

答案 1 :(得分:0)

这很有可能:

  • 设置初始布局,只需为每个节点添加坐标(并禁用物理,以便它们不会离开它们的位置):

    nodes = [{id:1, label:'some', x:100, y:0 }, ... ];
    options = { physics: false, ... };
    
  • 要获取当前坐标,请使用network.getPositions()

  • 要保存布局更改,您可能希望使用dragEnd eventon method(在事件处理程序中使用network.getPositions()

您可以在VisGraphPlugin repo(它是TiddlyWiki Classic的插件)中选择我的实施,只需查看dragEndsaveDataAndOptions,后者可能会引起关注。< / p>