我正在尝试使用 angular 创建地图,使用 angular-google-chart,“geo-chart”,带有滑块,“@ angular-slider / ngx-slider”,这将显示多年来气候对我们星球的影响。多亏了python“flask”服务器,我在angular客户端上加载了所有数据,我的最终数据数组中有3列:实体->国家名称、年份和当年的数据。为了浏览这些年并加载那一年的新数据,我为滑块创建了一个函数,在那一刻我有滑块的年份,我将做一个过滤器从我的数组中获取确切的年份。整个综合体按其应有的方式工作,也就是说,您可以根据国家的数据,看到这些年来国家的颜色变化。问题是每次我向前或向后推动滑块时,它都会继续“ 就像它继续发出请求并意识到它将无法停止并正常运行代码一样。我希望我尽可能清楚,提前为我用英语写作的方式感到抱歉。就像它继续发出请求并意识到它将无法停止并正常运行代码一样。我希望我尽可能清楚,提前为我用英语写作的方式感到抱歉。
我在下面为您提供了一个示例,说明我希望它如何出现,但我不明白为什么我的“闪烁”而不是它们。 https://ourworldindata.org/grapher/death-rate-by-source-from-indoor-air-pollution?time=1990
它们是我使用的相同数据,唯一的区别是我不使用“代码”列,因为我不需要它已经具有国家名称。 这是我的示例 ,想象每次我使用滑块时它都会轻弹并更改数据
file.ts
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { Options } from '@angular-slider/ngx-slider';
@Component({
selector: 'app-geo-chart',
templateUrl: './geo-chart.component.html',
styleUrls: ['./geo-chart.component.css'],
})
export class GeoChartComponent implements OnInit {
obsCiVett: Observable<any[]>;
chartDataArray;
mappedToArray;
options = {
width: 1800,
height: 1800,
legend: false,
colors: [
'#fff6cc',
'#f1c453',
'#faa307',
'#f48c06',
'#e85d04',
'#dc2f02',
'#d00000',
'#9d0208',
'#6a040f',
'#370617',
],
};
value: number = 1990;
options_slider: Options = {
floor: 1990,
ceil: 2019,
showTicks: true,
};
constructor(public http: HttpClient) {}
ngOnInit(): void {
this.obsCiVett = this.http.get<any>('http://127.0.0.1:5000/data');
this.obsCiVett.subscribe(this.prepareGeoData);
console.log('You are running jQuery version: ' + $.fn.jquery);
}
change(anno) {
var arr = this.mappedToArray.filter((e) => {
//console.log(e[1])
return parseInt(e[1]) === anno.value;
});
this.chartDataArray = new ChartData('Titolo','GeoChart',arr,['State', 'Deaths'],this.options)
return true;
}
prepareGeoData = (data: any) => {
this.mappedToArray = data.map((d) => Array.from(Object.values(d)));
this.chartDataArray = new ChartData(
'Titolo',
'GeoChart',
this.mappedToArray,
['State', 'Deaths'],
this.options
);
};
};
export class ChartData {
constructor(public title, public type, public data, public columnNames, public options) {
this.data = data
}
change_data(data){
this.data = data;
}
}
地理图
file.html
<div class="container">
<div class="row justify-content-center">
<div>
<google-chart [title]="chartDataArray.title" [type]="chartDataArray.type" [data]="chartDataArray.data" [options]="chartDataArray.options">
</google-chart>
<div>
</div>
滑块
<ngx-slider [(value)]="value" [options]="options_slider" (valueChange)="change({value})"></ngx-slider>
到达我的数据是一个对象数组
this.mappedToArray = data.map((d) => Array.from(Object.values(d)));
使用此代码,我将它们转换为数组数组,因为谷歌图表想要这样。
这是我处理的最终数据的一个例子