【问题标题】:Detecting visible nodes in d3.js force layout after zoom-pan在缩放平移后检测 d3.js 强制布局中的可见节点
【发布时间】:2012-11-06 07:26:03
【问题描述】:

我在加载时使用 d3.js 中的强制定向布局来定位节点和边缘。然后我可以缩放和平移 svg。当我放大时,我想检测哪些节点和边是可见的,这样我就可以只为可见的节点和边实现附加数据的延迟加载。

有谁知道获取(部分)可见元素的最佳方法是什么?

代码如下(只是将一些示例粘贴在一起):

var svg = d3.select("#chart")
  .append("svg")
  .attr("width", width)
  .attr("height", height)
  .attr("pointer-events", "all")
  .append('svg:g')
  .call(d3.behavior.zoom().on("zoom", redraw))
  .append('svg:g')

svg.append('svg:rect')
  .attr('width', width)
  .attr('height', height)
  .attr('fill', 'white')

function redraw() {
  trans=d3.event.translate;
  scale=d3.event.scale
  svg.attr("transform", "translate(" + trans + ")" + " scale(" + scale + ")")
  console.log(scale)
}

【问题讨论】:

  • 你能包含你当前使用的代码吗?该方法可能取决于您如何缩放可见度。

标签: svg d3.js zooming force-layout


【解决方案1】:

如果您使用比例尺,您可以使用scale.invert 找到当前可见范围。因此,要找到宽度为 600 像素的轴的可见值,请使用 x.invert(0)x.invert(600)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2017-03-02
    • 2019-05-14
    • 2015-07-08
    • 2012-09-22
    • 2016-08-15
    • 2013-12-04
    相关资源
    最近更新 更多