这是一个演示:http://jsbin.com/okUxAvE/18/edit?js,output
我正在使用d3.behavior.zoom()
(也可以进行平移).我只想要平移而没有实际变焦.现在,当你拖动树的一部分时,重绘是非常奇怪和"跳跃"(因此演示 - 看到它是知道我的意思).我假设我与点击事件有某种冲突(点击节点会扩展它们).但是,我看不出问题是什么,更不用说如何修复它了.此外,我希望用户能够通过拖动背景进行平移,而不仅仅是通过在树上方定位.
所以实际上这里有两个问题:
Lar*_*off 11
缩放行为确定鼠标相对于其附加元素的坐标以查找转换.您正在修改附加缩放行为的元素的位置,因此修改用于变换的相对坐标.因此,你会看到这种抖动.解决方案是将缩放行为附加到另一个元素,例如附加到SVG本身.这也解决了2.
通过将缩放行为附加到SVG元素本身,可以使整个画布可拖动.然后,您只需修改缩放处理程序,以在设置翻译时考虑边距.
要修复抖动并使整个画布可拖动,只需在创建SVG时更改行的顺序:
var svg = d3.select("#map").append("svg")
.attr("width", width + margin.right + margin.left)
.attr("height", height + margin.top + margin.bottom)
.call(pan)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
Run Code Online (Sandbox Code Playgroud)
然后,要修复平移偏移,请修改缩放处理程序:
function panned() {
svg.attr("transform",
"translate(" + (d3.event.translate[0] + margin.left) + "," +
(d3.event.translate[1] + margin.top) + ")");
}
Run Code Online (Sandbox Code Playgroud)
在这里完成示例.
归档时间: |
|
查看次数: |
2395 次 |
最近记录: |