2012-11-17 79 views
4

我在d3.js中使用強制導向佈局來加載一次以定位節點和邊緣。然後我可以縮放和平移svg。當我放大時,我想檢測哪些節點和邊緣可見,這樣我就可以只爲可見節點和邊緣實現延遲加載附加數據。檢測d3.js中的可見節點在縮放平臺後強制佈局

有誰知道什麼是獲得(部分)可見元素的最佳方式?

代碼如下(只是貼一些例子一起):

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) 
} 
+0

您可以包含您當前使用的代碼嗎?這種方法可能取決於你如何縮放vis。 – nrabinowitz

回答

2

如果您正在使用天平,你可以找到使用scale.invert當前可見的範圍內。因此,要找到寬度爲600px的軸的可見值,請使用x.invert(0)x.invert(600)

相關問題