Cytoscape.js:将渲染位置转换为模型位置

时间:2017-06-01 17:17:19

标签: javascript cytoscape.js

如何将rendered position转换为model position

示例:

var rpos = cy.pan(); 
var mpos = cy.toModelPosition(rpos); // Get top left corner position in model

据我所知,doc没有提及任何转换方法。我相信这会非常有用!

当然,我可以自己写点东西:

function toModelPosition(pos) {
    return {
        x: (pos.x - cy.pan().x) / cy.zoom(),
        y: (pos.y - cy.pan().y) / cy.zoom(),
    };
}

2 个答案:

答案 0 :(得分:0)

您通常不需要转换它们,因为api中的函数允许您传递任何值。

答案 1 :(得分:0)

就像@maxkfranz一样,Cytoscape API的大多数功能都接受两种格式。

但是我需要自己转换。所以这就是我最终要做的:

// Convert a rendered position to a model position
cy.toModelPosition = (pos) => {
    const pan = cy.pan();
    const zoom = cy.zoom();
    return {
        x: (pos.x - pan.x) / zoom,
        y: (pos.y - pan.y) / zoom,
    };
};
// Convert a model position to a rendered position
cy.toRenderedPosition = (pos) => {
    const pan = cy.pan();
    const zoom = cy.zoom();
    return {
        x: pos.x * zoom + pan.x,
        y: pos.y * zoom + pan.y,
    };
};