2017-04-20 29 views
1
function zoomed() { svg.attr("transform", d3.event.transform); } 
var zoom = d3.zoom().on("zoom", zoomed); 

var svgMain = d3.select('body').append('svg').call(zoom); 
var svg = svgMain.append('g') // All the drawing done here 

當我翻譯svg編程方式與svg.call(zoom.translateBy, 100, 100)然後用鼠標拖動元件,svg變換屬性從拖動之前彈回的值。D3 V4:元素「卡扣」到先前的編程後平移變換

這幾乎就好像svg.call影響的轉換沒有被存儲或保存,並且恢復到存儲在d3.event.transform中的轉換。

Logging d3.event.transform shows the problem

This question似乎打在同一個問題,但對於V3。

回答

2

好像要應用的縮放行爲,以兩個不同的節點 - svgMainsvg

嘗試運行svgMain.call(zoom.translateBy, 100, 100)代替svg.call(...),看看它是否解決了問題。