Я использую принудительно направленный макет в 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)
}