/** * Created by Administrator on 2017/10/31. * 湿度 */ define([], function () { var rh = { id: 'rh', // title: '1000hPa 相对湿度', title: '相对湿度', legend: 'images/meteo/legend/rh.png', data: null, layer: null, elem: 'RH', level: null, levelName: { '9999': '2米', '0925': '925hPa', '0850': '850hPa', '0700': '700hPa', '0500': '500hPa' }, buttons: { '9999': null, '0925': null, '0850': null, '0700': null, '0500': null }, isHide: false, getData: function () { //获取数据 var dataStr = meteo.c.time.getTime(); // var dataStr = '2018-01-07 14:00:00'; var vti = meteo.c.time.getVti(); var level = rh.level == '9999' ? '1000' : rh.level; var params = { dateStr: dataStr, vti: vti, elem: rh.elem, level: level } meteo.c.http.httpFunction(meteo.c.http.tImage, null, params, function (json) { meteo.c.title.updateTitle(rh.id, meteo.c.process.setTitleTime(json.odate, json.vti, rh.title, rh.levelName[rh.level])); $('#meteo-video-query-startDate').val(json.odate); json = json.data; json = JSON.parse(json); rh.data = json; rh.showRh(json); }, function () { // ONEMAP.C.publisher.publish({ type: 'warning', message: '湿度暂无当前时次/层次数据' }, 'noteBar::add'); // meteo.c.title.updateTitle(rh.id, '湿度暂无当前时次/层次数据'); }) params.vti = parseInt(vti) + 3; meteo.c.http.httpFunction(meteo.c.http.tImage, null, params, function (json) { json = json.data; json = JSON.parse(json); rh.loadImage(json); }, function () { }) // meteo.c.http.getLocalJson('799/T799_isoline_2017122420_000_RH_1000.json', function (json) { // rh.data = json; // rh.showRh(json); // }) }, showRh: function (data) { // var layer = map2DViewer.groups[rh.layer.cLayer]; var images = []; var latI = (data.elat - data.slat) / data.row; var lngI = (data.elng - data.slng) / data.col; for (var i = 0; i < data.files.length; i++) { var value = data.files[i]; if (value) { var str = value.split("\.")[0]; str = str.split("_"); // var x = str[5]; // var y = str[6]; var x = str[0]; var y = str[1]; // var slat = 75 - (x + 1) * 47.5; var slat = data.slat + x * latI; var slng = data.slng + y * lngI; var elat = slat + latI; var elng = slng + lngI; elat = elat > data.elat ? data.elat : elat; elng = elng > data.elng ? data.elat : elng; var url = data.url + value + '.mkt'; images.push(meteo.c.map.addImage(url, slat, slng, elat, elng, 0.5)); // L.imageOverlay( // // 'http://107.1.170.193:8080/scripts/meteo/test/799/T799_2017122420_000_RH_0850_' // // + x + '_' + y + // // '.png.mkt', // data.url + value + '.mkt', // L.latLngBounds(L.latLng(slat, slng), L.latLng(elat, elng)) // ).addTo(layer); } } if (!rh.layer|| !rh.layer.tLayer || rh.isHide) { for (var i = 0; i < images.length; i++) { meteo.c.map.removeImage(images[i]); } } else { if (rh.layer.images) { rh.removeImage(); } rh.layer.images = images; } // setTimeout(function () { // // }, 300); }, loadImage:function (data) { //预先加载图片 for (var i = 0; i < data.files.length; i++) { var value = data.files[i]; if (value) { var url = data.url + value + '.mkt'; var img = $('').attr('src', url); img = null; } } }, create: function () { rh.layer = { tLayer: meteo.c.map.createLayer(), images: null, } }, remove: function () { if (rh.layer) { meteo.c.map.removeLayer(rh.layer.tLayer); rh.removeImage(); rh.layer = null; } }, removeImage: function () { if (rh.layer.images) { for (var i = 0; i < rh.layer.images.length; i++) { meteo.c.map.removeImage(rh.layer.images[i]); } rh.layer.images = null; } }, show: function () { rh.isHide = false; rh.showRh(rh.data); }, hide: function () { rh.isHide = true; if (rh.layer) { rh.removeImage(); rh.layer.images = null; } }, open: function () { if(ONEMAP.M.myLayers.checkLength() >= map23DConfig.layerMaxLength) { ONEMAP.C.publisher.publish({ type: 'warning', message: '图层数量已达上限' }, 'noteBar::add'); return; } //-------------创建图层------------------ if (rh.layer) { rh.remove(); } rh.create(); //----------------图层管理------------------- var options = { action: "add", // mod: "qixiang", DOM: { guid: rh.layer.tLayer, type: "group", name: rh.title, }, } var guid = ONEMAP.M.myLayers.myLayerControl(options); ONEMAP.C.publisher.subscribe(function (option) { switch (option.action) { case 'remove': rh.close(); break; case 'opacity': if (option.options.opacity) { rh.show(); } else { rh.hide(); } break; } }, guid); //------------------------------------- rh.buttons[rh.level].parent().addClass('current'); meteo.c.title.addTitle(rh.id); meteo.c.legend.addLegend(rh.id, rh.legend); meteo.c.time.open(); rh.isHide = false; //------------------------------------ rh.getData(); }, close: function () { var options = { action: "remove", DOMid: rh.layer.tLayer, } ONEMAP.M.myLayers.myLayerControl(options); rh.buttons[rh.level].parent().removeClass('current'); meteo.c.title.removeTitle(rh.id); meteo.c.legend.removeLegend(rh.id); meteo.c.time.close(); rh.level = null; rh.remove(); }, update: function () { if (!rh.layer || rh.isHide) return; // var option = { // action: 'update', // DOMid: rh.layer.tLayer, // DOM: { // name: '湿度' + meteo.c.time.getTimeOnTitle() // } // } // ONEMAP.M.myLayers.myLayerControl(option); rh.getData() }, updateLevel: function () { rh.buttons[rh.level].parent().siblings().removeClass('current'); rh.buttons[rh.level].parent().addClass('current'); rh.getData(); }, click: function (level) { if (rh.level && level != rh.level) { rh.level = level; rh.updateLevel(); } else { rh.level = level; if (rh.layer) { rh.close(); } else { rh.open(); } } }, init: function () { var buttons = $('.meteo-button-799'); // rh.buttons['9999'] = buttons.eq(6); // rh.buttons['0925'] = buttons.eq(7); // rh.buttons['0850'] = buttons.eq(8); // rh.buttons['0700'] = buttons.eq(9); rh.buttons['9999'] = buttons.eq(10); rh.buttons['0925'] = buttons.eq(11); rh.buttons['0850'] = buttons.eq(12); rh.buttons['0700'] = buttons.eq(13); rh.buttons['0500'] = buttons.eq(14); } } meteo.f.rh = rh; return meteo.f.rh; })