我一直在環顧四周,還沒有找到一個固定的解決方案來設置用戶雙擊屏幕時的縮放比例。D3 - 設置雙擊的縮放比例
我最遠的是通過設置scaleVal在dblclicked功能(如圖所示)的小提琴這裏顯示
https://jsfiddle.net/helloGoodDay/62vq9h8p/3/
function dblclicked()
{
var translate = zoom.translate(),
mouse = d3.mouse(this),
scaleOld = zoom.scale(),
zoomOld = Math.log(scaleOld)/Math.LN2,
zoomNew = d3.event.shiftKey ? Math.max(minScale + 8, Math.ceil(zoomOld) - 1) : Math.min(maxScale + 8, Math.floor(zoomOld) + 1),
scaleNew = Math.pow(scaleVal, zoomNew),
zoomDelta = scaleNew/scaleOld;
svg.transition()
.duration(350)
.call(zoom
.scale(scaleNew)
.translate([(translate[0] - mouse[0]) * zoomDelta + mouse[0], (translate[0] - mouse[0]) * zoomDelta + mouse[0]])
.event);
d3.event.stopImmediatePropagation();
}
但是,如果你雙擊多一點,節點消失我也不喜歡動畫。
有沒有辦法以節點不消失的方式設置縮放比例的值,並且動畫不是這麼煩人?
編輯:功能是從https://github.com/d3/d3/issues/1985
你想設置了一個上限縮放值?因爲如果你只減小縮放比例,它將永遠是一個非常無限的縮放。 –
謝謝你的迴應。在小提琴中,當前的縮放範圍是從1到1000.所以是的,我已經設置了最大縮放值。 – helloGoodDay