d3里zoom缩放时力导向图会偏移,怎么让图以鼠标光标为中心进行缩放?

发布于 2022-09-06 04:25:10 字数 824 浏览 28 评论 0

在写一个d3的力导向图,用到zoom进行缩放,现在可以缩放,但是缩放时整个图会偏移,要怎么禁止这种偏移?
我想要的效果是,缩放的时候是以鼠标光标为中心进行的。


// 缩放
function onZoomStart() {
  console.log('start zoom');
}
function zooming(d) {
  console.log('zoom ing', d3.event.transform.k, d3.event.type, d3.zoomTransform(this));
  d3.select(this).attr('transform', d3.zoomTransform(this));
}
function onZoomEnd() {
  console.log('zoom end');
}
const zoom = d3.zoom()
  .translateExtent([[0, 0], [WIDTH, HEIGHT]])
  .scaleExtent([1 / 10, 10]) // 设置最大缩放比例
  .on('start', onZoomStart)
  .on('zoom', zooming)
  .on('end', onZoomEnd);

// 定义svg和g,其他内容放在g里面
const svg = d3.select('svg').append('svg')
  .attr('width', WIDTH)
  .attr('height', HEIGHT);
const g = svg.append('g').attr('class', 'force_g')
  .attr('width', WIDTH)
  .attr('height', HEIGHT)
  .call(zoom);


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文