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

标签 jquery cytoscape.js

我有一个图表,允许将外部 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/

相关文章:

Cytoscape.js 的性能和布局

javascript - 创建动态文本框然后写入文本文件

javascript - 使用 javascript/jquery 将随机 css 类添加到随机元素

cytoscape.js - 节点上的内容和标签 - Cytoscape

reactjs - Redux 和带有状态的库 (cytoscape)

javascript - 在 Cytoscape.js 中动态添加数据

javascript - 删除功能对 MySQL 表不起作用?

javascript - 你认为 iframe 的替代品是什么

jquery - Rails View 表现得很尴尬

jquery - CytoscapeJS - 显示节点邻居?