我已經用一些數據創建了一個分層邊緣綁定圖,並嘗試在我遇到的一些問題的圖上實現縮放和拖動。如何解決我的羣集捆綁圖中的縮放和平移問題?
這裏是我到目前爲止類似工作的jsfiddle:拖動和縮放只發生
1):https://jsfiddle.net/hnjvxd48/1/
和相關代碼:
var zoom = d3.behavior.zoom()
.scaleExtent([0,8])
.on("zoom", zoomhandler);
var drag = d3.behavior.drag()
.origin(function(d) { return d; })
.on("dragstart", dragstarted)
.on("drag", dragged)
.on("dragend", dragended);
var svg = d3.select(".container").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.append("g")
.attr("transform", "translate(" + radius + "," + radius + ")")
.call(zoom)
.call(drag);
function zoomhandler(){
svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
function dragstarted(d) {
d3.event.sourceEvent.stopPropagation();
d3.select(this).classed("dragging", true);
}
function dragged(d) {
d3.select(this).attr("cx", d.x = d3.event.x).attr("cy", d.y = d3.event.y);
}
function dragended(d) {
d3.select(this).classed("dragging", false);
}
你會發現在外部邊緣而不是圖形的內部部分。
2)拖動圖形會導致圖形閃爍和居中以更改並切斷。
3)縮放(通過鼠標滾輪完成)也會使圖形不正確,並將其置於不可預知的位置,部分位於視口外。
4)嘗試在縮小圖形後拖動圖形使其閃爍並消失。
什麼原因導致這些問題,我該如何解決它們?我怎麼能給我的圖形(這比我提供的示例大得多)最初「縮小」狀態,並且可能使用按鈕單擊事件而不是本地滾輪實現來觸發縮放功能?
你是男人詹姆斯! – dalvacoder