美文网首页
visjs--network拖动节点

visjs--network拖动节点

作者: sanguing | 来源:发表于2017-10-16 14:22 被阅读0次

承接第一篇文章的展开和折叠节点,现在说说移动主节点,子节点需要同时跟随保持原来的位置一起移动。

demo案列
var subidsarr = newNodeArr[click_node_id].subids;
var position = nodes_data._data;
var positionNetwork = network.getPositions();

startNetNodeX = positionNetwork[click_node_id].x;
startNetNodeY = positionNetwork[click_node_id].y;
for(var i =0;i<subidsarr.length;i++){
  startNodeX = position[subidsarr[i]].x;
  startNodeY = position[subidsarr[i]].y;
  numNetx = startNetNodeX - position[click_node_id].x;
  numNety = startNetNodeY - position[click_node_id].y;
  network.moveNode(subidsarr[i],startNodeX+numNetx,startNodeY+numNety);
}
demo说明
newNodeArr[click_node_id].subids:subids子节点的id数组,该说明请具体看展开和折叠篇
network.getPositions():获取所有的节点坐标,实时的节点位置
nodes_data._data:每次拖动结束后,节点当时的位置
思路
1. 每次拖动主节点,首先需要知道主节点下的所有子节点和子从节点
2. 拖动这节点,获取主节点的移动的x和y坐标,然后计算每一次x和y的移动距离,分别给每个子节点做计算

以上就是实现拖动节点控制子节点来进行移动的方式。这里有个问题,节点数比较多的话,或有卡顿现象,暂时还没想好怎么去更好的处理,如果这篇文章有幸被大神们看到,可以指点指点小弟,万分感谢。

相关文章

网友评论

      本文标题:visjs--network拖动节点

      本文链接:https://www.haomeiwen.com/subject/yomkuxtx.html