【问题标题】:D3 zoom is not properly reseting zoom state and translated locationD3 缩放未正确重置缩放状态和平移位置
【发布时间】:2015-04-22 16:07:30
【问题描述】:

好吧,我已经让它工作了,但不知何故,现在测试时它不再工作了。所以在我的项目中,我有一个 zoomdragablema​​p。放大或拖动时,您始终可以单击重置按钮来重置整个演示文稿。效果很好。

所以缩放定义

var g = svg.append("g");
var zoom = d3.behavior.zoom()
    .translate([0, 0])
    .scale(1)
    .scaleExtent([1, maximumZoom])
    .on("zoom", zoomed);
svg.call(zoom);

缩放功能是:

g.attr("transform", "translate([0,0]).scale(" + 1 + ")");
zoom.translate([0, 0]);
zoom.scale(1);

单击“重置”按钮时,重置已正确完成。但是当现在缩放或拖动任何地方时,您实际上会看到它是旧的缩放和位置。

但奇怪的是:

zoom.translate([0, 0]);
zoom.scale(1);

应该解决这个问题。正如我 1 个月前所说,它运行良好。

此外还有缩放功能:

function zoomed() {
    g.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}

【问题讨论】:

    标签: javascript jquery d3.js zooming scale


    【解决方案1】:

    我不是 100% 确定,但似乎 调用 缩放事件 或者说设置缩放事件稍后 svg 元素正在解决这个问题。

    所以简单地调用

    zoom.on("zoom", zoomed);
    svg.call(zoom);
    

    一切完成后。我将它放入加载地图的函数中。现在它又可以正常工作了。

    您可以查看网站here

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 2014-09-05
      • 2019-07-25
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      相关资源
      最近更新 更多