【问题标题】:Predefine Layout using Vis.js network使用 Vis.js 网络预定义布局
【发布时间】:2018-05-17 01:03:54
【问题描述】:

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

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

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

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

看来是不可能的,不过说不定有什么隐藏的办法?

提前致谢

【问题讨论】:

    标签: vis.js vis.js-network


    【解决方案1】:

    这很有可能:

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

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

    • 要在布局更改时保存这些内容,您可能需要使用dragEnd eventon method(在事件处理程序中使用network.getPositions()

    您可以选择我在VisGraphPlugin repo 中的实现(它是TiddlyWiki Classic 的插件),只需寻找dragEndsaveDataAndOptions,后者可能会感兴趣。

    【讨论】:

    • 我已经在执行第 2 步和第 3 步了,但是缺少如何集成第 1 步,谢谢!
    【解决方案2】:

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

    getSeed() 的文档说:

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

    【讨论】:

    • 问题是当你移动你的节点时,getSeed() 总是返回相同的值,它只用于网络的初始化,或者我做错了什么
    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    相关资源
    最近更新 更多