2016-09-10 17 views
0

cytoscape jsグラフに新しいノードが追加されるのを防ぐ方法を教えてください。 私は既存のノードの変更位置が 私は新しいノードの追加をしたい私は追加したノードをグラフ化するノードを追加するAPIを追加使用する場合、既存のノードの重複新しいノードの追加時にノードのオーバーラップを防ぐ

を防止することを、このルールによって自動的に位置が他と重複しない がどのように変更することができますしたくありませんこの行動は? は、追加モードでノードが重複しないようにするためのソリューションです(新しいノードは既存のノードと重複しません)。

cy.add([ 
    { data: {label:"aaa" ,id:"bbb" } }, 
    { data: {label:"aaa333" ,id:"rrrr"} }, 
]); 

答えて

0

組み込みのソリューションはありません。私はちょうど、重複をテストするためにこのコードを使用して空の場所を探します(固定ノードサイズが与えられ、バウンディングボックスを使用するためにそれを適応させることができますが、それは物事を遅くします)。

function overlap(pos, size) { 
 
    var overlap = false; 
 
    cy.nodes(':visible').forEach(function (node) { 
 
    var npos = node.position(); 
 
    if ((pos.x - size) < npos.x && (pos.x + size) > npos.x && (pos.y - size) < npos.y && (pos.y + size) > npos.y) { 
 
     overlap = true; 
 
     return false; //break 
 
    } 
 
    }); 
 
    return overlap; 
 
}

Iは、最初の引数としてれる好ましい位置でこれを使用({X:..、Y:..})、それは私はちょうどかどうかを確認するためにyに10を追加失敗した場合それはfitst。これはあなたのための最良の解決策は、特定の問題に依存します。

0

これを自動化したい場合は、力の強い/物理的なレイアウトが最適です。

レイアウトを実行するときに、新しいノードを除くすべてをロックします。

さまざまなレイアウトを試して、アプリ/データに最も適したレイアウトを確認する必要があります。

関連する問題