123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- "use script"; //开发环境建议开启严格模式
- var url = "https://api.waqi.info/mapq/bounds/?bounds={RECTANGLE}&inc=placeholders&k={KEY}&_={DATA}";
- var table = [
- { level: "一级(优)", influence: "空气质量令人满意,基本无空气污染", suggestion: " 各类人群可正常活动" },
- {
- level: "二级(良)",
- influence: "空气质量可接受,但某些污染物可能对极少数异常敏感人群健康有较弱影响",
- suggestion: "心脏病和肺病患者症状显著加剧,运动耐受力降低,健康人群普遍出现症状",
- },
- {
- level: "三级(轻度污染)",
- influence: "易感人群症状有轻度加剧,健康人群出现刺激症状",
- suggestion: "儿童、老年人及心脏病、呼吸系统疾病患者应减少长时间、高强度的户外锻炼",
- },
- {
- level: "四级(中度污染)",
- influence: "易感人群症状有轻度加剧,健康人群出现刺激症状",
- suggestion: "儿童、老年人及心脏病、呼吸系统疾病患者避免长时间、高强度的户外锻炼,一般人群适量减少户外运动",
- },
- {
- level: "五级(重度污染)",
- influence: "心脏病和肺病患者症状显著加剧,运动耐受力降低,健康人群普遍出现症状",
- suggestion: "儿童、老年人及心脏病、肺病患者应停留在室内,停止户外运动,一般人群减少户外运动",
- },
- {
- level: "六级(严重污染)",
- influence: "心脏病和肺病患者症状显著加剧,运动耐受力降低,健康人群普遍出现症状",
- suggestion: "儿童、老年人和病人应停留在室内,避免体力消耗,一般人群避免户外活动",
- },
- ];
- var xmlHttpRequest;
- var nWidth = 500;
- var currTime;
- onmessage = function (e) {
- let bounds = e.data.bounds;
- currTime = new Date().getTime();
- var strKey = jskey();
- var nowUrl = url.replace("{RECTANGLE}", bounds).replace("{KEY}", strKey).replace("{DATA}", currTime);
- xmlHttpRequest = new XMLHttpRequest();
- //2.设置回调函数
- xmlHttpRequest.onreadystatechange = callback;
- //3.初始化XMLHttpRequest组建
- xmlHttpRequest.open("POST", nowUrl, true);
- //4.发送请求
- xmlHttpRequest.send();
- };
- function callback() {
- if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
- var entityTable = [];
- ////////////////////////////////////////////////////
- var currentData = JSON.parse(xmlHttpRequest.responseText);
- for (var i = currentData.length - 1; i >= 0; i--) {
- var item = currentData[i];
- var aqi = parseInt(item.aqi);
- if (!isNumber(aqi)) {
- continue;
- }
- var level = 0;
- if (aqi > nWidth) {
- level = 5;
- aqi = nWidth - 1;
- } else {
- if (aqi > 300) {
- level = 5;
- } else if (aqi > 200) {
- level = 4;
- } else if (aqi > 150) {
- level = 3;
- } else if (aqi > 100) {
- level = 2;
- } else if (aqi > 50) {
- level = 1;
- }
- }
- var newItem = {
- ...item,
- aqi: aqi,
- level: table[level].level,
- influence: table[level].influence,
- suggestion: table[level].suggestion,
- };
- entityTable.push(newItem);
- }
- //////////////////////////////////////////////////////
- //self代表子线程自身
- self.postMessage({ currTime: currTime, entityTable: entityTable });
- self.close();
- } else if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 0) {
- self.postMessage({ currTime: currTime, entityTable: [] });
- self.close();
- }
- }
- function isNumber(obj) {
- return typeof obj === "number" && !isNaN(obj);
- }
- function jskey() {
- return (function () {
- var u = "";
- decodeURIComponent("%603Z3F%7BWS%3A3BSBdIRlJTySXYnmecFR%2CF%7BeSGHhkMh%3E%3E")
- .split("")
- .forEach(function (c) {
- u += String.fromCharCode(c.charCodeAt(0) - 1);
- });
- return u;
- })();
- }
|