Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除数据(刷新)WebGL地球仪_Javascript_Webgl Globe - Fatal编程技术网

Javascript 删除数据(刷新)WebGL地球仪

Javascript 删除数据(刷新)WebGL地球仪,javascript,webgl-globe,Javascript,Webgl Globe,我正在玩webglobe(),希望能够用新数据“刷新”它,然后将其动画化为新状态。库中提供的示例没有帮助,因为它们在页面加载时立即加载数据系列,但我希望动态加载新数据(例如,每30秒一次) 使用新的数据重复执行以下操作只会额外更新地球仪的数据,因此当新数据出现时,地球仪上的条形图会“堆叠”起来: globe.addData(data, {format: 'magnitude'}); globe.createPoints(); globe.animate(); 似乎没有一种明显的方法可以使用内置

我正在玩webglobe(),希望能够用新数据“刷新”它,然后将其动画化为新状态。库中提供的示例没有帮助,因为它们在页面加载时立即加载数据系列,但我希望动态加载新数据(例如,每30秒一次)

使用新的
数据重复执行以下操作
只会额外更新地球仪的数据,因此当新数据出现时,地球仪上的条形图会“堆叠”起来:

globe.addData(data, {format: 'magnitude'});
globe.createPoints();
globe.animate();

似乎没有一种明显的方法可以使用内置API减去/清除/重置地球仪的数据(然后设置数据的新状态)。这容易做到吗?

我想出来了。在
globe.js中添加以下行:

function createPoints() {
    ...
    this.points.name = "lines"; // Add this line
    scene.add(this.points);
    }
}

// Create this function
function removeAllPoints() {
    scene.remove(scene.getObjectByName("lines"));
}

// Near the bottom of the code
this.addData = addData;
this.removeAllPoints = removeAllPoints; // Add this line
this.createPoints = createPoints;
this.renderer = renderer;
this.scene = scene;
现在,您可以简单地执行以下操作:

TWEEN.start();
globe.removeAllPoints();
globe.addData(data, {format: 'magnitude', name: 'results', animated: false});
globe.createPoints();

霍布斯给出的答案真的很有帮助。但只是一个小小的变化

您无需调用
globe.animate()

我曾在一个项目中使用过它,在这个项目中,我每5秒钟更新一次数据,并一遍又一遍地调用
globe.animate()
,使渲染变得缓慢。
评论出来,你就是黄金。

这不正是你在第144行链接的页面上所做的吗?通过ajax加载数据,并将条与新数据连接起来。不完全是。。该示例通过ajax加载数据文件“population909500.json”,但该数据文件中有3个数据集(每年一个)。加载一组新数据并重新执行对globe.addData的调用将导致新数据堆叠在旧数据之上。在调用globe.createPoints()之后,将不会再生成二者之间的数据。这是一个问题,因为我想动态添加数据(我不知道新数据将是什么)。对此有任何更新吗?你是对的,但我想我会提到我必须添加到removeAllPoints()以防止内存泄漏。