我有一个图表,允许将外部 div 拖放到 Canvas 上以添加新对象。在此放置事件中,我需要确定鼠标是否位于现有节点或边缘上方。目前,这是通过循环遍历节点并检查已渲染位置、已渲染外部宽度和已渲染外部高度来手动完成的。
看起来边缘不能以相同的方式检查,但即使可以,我只想在位置靠近线条而不是边界框时找到边缘。
是否可以通过 x,y 坐标找到任何元素,或者是否可以触发提供 pageX 和 pageY 的点击事件,以便 Cytoscape 将运行它自己的 HitTest 逻辑,并且可以在之后找到所选元素?
最佳答案
这是一个两步过程:
(1)判断该点是否在rendered bounding box范围内元素的,如果是的话...
(2) 如果元素是边,则进行直线距离近似。您可以比较距离平方以降低成本。如果您使用弯曲的贝塞尔曲线边缘,您可能需要与两条线进行比较 - 每条线与一个节点相交,并且与到控制点的距离的一半相交。
我还添加了 a ticket为了使这个用例更容易一些,但您现在应该执行上述操作。
关于jquery - 在 Cytoscape.js 中查找 x,y 位置的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34409733/