在Cytoscape.js中的x,y位置查找元素

时间:2015-12-22 06:28:26

标签: jquery cytoscape.js

我有一个图表,允许在画布上放一些外部div来添加新对象。在此丢弃事件中,我需要确定鼠标是否在现有节点或边缘上。目前,这是通过循环遍历节点并检查renderedPosition,renderedOuterWidth和renderedOuterHeight来完成的。

看起来边缘不能以相同的方式检查,但即使它们可以,我只想找到边缘,如果位置靠近线,而不是边界框。

是否可以通过x,y坐标找到任何元素,或者是否可以触发提供pageX和pageY的click事件,以便Cytoscape将运行它自己的命中测试逻辑,并且可以在之后找到所选元素?

1 个答案:

答案 0 :(得分:3)

这是一个两步过程:

(1)确定该点是否在元素的rendered bounding box范围内,如果是......

(2)如果元素是边缘,则进行直线距离近似。您可以比较距离方块,使其更便宜。如果您使用的是弯曲贝塞尔曲线边缘,则可能需要与两条线进行比较 - 每条线与节点相交,距控制点一半距离。

我还添加了a ticket以使这个用例更容易一些,但是你现在应该做到这一点。