【问题标题】:Cytoscape cyPosition() vs zoom fitCytoscape cyPosition() 与缩放拟合
【发布时间】:2014-02-26 01:43:05
【问题描述】:

使用 Cytoscape.js v2.1,我注意到一些可能是错误的东西(来自这个版本或者可能是我的 =p)。

插入节点时,我使用它从tap 事件e 中获取节点位置:

position = {
    x: e.cyPosition.x,
    y: e.cyPosition.y
};

另外,我的 cytoscape 初始化程序正在设置 layout fitas 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 时发生,我认为这是此选项的特定错误。

【问题讨论】:

    标签: cytoscape.js


    【解决方案1】:

    请阅读有关渲染与模型位置的文档。我想你混淆了这两者:http://cytoscape.github.io/cytoscape.js/#notation/position

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

    另一方面,渲染位置源自模型位置、平移和缩放。自然,当缩放与身份不同 (1) 或平移与原点不同 (0, 0) 时,模型位置和渲染位置也会不同。

    您似乎没有将渲染位置用于屏幕放置。

    编辑:

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

    除非你做一些数学运算来翻译它们,否则将两者混合永远不会产生理想的行为。

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 2015-05-18
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-19
      • 1970-01-01
      相关资源
      最近更新 更多