當我使用 d3-zoom 并使用 zoomIdentity 以編程方式呼叫 scaleTo 函式時,我無法再使用滑鼠滾輪進行縮放。
我該如何解決這個問題?
https://observablehq.com/d/8a5dfbc7d858a16b
// mouse wheel zoom not working because use of zoomIdentity
chart = {
const svg = d3.create("svg")
.attr("viewBox", [0, 0, width, height])
.style("display", "block");
const zoom = d3Zoom.zoom()
svg.call(zoom);
const zoomArea = svg.append('g');
zoom.on('zoom', (e) => {
zoomArea.attr("transform", e.transform)
})
zoomArea.append('circle')
.attr("cx", width/2)
.attr("cy", height/2)
.attr("r", 20)
zoom.scaleTo(svg, d3Zoom.zoomIdentity)
return svg.node();
}
uj5u.com熱心網友回復:
的第二個引數zoom.scaleTo(svg, d3Zoom.zoomIdentity)接受k縮放因子(例如,2 表示 2 倍縮放)。該方法zoom.scaleTo旨在用于設定縮放級別,而不是平移(x 和 y 位置)。
如果要將整個變換設定為縮放標識(它會重置縮放級別以及 x 和 y 位置),則方法是zoom.transform(svg, d3Zoom.zoomIdentity).
如果您確實只想重置比例,則可以使用zoom.scaleTo(svg, d3Zoom.zoomIdentity.k),或者干脆使用zoom.scaleTo(svg, 1).
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/359435.html
上一篇:d3x比例和底部的標簽
