2015-12-22 69 views
2

我有一個圖形,允許在畫布上添加一個外部div以添加新對象。在此放置事件中,我需要確定鼠標是否位於現有節點或邊緣上。目前,這是通過手動完成循環節點並檢查renderedPosition,renderedOuterWidth和renderedOuterHeight。在Cytoscape.js中的x,y位置查找元素

它看起來不像邊緣可以用同樣的方法檢查,但即使他們可以我只想找到邊緣,如果位置靠近線,而不是邊界框。

是否有可能通過x,y座標找到任何元素,或者是否有可能觸發提供pageX和pageY的單擊事件,因此Cytoscape將運行它自己的命中測試邏輯,並且可以在之後找到所選元素?

回答

2

這是一個兩步過程:

(1)確定的點是否爲所述元件的rendered bounding box內,並且如果是這樣...

(2)如果該元素是邊緣,做直線距離近似。您可以比較距離平方,以降低成本。如果您使用彎曲的貝塞爾邊緣,則可能需要比較兩條線 - 每條線與節點相交,距離控制點一半。

我也增加了a ticket使這個用例更容易一些,但是你現在應該做以上的事情。