【发布时间】:2013-09-13 06:04:08
【问题描述】:
我正在搞乱 d3.geo.azimuthal 的版本,如下所示:http://mbostock.github.io/d3/talk/20111018/azimuthal.html
我有一个导航到特定大陆的链接列表。它们每个都调用一个自定义函数 navigateGlobe,其中包含有关移动到何处的信息。
function navigateGlobe(orig, scal) {
projection.origin(orig);
projection.scale(scal);
refresh(1500);
}
刷新功能与源代码示例相同,如下所示:
function refresh(duration) {
(duration ? feature.transition().duration(duration) : feature).attr("d", clip);
}
在运行 navigateGlobe 时,它可以正常工作,并且投影会平滑过渡到所需的位置和比例,但是在鼠标下一次移动地球之前,剪裁圆不会更新。我知道剪裁是由圆圈完成的,以隐藏地球一侧背对用户的国家,所以我改变了我的功能:
function navigateGlobe(orig, scal) {
projection.origin(orig);
projection.scale(scal);
circle.origin(orig); // Need to animate this!
refresh(1500);
}
剪裁圆现在会更新,但会立即更新,即在动画的第 1 步到达目标剪裁点。我想知道是否有办法以与投影相同的速率转换剪切圆,以便整个动画看起来平滑。
作为参考,同样在源示例中,var circle 设置为:
var circle = d3.geo.greatCircle()
.origin(projection.origin());
我将尝试设置一个小提琴作为错误的示例。谢谢!
【问题讨论】:
标签: javascript d3.js