2017-03-16 100 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