我有一个关于伦敦二氧化碳排放的非常大的数据集(大约 500 000 条记录......),我想使用交叉过滤器与 map 和图表一起显示。
出于性能原因,我想事先按行政区进行查询,所以我做了一个 ajax 函数,当我点击一个行政区时会动态地执行此操作(想象一下带有行政区边界的伦敦 map ,我们可以在其中单击它们)。
Ajax 代码工作正常:
function load_data(str){
var londonData = null;
$.ajax({
url: "php/london-data.php",
data: "name='"+str+"'",
type: 'get',
async: false,
success: function(data) {
londonData = data;
}
});
alert(JSON.stringify(londonData));
return londonData;}
它返回一个json文件。当我单击一个行政区时,警报功能会显示数据已更新。
但是要使用 crossfilter,我想要一个全局变量,当你点击一个自治市镇时,它会更新,这要归功于 load_data 函数,但它不起作用 -> 变量保持与初始化相同的值。
我不知道我是否足够清楚,但您认为有更新此全局变量的解决方案,从而更新交叉过滤器数据吗?就像是 :
layer.on("click", function (e) {
londonData = load_data(/*name of the layer clicked on*/)
});
dataset = crossfilter(londonData);
最后,我希望我的图表在我点击一个行政区时更新,所以当我点击一个时,“数据集”变量必须改变。不知道这是否可能,或者我做错了什么......
无论如何,在此先感谢您的帮助。
最佳答案
我认为由于 ajax 请求是异步的,你必须在成功函数中应用 crossfilter 函数。因此,您只有在加载 ajax 数据后才能创建和使用交叉过滤器数据。
关于ajax - 将 'Ajax updated' 数据集与交叉过滤器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466513/