Cytoscape cyPosition()vs zoom适合

时间:2014-02-24 14:49:07

标签: cytoscape.js

使用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时才会发生,我认为这是此选项的特定错误。

1 个答案:

答案 0 :(得分:1)

请阅读有关渲染与模型位置的文档。我认为你把这两者弄糊涂了:http://cytoscape.github.io/cytoscape.js/#notation/position

尽管平移和缩放,模型位置必须保持不变。否则,职位将不一致。

另一方面,渲染位置来自模型位置,平移和缩放。当然,当缩放与标识(1)不同或平移与原点(0,0)不同时,模型位置和渲染位置会有所不同。

您似乎没有使用渲染位置进行屏幕放置。

编辑:

不要将渲染位置与模型位置混合和匹配。如果您在处理程序中获得模型位置(e.cyPosition),则继续使用模型位置添加节点等。如果获得渲染位置(e.cyRenderedPosition),则使用渲染位置添加节点等。

除非你做一些数学翻译,否则混合两者永远不会给出理想的行为。