代码之家  ›  专栏  ›  技术社区  ›  Jacob

如何在Cytoscape中设置panZoom小部件的上限和下限?

  •  0
  • Jacob  · 技术社区  · 6 年前

    我可以很好地初始化对象:

    ngOnInit() {
        this.cy = cytoscapeService.cytoscape( Object.assign( {
            container : this.el.nativeElement,
        }, DATA_FLOW_CYTOSCAPE_CONFIG ) );
        this.cy.panzoom( Object.assign(
            { minZoom : 0, maxZoom : 10 }, // arbitrary numbers
            relateConfig.panzoomDefaults,
            ) );
    

    但是,无论我使用什么数字,或者当我的图形更改视图时,我似乎都无法更新缩放滑块的最大/最小外观。我的意思是,如果视图只能从1-2缩放,那么整个滑块应该在最小值(1)和最大值(2)之间滑动。

    private runLayout() {
        this.cy.minZoom( 1e-50 );
        const layout = this.cy.layout( DATA_FLOW_LAYOUT_CONFIG );
        layout.on( 'layoutstop', () => {
            this.cy.minZoom( this.cy.zoom() );
            this.cy.panzoom( 'destroy' );
            this.cy.panzoom( Object.assign(
                { minZoom : this.cy.zoom() },
                relateConfig.panzoomDefaults,
                ) );
        } );
    

    这将调整缩放限制,但也仅限制滑块的移动量,而不会重新计算最小值和最大值 滑块 位置。

    这有意义吗?有什么想法吗?

    前任:

    滑块初始运动范围-

    [|----------[]----------|]

    视图已更改,边界有限-

    [--|--[]---|-------------]

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jacob    6 年前

    这方面的问题在于 Object.assign .

    this.cy.panzoom( Object.assign(
            { minZoom : this.cy.zoom() },
            relateConfig.panzoomDefaults,
            ) );
    

    如果将“平移缩放”的默认值保存在某个位置( relateConfig.panzoomDefaults 在我的情况下),它们不会被 对象分配 。删除我希望能够立即更改的值后,我可以使用 对象分配 .