我正在搞乱 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());
我将尝试设置一个小提琴作为出了什么问题的例子。谢谢!