javascript - 为什么 d3.behavior.zoom().center() 不起作用?

标签 javascript d3.js

我有两个放大和缩小按钮。我试图将缩放功能置于中间中心,因此当我放大时,它会缩放到中间,而不是按钮所在的位置。我已经像这样定义了一个 ZoomListener 变量。

var width = 800;
var height = 500;

var zoomlistener = d3.behavior.zoom()
  .center([width / 2, height / 2])
  .on("zoom", redraw);

然后用以下命令调用它...

var zoomfactor = 1;
d3.select(".zoomin").on("click", function (){
    zoomfactor = zoomfactor + 0.2;
    zoomlistener.scale(zoomfactor).event(d3.select(".graphmap"));
});

d3.select(".zoomout").on("click", function (){
    zoomfactor = zoomfactor - 0.2;
    zoomlistener.scale(zoomfactor).event(d3.select(".graphmap"));
});

但是当我放大时,它仍然会缩放按钮所在的位置。

.graphmap 是

var svg = d3.select(".graph").append("svg")
    .attr("width", width)
    .attr("height", height)
    .attr("class", "graphmap");

最后重绘是

function redraw() {
  console.log("here", d3.event.translate, d3.event.scale);
  g.attr("transform","translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")"); 
} 

最佳答案

中心仅支持鼠标滚轮移动。请参阅here举个例子。

关于javascript - 为什么 d3.behavior.zoom().center() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528307/

相关文章:

javascript - 当我检查控制台时出现此错误 :"Uncaught SyntaxError: missing ) after argument list"

d3.js - 在 D3 js 版本 5 中使用嵌套数据渲染文本

javascript - 防止 div 元素在切换其他元素时移动?

javascript - jAlert 之后设置焦点

javascript - 只允许输入名称而不允许输入数字

javascript - 如何在javascript中找到嵌套数组的最大值/最小值?

javascript - 网站远程渲染 d3.js 服务器端

javascript - d3(或 JavaScript): use local variable in another function

javascript - 简单的点击事件委托(delegate)不起作用

javascript - 有没有更优雅的方式来实例化这个Map?