2016-01-14 200 views

回答

2

我找到了一個不需要修改D3.js源代碼的解決方案。

我根據我對這個問題的解決方案:How to temporarily disable the zooming in d3.js

而是點擊一個按鈕來啓用/禁用變焦,我用的keydown/KEYUP事件:

svg.call(zoom = d3.behavior.zoom().on('zoom', redrawOnZoom)).on('dblclick.zoom', null); 

var zooming = false; 

function redrawOnZoom() { 
    if (zooming) { 
    svgContainer.attr('transform', 'translate(' + zoom.translate() + ')' + ' scale(' + zoom.scale() + ')'); 
    } 
}; 

d3.select("body").on("keydown", function() { 
    zooming = d3.event.ctrlKey; 
}); 

d3.select("body").on("keyup", function() { 
    zooming = false; 
}); 

這是一個完整的小提琴:https://jsfiddle.net/tabacof/dcbor8eL/3/

+0

,但縮放比例在您滾動時仍會更改,但不會縮放。 – eagor