2017-07-07 122 views
1

我有一個剝離下來力向圖,縮放/平移功能:https://bl.ocks.org/anonymous/36b27a0b6f8c485c25995e7c223def3c刪除雙擊放大D3

這裏是變焦部分:

var zoomHandler = d3.zoom() 
    .on("zoom", zoomActions); 

zoomHandler(svg); 

function zoomActions(){ 
    g.attr("transform", d3.event.transform) 
    } 

我想刪除變焦能力雙擊,只保留滾動。根據文檔和其他問題,我知道我必須在某個地方包含.on("dblclick.zoom", null)。但是,我無法弄清楚放置這段代碼的位置。另外,我不確定我是否正確使用「svg」和「g」來對我的元素進行分組,這可能會導致此問題。我已經看到了與這個問題有關的其他問題,並且無法使它們適合我的情況。

我該如何補救?謝謝你們所有人的洞察!

回答

1

既然你正在呼籲SVG選擇縮放功能...

zoomHandler(svg); 

...您必須將監聽器添加到相同的選擇:

svg.on("dblclick.zoom", null) 

這裏是你的更新bl.ocks:https://bl.ocks.org/anonymous/42745557a8602692d9dc98c33a327d29

+0

完美地工作 - 謝謝。我發誓我早些時候嘗試過 - 但我一定是一直在密集。我應該在svg選擇上調用縮放功能嗎?無論如何,如果我在svg上調用它,那麼在下一行創建一個g組有什麼意義? –

+0

傳統上,D3編碼器調用放大''元素。 –

+0

這就是我收集的 - 謝謝。將代碼更改爲'zoomHandler(g)'並將其放在var g = svg.append(「g」)下面會導致縮放,該縮放適用於前幾個滾動條,然後中斷。 –

0
var zoomHandler = d3.zoom() 
    .on("zoom", zoomActions); 

zoomHandler(svg); 

    svg.call("zoom").on("dblclick.zoom", null); 


function zoomActions(){ 
    g.attr("transform", d3.event.transform) 
} 
+0

如果你這樣做,你會得到'未知類型:dblclick'錯誤。 –

+0

你說得對,謝謝 – bluehipy