var appupdate = false; var idup; var TileServerG = "http://{s}.tile.osm.org/{z}/{x}/{y}.png"; var TileServerI = "https://testmap.141.ir/141map/{z}/{x}/{y}.png"; // var Tnow = Date.now(); var Tnow = "1610622000"; //var TileServerW = "https://api.weather.com/v3/TileServer/tile?product=temp&ts=" + Tnow + "&xyz={x}:{y}:{z}&apiKey=d522aa97197fd864d36b418f39ebb323"; var TileServerW = "https://api.weather.com/v3/TileServer/tile?product=tempFcst&ts=1610625600&fts=1610629200&xyz={x}:{y}:{z}&apiKey=d522aa97197fd864d36b418f39ebb323" var Weather_key = "d522aa97197fd864d36b418f39ebb323"; var mapsNam = ['map1', 'map2', 'map3']; var weathers = ['clouds_new', 'precipitation_new', 'pressure_new', 'wind_new', 'temp_new']; var lmw1; var lmw2; var lmw3; var wkey = '731610ac3cc936b52c1a1b7d35d76754'; var mapcenter = [34.620, 52.471]; var zoomlvl = 7; var defaultweather1; var defaultweather2; var defaultweather3; var maxtile1; var maxtile2; var maxtile3; var maxtile4; var maxWeather; var cl_layer; var pe_layer; var prd_layer; var wnd_layer; var tmp_layer; var test_layer; var map1; var map2; var map3; var map4; var Weather_type; var Weather_Time; var MapRun; var FctTime; var RunTheMap = 0; var ValidWatches = []; var looper = 0; var mapinstop = true; var jsonSetWurl; var getSetWurl; var defaultweather4 = null; var TimeObjects; var map4Layer; var IsFct; var SliderCurrentStep; var WName = [ { id: 1, "24hrMaxTempFcst": "بیشینه دمای 24 ساعت آتی" }, { id: 2, '24hrMinTempFcst': "کمینه دمای 24 ساعت آتی" }, { id: 3, 'cloudsFcst': "پیشبینی ابر" }, { id: 4, 'radarFcst': "پیشبینی رادار هواشناسی" }, { id: 5, 'satrad': "رادار و ماهواره هواشناسی" }, { id: 6, 'satradFcst': "پیشبینی رادار و ماهواره هواشناسی" }, { id: 7, 'sensibleWeather12hrFcst': "هوای حساس 12 ساعت آتی" }, { id: 8, 'snow24hrFcst': "بارش برف در 24 ساعت آتی" }, { id: 9, 'temp': "دما" }, { id: 10, 'tempFcst': "دمای 24 ساعت آتی" }, { id: 11, 'uv': "اشعه فرابنفش" }, { id: 12, 'uvFcst': "پیشس بینی اشعه فرا بنفش" }, { id: 13, 'windSpeedFcst': " سرعت باد در 24 ساعت آتی" }, { id: 14, 'windSpeed': " سرعت باد" }, { id: 15, 'snow1hrCumulativePrecipFcst': " بارش متراکم برف" }, { id: 16, 'thunder12hrFcst': " رعد و برق رد 12 ساعت آتی" }, ]; var SetWurl = "https://api.weather.com/v3/TileServer/series/productSet?apiKey=d522aa97197fd864d36b418f39ebb323"; //::::::::::::::::::::::::::::::::::::: // document.addEventListener('DOMContentLoaded', function() { // $('#cover').fadeOut(4000); // $('#PContent').fadeIn(4000); // }, false); //::::::::::Start Document :::::::::::::::::::::::: $(document).ready(function() { //:::::::::::::::::::::::::::::::::::::Maxter weather Layers var clouds = L.OWM.clouds({ showLegend: true, opacity: .5, appId: wkey }); var cloudscls = L.OWM.cloudsClassic({ appId: wkey }); var precipitation = L.OWM.precipitation({ appId: wkey }); var precipitationcls = L.OWM.precipitationClassic({ appId: wkey }); var rain = L.OWM.rain({ appId: wkey }); var raincls = L.OWM.rainClassic({ appId: wkey }); var snow = L.OWM.snow({ appId: wkey }); var pressure = L.OWM.pressure({ appId: wkey }); var pressurecntr = L.OWM.pressureContour({ appId: wkey }); var temp = L.OWM.temperature({ appId: wkey }); var wind = L.OWM.wind({ appId: wkey }); //======================================================================== cl_layer = L.tileLayer("http://tile.openweathermap.org/map/clouds_new/{z}/{x}/{y}.png?appid=731610ac3cc936b52c1a1b7d35d76754&lang=fa", { opacity: 1 }); pe_layer = L.tileLayer("http://tile.openweathermap.org/map/pressure_new/{z}/{x}/{y}.png?appid=731610ac3cc936b52c1a1b7d35d76754&lang=fa"); prd_layer = L.tileLayer("http://tile.openweathermap.org/map/precipitation_new/{z}/{x}/{y}.png?appid=731610ac3cc936b52c1a1b7d35d76754&lang=fa"); wnd_layer = L.tileLayer("http://tile.openweathermap.org/map/wind_new/{z}/{x}/{y}.png?appid=731610ac3cc936b52c1a1b7d35d76754&lang=fa"); tmp_layer = L.tileLayer("http://tile.openweathermap.org/map/temp_new/{z}/{x}/{y}.png?appid=731610ac3cc936b52c1a1b7d35d76754&lang=fa"); test_layer = L.tileLayer("http://maps.openweathermap.org/maps/2.0/weather/TA2/{z}/{x}/{y}?date=1527811200&opacity=0.9&fill_bound=true&appid=731610ac3cc936b52c1a1b7d35d76754"); //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: var layersx = [clouds, cloudscls, precipitation, precipitationcls, rain, raincls, snow, pressure, pressurecntr, temp, wind]; //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::Tiles Maxter::::::::::::::::::: var maxtile = L.tileLayer(TileServerG); //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //:::::::::::::::::::::::::::Fill default weathers MAxterc0d3r::::::::::::::::::::::::::::::::: defaultweather1 = cl_layer; defaultweather2 = wnd_layer; defaultweather3 = tmp_layer; // defaultweather4 = L.tileLayer(TileServerW, { opacity: 0.4 }); //:::::::::::::::::::::::::::::::::::::::::::::::::::::::Define layers M4}{T3R:::::::::::::::: maxtile1 = L.tileLayer(TileServerG); maxtile2 = L.tileLayer(TileServerG); maxtile3 = L.tileLayer(TileServerG); maxtile4 = L.tileLayer(TileServerG); maxWeather = { "Clouds": clouds }; //=================================================================================================ADDing Layers:::::::::::::::M4> { console.log("::::::::::::::::::::::::"); console.log(WSetJson); jsonSetWurl = WSetJson; Map4Start(); }); //==========================================================Get TimsRecords var GetLayerTimeSet = function(LayerName) { var TimeRecords = []; TimeObjects = jsonSetWurl["seriesInfo"][LayerName]["series"]; TimeObjects.forEach(function(item, indexthis) { var ThisItem = TimeObjects[indexthis]["ts"]; TimeRecords.push(ThisItem); }); return TimeRecords; // Maxter here Genrerate Times of weather } //======================================================================Get TimelayerForecasts MAxter::::::::: var GetLayerTimeSetFc = function(LayerName, TimSelect) { var TimeFcObjects = []; var TimFctRecords = []; TimeFcObjects = jsonSetWurl["seriesInfo"][LayerName]["series"]; TimeFcObjects.forEach(function(itemtime, indextme) { var ThisItem = TimeFcObjects[indextme]["ts"]; if (ThisItem == TimSelect) { var ThisItemNods = TimeFcObjects[indextme]["fts"]; ThisItemNods.forEach(function(itemfct, indexfct) { TimFctRecords.push(itemfct); }); } }); return TimFctRecords; // Maxter here Genrerate FctTimes of weather } //====================================================================Get valid Hour : minutes::::MAxter C0d3r:::: var GetValidHourGrp = function(timgrp) { ValidWatches = []; timgrp.forEach(function(item, index) { var itemtimstamp = new Date(item * 1000); var itemhrs = itemtimstamp.getHours(); var itemminute = itemtimstamp.getMinutes(); var timemix = itemhrs + ":" + itemminute; ValidWatches.push(timemix); }); return ValidWatches; } //====================================================MapRunAll Maxter:::C0der:::::::: var MapRunAll = function(LayerName) { var thisitemtime; var timfcThis; var tmefctlayer; var timsofLasyer = GetLayerTimeSet(LayerName); timsofLasyer.forEach(function(item, index) { thisitemtime = item; timfcThis = GetLayerTimeSetFc(LayerName, thisitemtime); timfcThis.forEach(function(item, index) { tmefctlayer = GetWeatherFct(LayerName, thisitemtime, timfcThis); setTimeout(() => { map4.removeLayer(defaultweather4); defaultweather4 = tmefctlayer; map4.addLayer(defaultweather4) setInterval(function() { map4.invalidateSize(); }, 100); }, 2000); }); }); } //:::::::::::::::::::::::::::::::::::::::::::::::::::::::: var CurrentClock = function() { var now = new Date(); var timecurrent = now.getHours(); return timecurrent; } var CurrentWeatherTime = function(LayerName) { var localtime = Date.now(); var weatherTimeSet = GetLayerTimeSet(LayerName); var BestTime; var closest = weatherTimeSet.reduce(function(prev, curr) { BestTime = (Math.abs(curr - localtime) < Math.abs(prev - localtime) ? curr : prev); }); return BestTime; } // var MapSetCurrent = function(LayerName) { // var Allitemtime = GetLayerTimeSet(LayerName); // var thisitemtime = Allitemtime[0]; // var thisitemFct = GetLayerTimeSetFc(LayerName, thisitemtime); // var currentFct = thisitemFct[0]; // if (defaultweather4) { map4.removeLayer(defaultweather4); } // defaultweather4 = GetWeather(LayerName, thisitemtime, thisitemFct); // map4.addLayer(defaultweather4) // setInterval(function() { // map4.invalidateSize(); // }, 100); // } var MapSetCurrent = function(LayerName, IsFct) { var Allitemtime = GetLayerTimeSet(LayerName); var thisitemtime = Allitemtime[0]; if (IsFct) { var thisitemFct = GetLayerTimeSetFc(LayerName, thisitemtime); var currentFct = thisitemFct[0]; if (defaultweather4) { map4.removeLayer(defaultweather4); } defaultweather4 = GetWeatherFct(LayerName, thisitemtime, currentFct); } else { if (defaultweather4) { map4.removeLayer(defaultweather4); } defaultweather4 = GetWeather(LayerName, thisitemtime); } //============================================================== map4.addLayer(defaultweather4) setInterval(function() { map4.invalidateSize(); }, 100); } //================================================== //=================================================Live Map Loader MAxter:::::::::::::::::::::::: var MapSetCurrentLive = function(LayerName, IsFct, TimeStep, FctStep) { var Allitemtime = GetLayerTimeSet(LayerName); var thisitemtime = Allitemtime[TimeStep - 1]; if (IsFct) { var thisitemFct = GetLayerTimeSetFc(LayerName, thisitemtime); var currentFct = thisitemFct[0]; if (defaultweather4) { map4.removeLayer(defaultweather4); } defaultweather4 = GetWeatherFct(LayerName, thisitemtime, currentFct); } else { if (defaultweather4) { map4.removeLayer(defaultweather4); } defaultweather4 = GetWeather(LayerName, thisitemtime); } map4.addLayer(defaultweather4) setInterval(function() { map4.invalidateSize(); }, 100); } var Map4Start = function() { map4Layer = "temp"; var Allitemtime = GetLayerTimeSet("temp"); var ThisItemtime = Allitemtime[0]; // var TimeGrp = GetValidHourGrp(Allitemtime); // console.log(TimeGrp); // var itemtimstamp = new Date(ThisItemtime * 1000); // console.log(itemtimstamp); // var itemhrs = itemtimstamp.getHours(); // var itemminute = itemtimstamp.getMinutes(); // alert(itemhrs + ":" + itemminute + "--" + ThisItemtime + "::" + itemhrs); // var thisitemFct = GetLayerTimeSetFc("temp", ThisItemtime); // var currentFct = thisitemFct[0]; if (defaultweather4) { map4.removeLayer(defaultweather4); } defaultweather4 = GetWeather("temp", ThisItemtime); map4.addLayer(defaultweather4) setInterval(function() { map4.invalidateSize(); }, 100); var thistimeline = GetValidHourGrp(Allitemtime); console.log(thistimeline); } //:::::::::::::::::::::::::::::::::::::::::::::::::::::: var GetWeatherFct = function(W_type, W_time, W_FcTime) { var wurl; wurl = "https://api.weather.com/v3/TileServer/tile?product=" + W_type + "&ts=" + W_time + "&fts=" + W_FcTime + "&xyz={x}:{y}:{z}&apiKey=" + Weather_key; return L.tileLayer(wurl, { opacity: 0.4 }); } //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: var GetWeather = function(W_type, W_time) { var wurl; wurl = "https://api.weather.com/v3/TileServer/tile?product=" + W_type + "&ts=" + W_time + "&xyz={x}:{y}:{z}&apiKey=" + Weather_key; return L.tileLayer(wurl, { opacity: 0.4 }); } //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //================Map timeline :::MAxC0d3r:::::::::::::::: var LayerTimeLineSet = function(LayerName, IsFct) { var thislayername = LayerName; var thisFct = IsFct; var thisitemtime; var timfcThis; var tmefctlayer; var TimesLine = []; var TimeFctLine = []; var thistimeindex = 0; var thistimefctindex; var timsofLasyer = GetLayerTimeSet(LayerName); // console.log(timsofLasyer); timsofLasyer.forEach(function(itemtime, index) { thisitemtime = itemtime; thistimeindex = thistimeindex + 1; var itemtimstamp = new Date(thisitemtime * 1000); var itemhrs = itemtimstamp.getHours(); var itemminute = itemtimstamp.getMinutes(); var timemix = itemhrs + ":" + itemminute; TimesLine.push({ "id": thistimeindex, "timeis": thisitemtime, "validWatch": timemix, "LayerName": thislayername, "Fct": IsFct }); if (IsFct) { timfcThis = GetLayerTimeSetFc(LayerName, thisitemtime); // console.log(timfcThis); timfcThis.forEach(function(itemtimefct, index) { thistimeindex = thistimeindex + 1; var itemtimfctstamp = new Date(itemtimefct * 1000); var itemfcthrs = itemtimfctstamp.getHours(); var itemfctminute = itemtimfctstamp.getMinutes(); var timefctmix = itemfcthrs + ":" + itemfctminute; TimesLine.push({ "id": thistimeindex, "timeis": thisitemtime, "validWatch": timefctmix, "timefctis": itemtimefct, "LayerName": thislayername, "Fct": IsFct }); }); } }); console.log(TimesLine); return TimesLine; } //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //================Map timeline :::MAxC0d3r:::::::::::::::: var LayerTimeLineSetOne = function(LayerName, IsFct) { var thislayername = LayerName; var thisFct = IsFct; var thisitemtime; var timfcThis; var tmefctlayer; var TimesLine = []; var TimeFctLine = []; var thistimeindex = 0; var thistimefctindex; var timsofLasyer = GetLayerTimeSet(LayerName); // console.log(timsofLasyer); timsofLasyer.forEach(function(itemtime, index) { thisitemtime = itemtime; thistimeindex = thistimeindex + 1; var itemtimstamp = new Date(thisitemtime * 1000); var itemhrs = itemtimstamp.getHours(); var itemminute = itemtimstamp.getMinutes(); var timemix = itemhrs + ":" + itemminute; if (!IsFct) { TimesLine.push({ "id": thistimeindex, "timeis": thisitemtime, "validWatch": timemix, "LayerName": thislayername, "Fct": IsFct }); } if (IsFct) { timfcThis = GetLayerTimeSetFc(LayerName, thisitemtime); var thisvaluefct = timfcThis[0]; TimesLine.push({ "id": thistimeindex, "timeis": thisitemtime, "validWatch": timemix, "timefctis": thisvaluefct, "LayerName": thislayername, "Fct": IsFct }); // console.log(TimesLine); } }); console.log(TimesLine); return TimesLine; } //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: var ReloadSlider = function(Timsgrp) { $(".irs").remove(); $(".TimeSlider").remove(); var thiswathces = []; var thisitemwatch; Timsgrp.forEach(function(itemwatch, index) { thisitemwatch = itemwatch.validWatch; thiswathces.push(thisitemwatch); }); thiswathces.sort(); $(".timelooper").append(" "); // var my_range = $("TimeSlider").data("ionRangeSlider"); // my_range.destroy(); // // 3. Update range slider content (this will change handles positions) // my_range.update({ // skin: "flat", // values: thiswathces, // grid: true, // step: 1, // onChange: function(data) { // var timlayerstep = data.from; // SliderCurrentStep = timlayerstep; // MapSetCurrentLive(map4Layer, IsFct, timlayerstep, "0"); // console.log(data.from); // }, // onStart: function(data) { // SliderCurrentStep = data.from; // } // }); // // 4. Reset range slider to initial values // my_range.reset(); $('.TimeSlider').ionRangeSlider({ skin: "flat", values: thiswathces, grid: true, step: 1, from: 0, onChange: function(data) { var timlayerstep = data.from; SliderCurrentStep = timlayerstep; MapSetCurrentLive(map4Layer, IsFct, timlayerstep, "0"); console.log(data.from); }, onStart: function(data) { SliderCurrentStep = data.from; } }); $(".TimeSlider").fadeIn(); } var RunSlidermax = function() { $('#playstat').toggleClass("fa-play-circle fa-pause-circle"); var GoSlidermax = function() { var pop = 1; if (!mapinstop) { var ringer = ValidWatches.length; if (looper < ringer) { $('#TimeSlider').data("ionRangeSlider").update({ from: looper, }); MapSetCurrentLive(map4Layer, IsFct, looper, "0"); setTimeout(function() { GoSlidermax(); }, 1000); looper++; } else { looper = 0; GoSlidermax(); } } }; mapinstop = !mapinstop ? true : false; GoSlidermax(); }; var StopMapmax = function() { mapinstop = true; $('#playstat').removeClass("fa-pause-circle"); $('#playstat').addClass("fa-play-circle"); }