【发布时间】:2016-05-27 02:34:55
【问题描述】:
我的问题很容易解释,但我在实施解决方案时遇到了真正的麻烦。我正在尝试沿 D3 地图上的路径为圆圈设置动画。这里的转折是我想使用 Mike Bostock 的旋转地球仪之一(即 3D 地图)。
我想及时添加到地球的其他路径并将这些路径用于我的动画。现在,我只想为俄罗斯边界沿线的圆圈设置动画(即沿俄罗斯多边形坐标的路径)
我已经构建了一个 jsfiddle 来获得牵引力,你可以看到我的所有代码。不幸的是,我无法让它工作,希望你能帮助我。我的 jsfiddle:http://jsfiddle.net/Guill84/xqmevpjg/7/
我认为我的主要困难是 (a) 实际引用俄罗斯路径,但我认为我目前没有得到正确的结果,以及 (b) 确保正确计算插值(即动画是动态的链接到地球,而不仅仅是“分层”)。应该这样做的代码如下:
setTimeout(function(){
var path = d3.select("path#Russia"),
startPoint = pathStartPoint(path);
marker.attr("r", 7)
.attr("transform", "translate(" + startPoint + ")");
transition();
//Get path start point for placing marker
function pathStartPoint(path) {
var d = path.attr("d"),
dsplitted = d.split(" ");
return dsplitted[1].split(",");
}
function transition() {
marker.transition()
.duration(7500)
.attrTween("transform", translateAlong(path.node()))
.each("end", transition);// infinite loop
}
function translateAlong(path) {
var l = path.getTotalLength();
return function(i) {
return function(t) {
var p = path.getPointAtLength(t * l);
return "translate(" + p.x + "," + p.y + ")";//Move marker
}
}
}
如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: javascript animation d3.js