簡體   English   中英

Cytoscape cyPosition()與縮放配合

[英]Cytoscape cyPosition() vs zoom fit

使用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,節點被定位有一個大的偏移(如圖所示這里 )。

另一方面,當我將layout fit設置為false ,將正確layout fit節點。 (如您在此鏈接中看到的)。

因為只有在初始縮放比例為true時才會發生,所以我認為這是此選項的特定錯誤。

請閱讀有關渲染位置與模型位置的文檔。 我認為您已經將兩者混淆了: http : //cytoscape.github.io/cytoscape.js/#notation/position

盡管平移和縮放,模型位置也必須保持恆定。 否則,位置將不一致。

另一方面,渲染位置是從模型位置,平移和縮放得出的。 自然,當縮放比例不同於標識(1)或平移像素不同於原點(0,0)時,模型位置和渲染位置也會不同。

您在屏幕上放置的位置看起來好像並不像渲染位置。

編輯:

不要將渲染的位置與模型位置混合和匹配。 如果您在處理程序中獲得了模型位置( e.cyPosition ),則繼續使用模型位置來添加節點等。 如果獲得渲染位置( e.cyRenderedPosition ),則使用渲染位置添加節點等。

除非您做一些數學運算來翻譯它們,否則將兩者混合在一起永遠不會產生期望的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM