D3.js一次绘制每个点
D3.js draw each point at a time
我正在用D3构建一个地图绘制工具。我在用这个例子。
一切都可行,但我想画出每一个相差10毫秒的点,就像它的画一样。
我试着做一个间歇,但没有成功。我也在考虑制作css动画,每个点都有一个动画延迟,但这似乎并不奏效。
有人能向我解释一下如何一个接一个地绘制数据吗?
function redrawSubset(subset) {
var radius = 2;
var bounds = path.bounds({ type: 'FeatureCollection', features: subset });
var topLeft = bounds[0];
var bottomRight = bounds[1];
var start = new Date();
var points = g.selectAll('path')
.data(subset, function(d) {
return d.id;
});
path.pointRadius(radius);
svg.attr('width', bottomRight[0] - topLeft[0] + radius * 2)
.attr('height', bottomRight[1] - topLeft[1] + radius * 2)
.style('left', topLeft[0] + 'px')
.style('top', topLeft[1] + 'px');
g.attr('transform', 'translate(' + (-topLeft[0] + radius) + ',' + (-topLeft[1] + radius) + ')');
points.enter().append('path');
points.exit().remove();
points.attr('d', path);
}
可以逐圈渲染,但有点复杂。也许一个变通办法是将它们全部绘制为透明,并将不透明度设置为1,延迟10ms:
points.enter().append("path").attr("opacity", 0)
.transition()
.duration(10)
.delay(function(d,i){ return i*10})
.attr("opacity", 1);
这是你的plunker:http://plnkr.co/edit/ys4VofukQOvA4pY0TQX7?p=preview
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 单击时将功能限制为仅绘制一次
- 如何只重新绘制一次饼图,而不是为它的每个数据标签绘制一次
- 如何一次一个滚动绘制每个SVG路径(按时间顺序)
- 我如何一次在画布上绘制多个矩形
- D3.js一次绘制每个点