2017-03-16 69 views
0

我有一个呈现的cytoscape.js图。我有兴趣利用预设布局来放置节点。该cytoscape.js文档显示预设布局如下:Cytoscape.js预设布局文档

var options = { 
    name: 'preset', 
    positions: undefined, // map of (node id) => (position obj); or function(node){ return somPos; } 
    zoom: undefined, // the zoom level to set (prob want fit = false if set) 
    pan: undefined, // the pan level to set (prob want fit = false if set) 
    fit: true, // whether to fit to viewport 
    padding: 30, // padding on fit 
    animate: false, // whether to transition the node positions 
    animationDuration: 500, // duration of animation in ms if enabled 
    animationEasing: undefined, // easing of animation if enabled 
    ready: undefined, // callback on layoutready 
    stop: undefined // callback on layoutstop 
}; 

有一个人帮助我理解或给的时候才说的以下

// map of (node id) => (position obj); or function(node){ return somPos; } 

我存储所有文件的意思的例子有以下的列

id, origin, destination, x position, y position

在MySQL数据库表中的节点是否cytoscape.js位置采取dicti onary看起来像这样:

{'id': 1, {'x':10, 'y':45}}, {'id': 2, {'x':21, 'y':32}} etc?

回答

1

这意味着当positions设置为undefined时,您需要创建一个函数来获取每个节点的位置。

例如:

cy.nodes().forEach(function(n){ 
    var x = n.data("x"); 
    var y = n.data("y"); 
}); 

应该返回您的节点位置。

编辑

当你创造它,您可以设置节点位置。例如:

var elements; 
 
    elements: [{"data":{"id":"yourID","name":"name"},"position"{"x":"0.0","y":"0.0"}}];

如需更多信息,请参阅Cytoscape的JS网站this演示。在这里他们手动设置位置。

+0

谢谢你原来的问题的答复是关于如何设置职位比获得他们更多。 – ForgottenKahz

+0

参阅编辑。我希望能帮到你! – MFigueredo

+0

如果您在@MFigueredo的示例中定义了元素JSON中的位置,那么您在初始化时不需要做任何事情指定'layout:{name:'preset'}'。默认情况下,预设布局不会执行任何操作,只是使用已定义的位置。布局的其他功能是用于如果您想手动指定新位置,使用动画等。 – maxkfranz