我正在尝试向D3中的四叉树添加一个元素,但是每当我添加多个元素时,控制台中出现“RangeError:超出最大堆栈大小”错误。我的四叉树声明看起来像这样(在CoffeeScript中) :
quadtree = d3.geom.quadtree()
.x((d) -> x_scale(d[dim_1]))
.y(0)
quadroot = quadtree([])
... later in another function (quadtree and quadroot are both scoped globally) ...
quadtree.extent([[x_scale.range()[0], 0],[x_scale.range()[1], 0]])
datapoints = datapoints_g.selectAll("circle")
.data(vis_data)
datapoints.exit()
.remove()
# now add / transition datapoints
datapoints.enter()
.append("circle")
.attr("cx", x_scale.domain()[0])
.attr("cy", y_scale.domain()[0])
.on("mouseover", showDetails)
.on("mouseout", hideDetails)
datapoints
.transition()
.duration(1000)
.attr("r", (d) ->
if sizeBy == 'none'
return datapoint_size
else
return size_scale(d[sizeBy]))
.attr("cx", (d) -> x_scale(d[dim_1]))
.attr("cy", (d) ->
if dim_2 != 'none'
y_scale(d[dim_2])
else
quadroot.add(d)
# calculateOffset(maxR)
)
我试图修改http://fiddle.jshell.net/6cW9u/8/中的示例,仅供参考;但是,即使我从示例中注释掉所有其他代码,我仍然会在将第二个元素添加到quadroot时得到无限递归错误。
任何指导都会非常感激!
提前致谢。