使用Cytoscape.js v2.1,我发现了一些可能是错误的东西(来自这个版本或者我的= p)。
插入节点时,我使用此节点从tap
事件e
获取节点位置:
position = {
x: e.cyPosition.x,
y: e.cyPosition.y
};
另外,我的cytoscape初始化程序将layout fit
设置为true
:
$cy.cytoscape({
minZoom: 0.1,
maxZoom: 2.0,
layout: {
fit: true
},
(...)
所以问题就开始了。使用此功能,在Windows 7,Chrome版本32.0.1700.107或Firefox 27.0.1上,节点的位置具有较大的偏移量(如here所示)。
另一方面,当我将layout fit
设置为false
时,节点已正确定位。 (正如您在this link中所见)。
由于只有在初始缩放适合度为true
时才会发生,我认为这是此选项的特定错误。
答案 0 :(得分:1)
请阅读有关渲染与模型位置的文档。我认为你把这两者弄糊涂了:http://cytoscape.github.io/cytoscape.js/#notation/position
尽管平移和缩放,模型位置必须保持不变。否则,职位将不一致。
另一方面,渲染位置来自模型位置,平移和缩放。当然,当缩放与标识(1)不同或平移与原点(0,0)不同时,模型位置和渲染位置会有所不同。
您似乎没有使用渲染位置进行屏幕放置。
编辑:
不要将渲染位置与模型位置混合和匹配。如果您在处理程序中获得模型位置(e.cyPosition
),则继续使用模型位置添加节点等。如果获得渲染位置(e.cyRenderedPosition
),则使用渲染位置添加节点等。
除非你做一些数学翻译,否则混合两者永远不会给出理想的行为。