-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsketch.js
More file actions
76 lines (67 loc) · 2.03 KB
/
Copy pathsketch.js
File metadata and controls
76 lines (67 loc) · 2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const mappa = new Mappa("Leaflet");
let covidData;
let myMap;
let countries;
let dataProcess = [];
const options = {
lat: 0,
lng: 0,
zoom: 1.5,
style: "http://{s}.tile.osm.org/{z}/{x}/{y}.png",
};
function processData() {
for (let row of countries.rows) {
let countryName = row.get("name");
let lat = row.get("latitude");
let long = row.get("longitude");
let countryStats = covidData.countries_stat.find((x) => x.country_name === countryName);
if (countryStats) {
let numberCases = Number(countryStats.cases.replace(/,/g, ""));
let diameter = sqrt(numberCases);
dataProcess.push({ countryName, lat, long, numberCases });
}
}
let minCases = dataProcess.reduce((prev, curr) => (prev.numberCases < curr.numberCases ? prev : curr));
let maxCases = dataProcess.reduce((prev, curr) => (prev.numberCases > curr.numberCases ? prev : curr));
let minDiameter = sqrt(minCases.numberCases);
let maxDiameter = sqrt(maxCases.numberCases);
dataProcess.forEach((country) => {
country.diameter = map(sqrt(country.numberCases), minDiameter, maxDiameter, 1, 30);
});
}
function preload() {
countries = loadTable("countries.csv", "csv", "header");
httpDo(
"https://rapidapi.p.rapidapi.com/api",
{
headers: {
"x-rapidapi-host": "corona-virus-world-and-india-data.p.rapidapi.com",
"x-rapidapi-key": "9Zn0q7vRfkmshAkYYPYUbwWPNRBep19vtwSjsn8daKMRir7wq4",
},
},
function (res) {
covidData = JSON.parse(res);
processData();
},
function (err) {
console.log(err);
}
);
}
function setup() {
canvas = createCanvas(800, 800);
myMap = mappa.tileMap(options);
// Overlay the canvas over the tile map
myMap.overlay(canvas);
}
function draw() {
clear();
if (dataProcess.length !== 0) {
dataProcess.forEach((country) => {
const pixel = myMap.latLngToPixel(country.lat, country.long);
fill(255, 0, 200, 100);
const scale = pow(2, myMap.zoom());
ellipse(pixel.x, pixel.y, country.diameter * scale);
});
}
}