不知道大家會不會跟我一樣遇到這樣的問題,在之前做的力導向圖的基礎(chǔ)上加上縮放功能的時候,拖動節(jié)點時整體會平移不再是之前酷炫的效果(失去了拉扯的感覺?。?。天啊,簡直不能接受如此丑X的效果。經(jīng)過不懈的努力終于解決了這個問題。
以下是事情發(fā)生的原因及解決的代碼:
var zoom = d3.behavior.zoom()
.scaleExtent([1, 10]) //縮放范圍
.on("zoom", zoomed);
function zoomed() {
container.attr("transform", //此處的container是之前svg下 append('g')后返回的對象
"translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
var container = svg.append("g") //相當于縮放的容器
.call(zoom);
加入以上的代碼后,縮放的功能是實現(xiàn)了。但是,拖動節(jié)點的時候 不再有力拉動的感覺 而是整個圖的平移。(如下圖)

拖動示例
)
我們理想中的拖動效果不應該和縮放效果沖突,所以又去重新看了官網(wǎng)的例子
猜測可能是

圖
這邊定義的是縮放加整個的平移 所以拖動的時候 是整個力導向圖的平移。
根據(jù)官網(wǎng)的例子調(diào)整了下代碼:
定義drag時調(diào)用的方法:

code
對應的方法:

code
調(diào)用拖拽函數(shù):

code
更新后調(diào)用的示例:

更新后示例
2017.2.23