我正試圖獲得相同的行爲Wil Linssen's implementation 但d3.js版本4 我很困惑與變焦的API版本4d3.js:放大的單擊事件
,我作出的改變原來的實施: zoom.translate()
替換 d3.zoomTransform(selection.node())
並添加適當的點來代替:
svg.attr("transform",
"translate(" + t.x + "," + t.y + ")" +
"scale(" + t.k + ")"
);
這一個:
zoom
.scale(iScale(t))
.translate(iTranslate(t));
更換,以
var foo = iTranslate(t);
zoom.
translateBy(selection, foo[0], foo[1]);
zoom
.scaleBy(selection, iScale(t));
但它仍然有一個問題,看起來像規模,縮小...
例子:Example on d3.v4 - jsfiddle
感謝您的幫助
爲了使它更短,我猜你可以跳過var self = this;'語句。 – mgc
謝謝,更新 – Nixie
感謝您的解決方案,這真的很好,很有幫助! –