如何使用angularjs在visjs中添加缩放按钮?

时间:2015-06-26 16:42:11

标签: javascript angularjs angularjs-directive vis.js vis.js-network

使用angularjs在visjs network graph中放大和缩小按钮需要帮助,我找不到任何相关选项。请帮助,我也提供plunker link作为示例

代码

<vis-network data="data" options="options" height="100%"></vis-network>

$scope.options = {
  autoResize: true,
  height: '800',
  width: '100%'
};

3 个答案:

答案 0 :(得分:5)

查看interaction, navigationButtons选项。它内置了缩放,平移和重置视图控件。

您需要更改您的vis选项以包含navigationButtons: truekeyboard: true以启用keboard快捷方式

$scope.options = {
  autoResize: true,
  height: '600',
  width: '100%',
  interaction: {
      navigationButtons: true,
      keyboard: true
  }
};

选中此plunker

答案 1 :(得分:2)

我从未使用过plunker,所以我无法将我的解决方案集成到您的示例中,但我为它创建了一个JSFiddle,它基于visjs.org网站上的简单网络示例。

不幸的是,目前没有setScale(scale)方法可用,但你可以扩展network直到有人实现它。

var network;
var zoomstep = 0.3;

function zoomin() {
    network.setScale(network.getScale() - zoomstep);
}

function zoomout() {
    network.setScale(network.getScale() + zoomstep);
}

vis.Network.prototype.setScale = function (scale) {
    var options = {
        nodes: []
    };
    var range = this.view._getRange(options.nodes);
    var center = this.view._findCenter(range);
    var animationOptions = {
        position: center,
        scale: scale,
        animation: options.animation
    };
    this.view.moveTo(animationOptions);
};

vis.Network.setScale代码取自Network.js和View.js源代码,基于getScale()所做的事情。我不得不重做方法View.fitView._getRangeView._findCenter所做的一些事情,但到目前为止它还运作良好。

答案 2 :(得分:0)

针对vis.js 4.21.0的更新解决方案

vis.Network.prototype.zoom = function (scale) {
    const animationOptions = {
        scale: this.getScale() + scale,
        animation: { duration: 300 }
    };
    this.view.moveTo(animationOptions);
};

点击处理程序代码:

this.network.zoom(-0.5) // or 0.5 to zoom in