D3完全删除'zoom'

时间:2013-08-29 05:27:32

标签: javascript svg d3.js zoom

我正试图从svg中完全删除缩放。

zoom = d3.behavior.zoom()
    .x(userNodesScaleX)
    .y(userNodesScaleY)
    .on("zoom", zoomed);
userMapSvg.call(zoom);

这已经在SVG的顶部添加了一个'rect.background',这可以防止鼠标事件到达SVG中的其他元素。

所以我决定彻底删除缩放。删除该事件,删除该矩形。我怎么能这样做?

目前的代码是

removeZoom = d3.behavior.zoom()
    .on("zoom", null);

哪个不起作用。它只会切换事件。

2 个答案:

答案 0 :(得分:4)

要停止任何将来缩放转换页面,请删除侦听器:

zoom.on("zoom", null)

撤消之前的缩放转换:

zoom.scale(1).translate([0,0]).event(userMapSvg)

http://bl.ocks.org/1wheel/6414125

bl.ocks顶部的按钮显示两种行为。

如果您的工作都不是您想要的,那么发布问题的工作示例将非常有帮助。您可能还想查看zoom documentation

答案 1 :(得分:0)

我发现的另一种工作方式是将缩放的范围以及.extenttranslateExtent设置为width和height元素(从而完全禁用缩放)。当然,将scaleExtent设置为[1,1]。