[英]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.