【问题标题】:D3.js scale initial zoom levelD3.js 缩放初始缩放级别
【发布时间】:2015-06-21 00:01:11
【问题描述】:

我创建了一个 d3.js 强制布局,并希望根据屏幕分辨率设置初始缩放级别。 我已经使用带有静态 scale 值的 jQuery 在页面加载时实现了它,它工作正常,但是当我放大时它会直接缩放到默认比例。

代码如下:

var svg = d3.select("#grapharea")
.append("svg:svg")
.attr("width", width)
.attr("height", height)
.call(d3.behavior.zoom().scaleExtent([0.2, 3]).on("zoom", redraw)).on("dblclick.zoom", null)
.append('svg:g');

$( document ).ready(function() {
  scale = (0.24758571798325626);
  translate = [width*40/100,height*37/100];      
  svg.transition()
    .duration(750)
    .attr("transform", "translate(" + translate + ")scale(" + scale +    ")");
});

有没有办法在页面加载时设置默认缩放值,这样当我放大时它会正常缩放。

【问题讨论】:

    标签: jquery d3.js force-layout


    【解决方案1】:

    我尚未测试此解决方案,但我认为您需要在过渡结束时更新缩放行为的缩放/平移属性:

    var zoomBehavior = d3.behavior.zoom()
      .scaleExtent([0.2, 3])
      .on("zoom", redraw);
    
    var svg = d3.select("#grapharea")
    .append("svg:svg")
    .attr("width", width)
    .attr("height", height)
    .call(zoomBehavior)
    .append('svg:g');
    
    $( document ).ready(function() {
      scale = (0.24758571798325626);
      translate = [width*40/100,height*37/100];      
      svg.transition()
        .duration(750)
        .attr("transform", "translate(" + translate + ")scale(" + scale +    ")")
        .each("end", function () {
          zoomBehavior
            .scale(scale)
            .translate(translate);
        });
    });
    

    【讨论】:

    • 谢谢!在对代码进行一些修改后对我有用
    猜你喜欢
    • 2013-04-17
    • 2023-04-06
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2013-06-26
    • 2023-02-15
    • 2022-10-07
    相关资源
    最近更新 更多