Javascript D3旋转地球仪:变焦功能故障

Javascript D3旋转地球仪:变焦功能故障,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我正在尝试使用D3将缩放功能合并到Mike Bostock的旋转地球仪中。只要地球在旋转,或者处于“动画”状态,缩放功能就像一个魔咒。然而,我遇到以下问题: (1) 一旦鼠标向下移动,当我滚动滚轮时,甚至变焦功能也会被禁用,这不是理想的效果。我已经缩小了问题的范围,我相信这种行为的发生是因为第70行有以下代码:done=true (2) 缩放功能已经禁用了所有那些有趣的翻译效果(例如gnomonic、等距等),这也是不需要的效果 我有一把小提琴,它演示了遇到的问题:缩放后,动画正在刷新图形。当它

我正在尝试使用D3将缩放功能合并到Mike Bostock的旋转地球仪中。只要地球在旋转,或者处于“动画”状态,缩放功能就像一个魔咒。然而,我遇到以下问题:

(1) 一旦鼠标向下移动,当我滚动滚轮时,甚至变焦功能也会被禁用,这不是理想的效果。我已经缩小了问题的范围,我相信这种行为的发生是因为第70行有以下代码:
done=true

(2) 缩放功能已经禁用了所有那些有趣的翻译效果(例如gnomonic、等距等),这也是不需要的效果


我有一把小提琴,它演示了遇到的问题:

缩放后,动画正在刷新图形。当它关闭时,您需要明确地执行此操作(我还清理了缩放,它抛出了一个错误):

函数移动(){
if(d3.事件){
var标度=d3.event.scale;
var origin=[d3.event.translate[0]*-1,d3.event.translate[1]];
投影。比例尺(比例尺);
背景圆。属性('r',刻度);

如果(完成)刷新();//bump.有人吗?有什么想法吗?马克,非常感谢。我现在正在浏览你的代码,试图了解你的解决方案为什么有效:)你还知道为什么其他投影被禁用了吗?这也一直困扰着我barmy@Noobster,在
事件上设置
.on的选择错误。应类似于:
d3.select(“#proj”).on(“change”,function(){…
New fiddle感谢您的标记。由于某些原因,转换现在抖动到无法使用的程度。我猜我现在需要禁用它们。
function move() {
    if(d3.event){
        var scale = d3.event.scale;
        var origin = [d3.event.translate[0] * -1, d3.event.translate[1]];

        projection.scale(scale);
        backgroundCircle.attr('r', scale);

        if (done) refresh(); //<-- explicit refresh  
    }
}