我一直在尝试使用node.js和mapbox库来学习更好的可视化。
在此处使用此示例:Running Map Example
我想添加一个速度图表,并允许用户点击一个节点,然后在一个小弹出窗口中查看有关该位置的数据 - 对于今天,我只想提高速度。
它似乎是一个递归算法,所以我需要实现变量来存储以前的位置和时间,但我遇到了三个问题:
sqrt((.x(point1) - .x(point2)) + (.y(point1) + .y(point2))
,但我不确定在这个例子中如何存储或解析坐标这是我现在拥有的: 使用高程显示作为我的模板,我认为我已经通过添加以下三个片段来显示该行:
设置比例:
var speed = d3.scale.linear()
.range([height, 0])
.domain([0, d3.max(dataRet, function(d) {
return d[1][2];
})]);
在行中添加数据:
var SpeedLine = d3.svg.line()
.x(function (d) { return x(d[0]); })
.y(function (d) { return speed(d[2])})
显示行:
svg.append('path')
.datum(dataRet)
.attr('class', 'speed-line')
.attr('d', speedLine);
我知道我必须添加类似于这个psudocode的速度函数:
var dt = chroniton.domain(Time1, Time2)
var speed[i] = LongLat(previousPoint).distanceto(currentPoint)/dt
在弹出框中:
dt.format(something to do with time formatting)
注意1:,我将函数datePlaceHeart
的名称更改为dataRet
,因为我要添加新内容来执行此操作,并且datePlaceHeartSpeedStuffAndThings
变得有点长;)
注意2:我还没有能够启动弹出窗口,因为我还没有弄清楚如何使用给定的数据计算速度,嗯,做一个简单的数据似乎有点傻第一。 (幸运的是,它实际上并不容易)
请帮帮忙?这是我编辑的完整代码(Edited index.js): Code