// JavaScript Document var title = "道路LIVEカメラ・積雪情報"; var shortTitle = "道路LIVEカメラ・積雪情報"; const Bar = VueChartJs.Bar; const reactiveProp = VueChartJs.mixins.reactiveProp; const blueBar = 'rgba(0, 138, 210, 0.5)'; const redBar = 'rgba(224, 116, 173, 0.5)'; const blueBorder = 'rgba(0, 138, 210, 1)'; const redBorder = 'rgba(224, 116, 173, 1)'; var snowMode = true; var layer18 = []; var kisei = []; var camObj18 = []; var cam18 = []; var live18Con = []; var live08Con = []; var camObj08 = []; var cam08 = []; var teleObj = []; var tele18Con = []; var tele08Con = []; var tel08 = []; var tel18 = []; var item = {}; var items = tele08Con; var data = []; var route = "18"; var current = 0; var chartdata = {}; var sekiArray = []; if( location.hostname === "dk-press.net" ) { var wp_style_uri = "/takada/wp-content/themes/takada202012"; var wp_home_url = "/takada/"; } else if( location.hostname === "www.hrr.mlit.go.jp" ) { var wp_style_uri = "/takada/wp-content/themes/takada202012"; var wp_home_url = "/takada/"; } else { var wp_style_uri = tmp_path.style_uri; var wp_home_url = tmp_path.home_url; } var jsCron = { items:[], interval: null, parse: function(strUnix) { return strUnix.match(/^(\d+|\*) (\d+|\*) (\d+|\*) (\d+|\*) (\d|\*) +(\w+)/); }, check: function() { var hoy = new Date(); var test = [new Date(), hoy.getMinutes(), hoy.getHours(), hoy.getDate(), hoy.getMonth(), hoy.getDay()]; for (var i in this.items) { var exec = 0; var t = this.parse(this.items[i][1]); for (var x in t) if (t[x] && (t[x] == test[x] || t[x] == "*"))exec++; if (exec == 5 && this.items[i][0] == 0) { eval(t[6]).call(); this.items[i][0] = 1; } else if (exec < 5 && this.items[i][0] == 1) { this.items[i][0] = 0; } } }, set: function(strUnix) { if (!/^(\d+|\*) (\d+|\*) (\d+|\*) (\d+|\*) (\d|\*) +(\w+)/.test(strUnix)) return new Error("Formato invalido"); this.items.push([0, strUnix]); }, init: function(seg) { var seg = seg || 1000; this.interval = setInterval("jsCron.check()", seg); } }; jsCron.init(); const mainCon = { data: function() { return { "position": 0, "mesureDate": mesureDate, "mesureDate2": mesureDate2 } } }; const home = { template: "

" } var BarChart = { extends: Bar, mixins: [reactiveProp], props: { label: { type: String }, chartdata: { type: Array }, chartData: { type: Array }, }, data () { return { data: { labels: func_timer(teleObj[route][i].yuki), datasets: [{ label: this.label, data: this.chartdata, backgroundColor: [ blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, blueBar, redBar, ], borderColor: [ blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, blueBorder, redBorder, ], borderWidth: 1, }], }, options: { responsive: true, maintainAspectRatio: true, title: { display: false, text: "積雪深", fontSize: 20, fontWeight: "normal", }, scales: { xAxes: [{ scaleLabel: { display: true, labelString: "時間(h)", fontSize: 14, } }], yAxes: [{ ticks: {suggestedMax: 300, stepSize: 50, beginAtZero: true}, scaleLabel: { display: true, labelString: "積雪深(cm)", fontSize: 14, } }] }, legend: { display: false, }, }, } }, async mounted() { this.renderChart(this.data, this.options); } } var teleCon = Vue.extend({ template: "#meter", components: { 'bar-chart': BarChart, }, inherit: true, data () { return { datas: '', model: null, mesureDate2: mesureDate2, year: year, month: month, date: date, hour: hour, min: min, timer: "", snow: snowMode, items: items, route: route, current: current, chartdata: func_seki(teleObj[route][i].yuki), } }, created: function () { this.timer = setInterval(this.fetchEventsList, 600000); }, methods: { fetchEventsList: function () { dateUpdate(); imageUpdate(); dataUpdate(); console.log("Update!" + year + month + date + hour + min); this.mesureDate2 = mesureDate2; interval(); }, funcMain: function (e) { this.$parent.live(Number(route)); $("ul.switcher li.live").removeClass("d-none"); $(".hanrei").removeClass("d-none"); router.push({"name":"home"}); clearInterval(teleCon.timer); }, }, }); var detailCon = Vue.extend({ template: "#detail", inherit: true, beforeCreate: function(){ }, data: function() { return { mesureDate2 : mesureDate2, year: year, month: month, date: date, hour: hour, min: min, timer: '', snow: snowMode, items: items, route: route, current: current, } }, created: function() { // this.fetchEventsList(); this.timer = setInterval(this.fetchEventsList, 600000); }, methods: { fetchEventsList: function() { dateUpdate(); imageUpdate(); console.log("Update!"+ year + month + date + hour + min); this.mesureDate2 = mesureDate2; this.items = items; interval(); }, funcMain: function(e) { this.$parent.live(Number(route)); $("#footer").addClass("d-inline").removeClass("d-none"); $("#footer2").addClass("d-none").removeClass("d-inline"); $("ul.switcher li.live").removeClass("d-none"); $(".hanrei").removeClass("d-none"); router.push({"name":"home"}); clearInterval(detailCon.timer); } } }); var url = window.location.pathname; var filename = url.substring(url.lastIndexOf("/") - 2); var regexp = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i; if(window.navigator.userAgent.search(regexp) !== -1){ var mainUrl = "#app"; } else { var mainUrl = "#"; } location.hash = mainUrl; const routes = [ { name: "main", path: mainUrl, component: mainCon }, { name: "home", path: mainUrl, component: home }, { name: "detail", path: "#detail", component: detailCon }, { name: "meter", path: "#meter", component: teleCon } ]; const router = new VueRouter({ mode: "history", routes: routes }); Vue.use(VueScrollTo, { duration: 500, easing: "ease", offset: 0, cancelable: true, onDone: false, onCancel: false, x: false, y: true }); Vue.use(VueChartJs) //詳細表示オプション function meter(r,e) { //console.log(r,e); if (r === 8) { tele08Load(); $("div.tab08").addClass("active"); $("div.tab18").removeClass("active"); $("ul.switcher li.live").removeClass("d-block").addClass("d-none"); route = "08"; current = e; items = tele08Con; //console.log(tele08Con); router.push({name: "meter"}); } else { tele18Load(); $("div.tab18").addClass("active"); $("div.tab08").removeClass("active"); $("ul.switcher li.live").removeClass("d-block").addClass("d-none"); route = "18"; current = e; items = tele18Con; //console.log(tele18Con); router.push({"name": "meter"}); } i = e; } function modeCheck(snowMode) { if(snowMode === true) { title = "道路LIVEカメラ・積雪情報"; shortTitle = "道路LIVEカメラ・積雪情報"; } else { title = "道路LIVEカメラ"; shortTitle = "道路LIVEカメラ"; } return [title,shortTitle]; } new Vue({ el: "#app", router: router, name: 'main', watch: { "$route": "fetchData" }, beforeCreate: function() { HizukeUpdate(); dateUpdate(); sekiData(); ameData(); yukiData(); kionData(); if(Number(month) < 4 || Number(month) > 10) { snowMode = true; modeCheck(snowMode); } else { snowMode = false; modeCheck(snowMode); } document.title = title; }, data: function () { const pageNum = window.history.state ? window.history.pageNum || 0 : 0; // ページ番号が今のhistoryにない場合は0で初期化する(実際は0でも上書きしているが動作上問題はない) if (!pageNum) { window.history.replaceState({ ...window.history.state, pageNum }, ''); } return { pageNum, transitionName: 'forward', snow: snowMode, shorttitle: shortTitle, title: title, route: route, } }, created: function() { this.timer = setInterval(this.fetchEventsList, 60000); this.$router.beforeEach((to, from, next) => { const { pageNum } = window.history.state; this.$data.transitionName = (pageNum < this.$data.pageNum) ? 'backward' : 'forward'; if(this.$route.name == "meter" || this.$route.name == "detail") { homeFunc(); } next(); }); // ルーティング後の設定(pushStateはまだされていない?) this.$router.afterEach((to, from) => { // ワンクッション挟む(historyの更新が終わっていないため) window.setTimeout(() => { // 現在のページ番号を取得する const { pageNum } = window.history.state; // ページ番号がある場合は更新して終了 if (Number.isInteger(pageNum)) { this.$data.pageNum = pageNum; return; } // ページ番号がない場合は$dataのpageNumをインクリメントしてhistoryにセットする this.$data.pageNum += 1; window.history.replaceState({ ...window.history.state, pageNum: this.$data.pageNum }, ''); }, 0); }); }, props: { route: { type: String, default: "18" } }, methods: { fetchData: function () { this.error = this.post = null; this.loading = true; }, fetchEventsList: function() { interval(); }, funcHome: function() { location.href= wp_home_url; }, modeCheck: function() { return snowMode; }, modeChange: function() { this.snow = !this.snow; snowMode = this.snow; modeCheck(snowMode); document.title = title; this.title = title; this.shorttitle = shortTitle; }, live: function (e) { if(route != ("00" + e).slice(-2)) { if(e === 8) { map.setView([37.04, 137.80],11); } else { map.setView([37.00,138.28],11); } } if(e === 8) { $("div.tab08").addClass("active"); $("div.tab18").removeClass("active"); route = "08"; r08Buttons.addTo(map); r18Buttons.remove(); $("ul.switcher li.live").addClass("live08").removeClass("live18"); } else if(e === 18) { $("div.tab18").addClass("active"); $("div.tab08").removeClass("active"); route = "18"; r18Buttons.addTo(map); r08Buttons.remove(); $("ul.switcher li.live").addClass("live18").removeClass("live08"); } $("ul.switcher li.live").addClass("d-block").removeClass("d-none"); $("#footer").addClass("d-block").removeClass("d-none"); $("#footer2").addClass("d-none").removeClass("d-block"); map.invalidateSize(); // console.log(map._mapPane._leaflet_pos); $(".hanrei").removeClass("d-none"); router.push({"name":"home"}); // console.log(map); clearInterval(detailCon.timer); clearInterval(teleCon.timer); } }, mounted: function(){ modal(); live(18); // map.setView([37.00,138.28],11); var self = this; document.onscroll = function(e){ self.position = document.documentElement.scrollTop || document.body.scrollTop; } } }); //カスタムボタン var r18j = L.easyButton('', function() { map.setView([37.12,138.24]); }); var r18m = L.easyButton('', function() { map.setView([36.93,138.22]); }); var r8j = L.easyButton('', function() { map.setView([37.22, 138.32]); }); var r8n = L.easyButton('', function() { map.setView([37.11, 138.01]); }); var r8i = L.easyButton('', function() { map.setView([37.0095, 137.742]); }); var r18Buttons = L.easyBar([r18j,r18m],{position:"topleft"}); var r08Buttons = L.easyBar([r8j,r8n,r8i],{position:"topleft"}); var map = L.map("map",{center: [37.00,138.28], zoom:11, minZoom:9, maxZoom:16, scrollWheelZoom: false }); var option = { title: "初期表示に戻す" }; // tooltip title var defaultExtent = L.control.defaultExtent(option); defaultExtent.setZoom(11); defaultExtent.setCenter([37.00, 138.28]); defaultExtent.addTo(map); r18Buttons.addTo(map); var tileLayer = L.tileLayer("https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png",{ attribution: "地理院タイル" }).addTo(map); //国道8号線 $.when( $.getJSON({ url: wp_style_uri + "/sekisetu/kp/08_100.json", }) ).done(function(data){ kp8_100 = data; for (var i = 0; i < kp8_100.length; i++) { latlngs08[i] = [kp8_100[i].lat,kp8_100[i].lng]; } L.polyline(latlngs08, {color: "#666666",weight: 6,className: "leaflet-terminator"}).addTo(map); }).fail(function() { // エラーがあった時 console.log("error"); }); //国道18号線 $.when( $.getJSON({ url: wp_style_uri + "/sekisetu/kp/18_100.json", })).done(function(data){ kp18_100 = data; for (var i = 0; i < kp18_100.length; i++) { latlngs18[i] = [kp18_100[i].lat,kp18_100[i].lng]; } L.polyline(latlngs18, {color: '#666666',weight: 6,className: 'leaflet-terminator'}).addTo(map); }).fail(function() { // エラーがあった時 console.log("error"); }); var camIcon = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/camicon.png', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/camicon@2x.png', iconSize: [32, 32], iconAnchor: [16, 27], tooltipAnchor: [16, -20], popupAnchor: [0, -32], shadowUrl: wp_style_uri + '/sekisetu/icon/camicon-shadow.png', shadowRetinaUrl: wp_style_uri + '/sekisetu/icon/camicon-shadow.png', shadowSize: [32, 32], shadowAnchor: [12, 24] }); var camIcon08 = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/camicon.png', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/camicon@2x.png', iconSize: [32, 32], iconAnchor: [16, 0], tooltipAnchor: [0, -40], popupAnchor: [0, 0], shadowUrl: wp_style_uri + '/sekisetu/icon/camicon-shadow.png', shadowRetinaUrl: wp_style_uri + '/sekisetu/icon/camicon-shadow.png', shadowSize: [32, 32], shadowAnchor: [12, -2] }); var camIcon18 = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/camicon.png', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/camicon@2x.png', iconSize: [32, 32], iconAnchor: [0, 27], tooltipAnchor: [32, -16], popupAnchor: [16, -24], shadowUrl: wp_style_uri + '/sekisetu/icon/camicon-shadow.png', shadowRetinaUrl: wp_style_uri + '/sekisetu/icon/camicon-shadow.png', shadowSize: [32, 32], shadowAnchor: [-4, 24] }); var telIcon08 = L.icon({ iconUrl: wp_style_uri + '/yuki/icon/teleIcon.png', iconRetinaUrl: wp_style_uri + '/yuki/icon/teleIcon@2x.png', iconSize: [32, 32], iconAnchor: [16+16, 0], tooltipAnchor: [32, -40], popupAnchor: [32, 0], shadowUrl: wp_style_uri + '/yuki/icon/teleIcon-shadow.png', shadowRetinaUrl: wp_style_uri + '/yuki/icon/teleIcon-shadow.png', shadowSize: [32, 32], shadowAnchor: [12+16, -2] }); var telIcon18 = L.icon({ iconUrl: wp_style_uri + '/yuki/icon/teleIcon.png', iconRetinaUrl: wp_style_uri + '/yuki/icon/teleIcon@2x.png', iconSize: [32, 32], iconAnchor: [0+32, 27], tooltipAnchor: [32+32, -16], popupAnchor: [16+32, -24], shadowUrl: wp_style_uri + '/yuki/icon/teleIcon-shadow.png', shadowRetinaUrl: wp_style_uri + '/yuki/icon/teleIcon-shadow.png', shadowSize: [32, 32], shadowAnchor: [-4+32, 24] }); var sapaIcon08 = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/sapa_icon.svg', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/sapa_icon.svg', iconSize: [40, 40], iconAnchor: [18, 40], tooltipAnchor: [0, -40], className: 'leaflet-terminator' }); var sapaIcon18 = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/sapa_icon.svg', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/sapa_icon.svg', iconSize: [40, 40], iconAnchor: [40, 24], tooltipAnchor: [0, 0], className: 'leaflet-terminator' }); var routeIcon = []; routeIcon[0] = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/R8.svg', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/R8.svg', iconSize: [36, 36], iconAnchor: [18,24], className: 'leaflet-terminator' }); routeIcon[1] = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/R18.svg', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/R18.svg', iconSize: [36, 36], iconAnchor: [18,24], className: 'leaflet-terminator' }); var kiseiIcon = []; var iconArray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,98]; for(var i = 0; i < iconArray.length; i++){ kiseiIcon[iconArray[i]] = L.icon({ iconUrl: wp_style_uri + '/sekisetu/icon/kisei/'+ iconArray[i] + '.svg', iconRetinaUrl: wp_style_uri + '/sekisetu/icon/kisei/' + iconArray[i] + '.svg', iconSize: [36, 36], iconAnchor: [18, 18], popupAnchor: [0, -18] }); } //国道アイコン var routeObj = []; $.when( $.getJSON({ url: wp_style_uri + '/sekisetu/route.json' })).done(function (data) { routeObj = data; var route = []; for(var i = 0; i < routeObj.length; i++) { if(routeObj[i].route == '8') { route[i] = L.marker([routeObj[i].lat, routeObj[i].lng], { icon: routeIcon[0], title: routeObj[i].name, alt: routeObj[i].name, zIndexOffset: -1100, className: 'leaflet-terminator' }).addTo(map); } else { route[i] = L.marker([routeObj[i].lat, routeObj[i].lng], { icon: routeIcon[1], title: routeObj[i].name, alt: routeObj[i].name, zIndexOffset: -1100, className: 'leaflet-terminator' }).addTo(map); } } // console.log(routeObj); }).fail(function() { // エラーがあった時 console.log('error'); }); //道の駅 var sapaObj = []; $.when( $.getJSON({ url: wp_style_uri + '/sekisetu/sapa.json' })).done(function (data) { sapaObj = data; var sapa = []; var sapa2 = []; for (var i = 0; i < sapaObj.length; i++) { if(sapaObj[i].route == '18') { sapa[i] = L.marker([sapaObj[i].lat, sapaObj[i].lng], { icon: sapaIcon18, title: sapaObj[i].name, alt: sapaObj[i].name, riseOnHover:true }).addTo(map); sapa[i].bindTooltip("道の駅 " + sapaObj[i].name + "", { direction: 'left', permanent: true, offset: [-40, -5], opacity: 1.0 }); } else { sapa2[i] = L.marker([sapaObj[i].lat, sapaObj[i].lng], { icon: sapaIcon08, title: sapaObj[i].name, alt: sapaObj[i].name, riseOnHover:true }).addTo(map); sapa2[i].bindTooltip("道の駅 " + sapaObj[i].name + "", { direction: 'top', permanent: true, offset: [0, 0], opacity: 1.0 }); } } // console.log(sapaObj); }).fail(function() { // エラーがあった時 console.log('error'); }); //連続雨量(取得) function func_renzoku(e) { if(e !== undefined) { var ametext = $.grep(ameArray, function(elem, index) { return (elem[6] == e); }); if (ametext[0] !== undefined) { if((ametext[0][11]).slice(-4) != "9999") { if(Number((ametext[0][11]).slice(4)) < 0) { return "0 mm"; } else { return Number((ametext[0][11]).slice(4)) + " mm"; } } else { return "---"; } } else { return "---"; } } else { return "---"; } } //時間雨量(取得) function func_ame(e) { if(e !== undefined) { var ametext = $.grep(ameArray, function (elem, index) { return (elem[6] == e); }); if (ametext[0] !== undefined) { if((ametext[0][10]).slice(-4) != "9999") { if(Number((ametext[0][10]).slice(4)) < 0) { return "0 mm"; } else { return Number((ametext[0][10]).slice(4)) + " mm"; } } else { return "---"; } } else { return "---"; } } else { return "---"; } } //積雪深(取得) function func_yuki(e) { if(e !== undefined) { var yukitext = $.grep(yukiArray, function (elem, index) { return (elem[6] == e); }); if (yukitext[0] !== undefined) { if((yukitext[0][10]).slice(-4) != "9999") { if(Number((yukitext[0][10]).slice(4)) < 0) { return "0 cm"; } else { return Number((yukitext[0][10]).slice(4)) + " cm"; } } else { return "---"; } } else { return "---"; } } else { return "---"; } } //時間降雪(取得) function func_jikanyuki(e) { if(e !== undefined) { var yukitext = $.grep(yukiArray, function (elem, index) { return (elem[6] == e); }); if (yukitext[0] !== undefined) { if((yukitext[0][11]).slice(-4) != "9999") { if(Number((yukitext[0][11]).slice(4)) < 0) { return "0 cm"; } else { return Number((yukitext[0][11]).slice(4)) + " cm"; } } else { return "---"; } } else { return "---"; } } else { return "---"; } } //気温(取得) function func_kion(e) { if(e !== undefined) { var kiontext = $.grep(kionArray, function (elem, index) { return (elem[6] == e); }); if (kiontext[0] !== undefined) { if((kiontext[0][11]).slice(4) === '+99.9') { return "---"; } else { return Number((kiontext[0][11]).slice(4)).toFixed(1) + " °C"; } } else { return "---"; } } else { return "---"; } } //国道路線 function func_rosen(e) { if(e == "8") { return "国道8号"; } else if(e == "18") { return "国道18号"; } else { return ""; } } //国道方向 function func_houkou(e) { if(e == "8") { return "上下"; } else if(e == "3") { return "下"; } else if(e == "2") { return "上"; } else { return ""; } } //規制内容 function func_naiyo(e) { if(e !== undefined) { var naiyotext = $.grep(kisei_naiyo, function (elem, index) { return (elem.num == e); }); if (naiyotext[0] !== undefined) { return naiyotext[0].name; } else { return ""; } } } //規制内容詳細 function func_kisei_naiyo_syosai(e){ if(e !== undefined) { var naiyosyosaitext = $.grep(kisei_naiyo_syosai, function (elem, index) { return (elem.num == e); }); if(naiyosyosaitext[0] !== undefined) { return naiyosyosaitext[0].name; } else { return ""; } } } //規制内容詳細 function func_kisei_naiyo_syaryo(e){ if(e !== undefined) { var naiyosyaryotext = $.grep(kisei_naiyo_syaryo, function(elem, index) { return (elem.num == e); }); if(naiyosyaryotext[0] !== undefined) { return naiyosyaryotext[0].name; } else { return ""; } } } //規制工事 function func_kisei(e) { if(e !== undefined) { var kiseitext = $.grep(kisei_kouji, function(elem, index) { return (elem.num == e); }); if (kiseitext[0] !== undefined) { return kiseitext[0].name; } else { return ""; } } } //規制工事詳細 function func_kisei_syosai(e){ if(e !== undefined) { var kiseisyosaitext = $.grep(kisei_syosai, function(elem, index) { return (elem.num == e); }); if(kiseisyosaitext[0] !== undefined) { return kiseisyosaitext[0].name; } else { return ""; } } } //規制理由 function func_kisei_riyuu(e) { if(e !== undefined) { var kiseiriyuutext = $.grep(kisei_riyuu, function(elem, index) { return (elem.num == e); }); if (kiseiriyuutext[0] !== undefined) { return kiseiriyuutext[0].name; } else { return ""; } } } //規制工事詳細 function func_kisei_riyuu_syosai(e){ if(e !== undefined) { var kiseiriyuusyosaitext = $.grep(kisei_riyuu_syosai, function(elem, index) { return (elem.num == e); }); if(kiseiriyuusyosaitext[0] !== undefined) { return kiseiriyuusyosaitext[0].name; } else { return ""; } } } //日付フォーマット function func_date(e) { if(e !== "") { var hizuke = e; return (hizuke).slice(0,4)+"年"+Number((hizuke).slice(4,6))+"月"+(hizuke).slice(6,8)+"日"; } else { return ""; } } //時間フォーマット function func_time(e) { if(e !== "") { var jikan = e; return (jikan).slice(-4,-2)+"時"+(jikan).slice(-2)+"分"; } else { return ""; } } //詳細表示オプション function detail(r,e) { // console.log(r,e); if (r === 8) { live08Load(); $('div.tab08').addClass("active"); $('div.tab18').removeClass("active"); $('ul.switcher li.live').removeClass("d-block").addClass("d-none"); $('.hanrei').addClass('d-none'); $('#footer2').addClass("d-block").removeClass("d-none"); $('#footer').addClass("d-none").removeClass("d-block"); route = "08"; current = e; items = live08Con; router.push({name: 'detail'}); } else if(r === 18) { live18Load(); $('div.tab18').addClass("active"); $('div.tab08').removeClass("active"); $('ul.switcher li.live').removeClass("d-block").addClass("d-none"); $('.hanrei').addClass('d-none'); $('#footer2').addClass("d-block").removeClass("d-none"); $('#footer').addClass("d-none").removeClass("d-block"); route = "18"; current = e; items = live18Con; router.push({name: 'detail'}); } $('li.live').addClass('d-none'); } //ライブカメラスクロール function anchor(e) { // console.log(e); location.hash = mainUrl; var scrollTargetId = e; setTimeout(function(){ location.hash = scrollTargetId; return false; }, 200); } function dataUpdate() { sekiData(); kiseiData(); yukiData(); ameData(); kionData(); imageUpdate(); } function interval() { HizukeUpdate(); dateUpdate(); dataUpdate(); } function live08Load (){ if(camObj08.length > 0) { for (var i = 0; i < camObj08.length; i++) { live08Con[i] = { "route": camObj08[i].route, "name": camObj08[i].fullname, "lat": camObj08[i].lat, "lng": camObj08[i].lng, "img": camServer + camObj08[i].img + '?' + year + month + date + hour + min, "chiten": (snowMode) ? (camObj08[i].yuki).slice(4) : (camObj08[i].ame).slice(4), "renzoku": func_renzoku(camObj08[i].ame), "ame": func_ame(camObj08[i].ame), "yuki": func_yuki(camObj08[i].yuki), "kion": func_kion(camObj08[i].kion), "jikanyuki": func_jikanyuki(camObj08[i].yuki) } } } } function live18Load() { if(camObj18.length > 0) { for (var i = 0; i < camObj18.length; i++) { live18Con[i] = { "route": camObj18[i].route, "name": camObj18[i].fullname, "lat": camObj18[i].lat, "lng": camObj18[i].lng, "img": camServer + camObj18[i].img + '?' + year + month + date + hour + min, "chiten": (snowMode) ? (camObj18[i].yuki).slice(4) : (camObj18[i].ame).slice(4), "renzoku": func_renzoku(camObj18[i].ame), "ame": func_ame(camObj18[i].ame), "yuki": func_yuki(camObj18[i].yuki), "kion": func_kion(camObj18[i].kion), "jikanyuki": func_jikanyuki(camObj18[i].yuki) } } } } function tele08Load() { if(teleObj['08'].length > 0) { for (var i = 0; i < teleObj['08'].length; i++) { tele08Con[i] = { "route": teleObj['08'][i].route, "name": teleObj['08'][i].fullname, "lat": teleObj['08'][i].lat, "lng": teleObj['08'][i].lng, "img": camServer + teleObj['08'][i].img + '?' + year + month + date + hour + min, "chiten": (snowMode) ? (teleObj['08'][i].yuki).slice(4) : (teleObj['08'][i].ame).slice(4), "renzoku": func_renzoku(teleObj['08'][i].ame), "ame": func_ame(teleObj['08'][i].ame), "yuki": func_yuki(teleObj['08'][i].yuki), "kion": func_kion(teleObj['08'][i].kion), "jikanyuki": func_jikanyuki(teleObj['08'][i].yuki), "chartData": func_seki(teleObj['08'][i].yuki), } } } } function tele18Load() { if(teleObj['18'].length > 0) { for (var i = 0; i < teleObj['18'].length; i++) { tele18Con[i] = { "route": teleObj['18'][i].route, "name": teleObj['18'][i].fullname, "lat": teleObj['18'][i].lat, "lng": teleObj['18'][i].lng, "img": camServer + teleObj['18'][i].img + '?' + year + month + date + hour + min, "chiten": (snowMode) ? (teleObj['18'][i].yuki).slice(4) : (teleObj['18'][i].ame).slice(4), "renzoku": func_renzoku(teleObj['18'][i].ame), "ame": func_ame(teleObj['18'][i].ame), "yuki": func_yuki(teleObj['18'][i].yuki), "kion": func_kion(teleObj['18'][i].kion), "jikanyuki": func_jikanyuki(teleObj['18'][i].yuki), "chartData": func_seki(teleObj['18'][i].yuki), } } } } function imageUpdate() { dateUpdate(); tele08Load(); tele18Load(); live08Load(); live18Load(); } jQuery.event.add(window, "load", function(){ telemeter08(); telemeter18(); livecam08(); livecam18(); kiseiData(); live(18); jsCron.set("0 * * * * imageUpdate()"); jsCron.set("10 * * * * imageUpdate()"); jsCron.set("20 * * * * imageUpdate()"); jsCron.set("30 * * * * imageUpdate()"); jsCron.set("40 * * * * imageUpdate()"); jsCron.set("50 * * * * imageUpdate()"); }); //テレメーター(国道8号) function telemeter08() { $.when( $.getJSON({ url: wp_style_uri + '/yuki/telemeter08.json', }) ).done(function(data) { teleObj['08'] = data; for (var i = 0; i < teleObj['08'].length; i++) { if(tel08[i]) { tel08[i].remove(); } tel08[i] = L.marker([teleObj['08'][i].lat, teleObj['08'][i].lng], { icon: telIcon08, riseOnHover: true, riseOffset: 200, index: i }).on('click', function(e) { meter(8, e.target.options.index); }).addTo(map); tel08[i].bindTooltip("" + teleObj['08'][i].name + "", { direction: 'top', permanent: false, riseOffset: 200, zIndexOffset: -1000, offset: [-16, 40] }); } }).fail(function() { console.log('telemeter8 error'); }); } //テレメーター(国道18号) function telemeter18() { $.when( $.getJSON({ url: wp_style_uri + '/yuki/telemeter18.json' }) ).done(function(data) { teleObj['18'] = data; for (var i = 0; i < teleObj['18'].length; i++) { if(tel18[i]) { tel18[i].remove(); } tel18[i] = L.marker([teleObj['18'][i].lat, teleObj['18'][i].lng], { icon: telIcon18, riseOnHover: true, riseOffset: 200, index: i }).on('click', function(e) { meter(18, e.target.options.index); }).addTo(map); tel18[i].bindTooltip("" + teleObj['18'][i].name + "", { direction: 'left', permanent: false, zIndexOffset: -1000, offset: [34, 0] }); } }).fail(function () { // エラーがあった時 console.log('error'); }); } //ライブカメラ(国道8号) function livecam08() { $.when( $.getJSON({ url: wp_style_uri + '/yuki/livecam08.json', }) ).done(function(data) { camObj08 = data; for (var i = 0; i < camObj08.length; i++) { if(cam08[i]) { cam08[i].remove(); } cam08[i] = L.marker([camObj08[i].lat, camObj08[i].lng], { icon: camIcon08, riseOnHover: true, index: i }).on('click', function(e) { // console.log(8,e.target.options.index); detail(8, e.target.options.index); }).addTo(map); cam08[i].bindTooltip("" + camObj08[i].name + "", { direction: 'bottom', permanent: false, zIndexOffset: -100, offset: [0, 30] }); } }).fail(function() { console.log('livecam8 error'); }); } //ライブカメラ(国道18号) function livecam18() { $.when( $.getJSON({ url: wp_style_uri + '/yuki/livecam18.json', }) ).done(function(data) { camObj18 = data; for (var i = 0; i < camObj18.length; i++) { if(cam18[i]) { cam18[i].remove(); } cam18[i] = L.marker([camObj18[i].lat, camObj18[i].lng], { icon: camIcon18, riseOnHover: true, index: i }).on('click', function(e) { // console.log(18,e.target.options.index); detail(18, e.target.options.index); }).addTo(map); cam18[i].bindTooltip("" + camObj18[i].name + "", { direction: 'right', permanent: false, zIndexOffset: -200, offset: [0, 0] }); } }).fail(function () { // エラーがあった時 console.log('livecam18 error'); }); } //規制情報 function kiseiData() { $.when( $.get({ url: kiseiServer + 'hoclick/hrk_genzai39.csv', cache: false, beforeSend: function(xhr) { xhr.overrideMimeType('text/html;charset=Shift_JIS'); } })).done(function(data){ kiseiArray = $.csv()(data); for(var i = 0; i < kiseiArray.length-1; i++) { var latlngs = []; var EndPoint = ((Number(kiseiArray[i][18] / 1000).toFixed(1))).toString(); var StartPoint = ((Number(kiseiArray[i][19] / 1000).toFixed(1))).toString(); var IconLatlng = []; if(StartPoint != undefined) { var IconPoint = ((Number(Number(EndPoint) + Number(StartPoint))/2).toFixed(1)).toString(); // console.log(IconPoint); if (kiseiArray[i][4] == "8") { latlngs = $.grep(kp8_100, function(elem, index) { return (elem.kp >= EndPoint && elem.kp <= StartPoint); }); IconLatlng = $.grep(kp8_100, function(elem, index){ return (elem.kp == IconPoint); }); } else if (kiseiArray[i][4] == "18") { latlngs = $.grep(kp18_100, function(elem, index) { return (elem.kp >= EndPoint && elem.kp <= StartPoint); }); IconLatlng = $.grep(kp18_100, function(elem, index){ return (elem.kp == IconPoint); }); } // console.log("iconKp:"+IconLatlng[0]); } else { if (kiseiArray[i][4] == "8") { latlngs = $.grep(kp8_100, function(elem, index) { return (elem.kp == EndPoint); }); IconLatlng = $.grep(kp8_100, function(elem, index){ return (elem.kp == EndPoint); }); } else if (kiseiArray[i][4] == "18") { latlngs = $.grep(kp18_100, function(elem, index) { return (elem.kp == EndPoint); }); IconLatlng = $.grep(kp18_100, function(elem, index){ return (elem.kp == EndPoint); }); } // console.log("iconKp:"+IconLatlng[0]); } // console.log(latlngs[0],IconLatlng[0]); //規制区間ライン色 var lineColor = ""; if(kiseiArray[i][6] == "1" || kiseiArray[i][6] == "8") { lineColor = '#E50000'; } else if(kiseiArray[i][6] == "6") { lineColor = '#3100FF'; } else { lineColor = '#EB8000'; } layer18[i] = L.polyline(latlngs, {color: lineColor, weight: 10, className:'leaflet-terminator'}).addTo(map); /* console.log('アイコン地点:' + IconPoint); console.log('規制終了地点:' + EndPoint); console.log('規制開始地点:' + StartPoint); console.log(kiseiArray[i][6],latlngs[0],IconLatlng[0]); */ kisei[i] = L.marker(IconLatlng[0], { icon: kiseiIcon[kiseiArray[i][6]], zIndexOffset: 10, riseOnHover: true }).addTo(map); kisei[i].unbindPopup(); kisei[i].bindPopup(); kisei[i].setPopupContent("
本日の規制情報
"+ ""+ ""+ ""+ ""+ ""+ ""+ "
路線名(方向)" + func_rosen(kiseiArray[i][4]) + "(" + func_houkou(kiseiArray[i][5]) + ")" + "
地名" + kiseiArray[i][10] + " 〜
" + kiseiArray[i][11] + "
規制内容" + func_naiyo(kiseiArray[i][6]) + "
規制内容詳細" + func_kisei_naiyo_syosai(kiseiArray[i][7]) + "
原因事象" + func_kisei_riyuu(kiseiArray[i][8]) + " " + func_kisei_riyuu_syosai(kiseiArray[i][9]) + "
規制状況" + func_date(kiseiArray[i][14]) + ' ' + func_time(kiseiArray[i][15]) + "
" + kiseiArray[i][22] + "
", { autoPan:true, autoPanPaddingTopLeft:[180,10], autoPanPaddingBottomRight:[10,10] } ); kiseiObj[i] = $.extend({},kiseiArray[i]); } }).fail(function() { // エラーがあった時 console.log('kisei error'); }); } function live(e) { if(e === "8") { $('div.tab08').addClass("active"); $('div.tab18').removeClass("active"); route = "08"; map.setView([37.04, 137.80],11); } else if(e === "18") { $('div.tab18').addClass("active"); $('div.tab08').removeClass("active"); route = "18"; map.setView([37.00,138.28],11); } $('ul.switcher li.live').addClass("d-block").removeClass("d-none"); $('#footer').addClass("d-block").removeClass("d-none"); $('#footer2').addClass("d-none").removeClass("d-block"); $('.hanrei').removeClass("d-none"); router.push({'name':'home'}); // console.log(map); clearInterval(teleCon.timer); clearInterval(detailCon.timer); } //積雪深(取得) function func_seki(e) { var sekitext = []; // console.log(sekiArray); if(sekiArray.length > 0) { for (var i = 0; i < sekiArray.length; i++) { sekitext[i] = $.grep(sekiArray[i], function (elem, index) { return (elem[6] == e); }); } } var data = []; $.each(sekitext,function(index, value) { if ((this[0][10]).slice(-4) != "9999") { if (Number((value[0][10]).slice(4)) < 0) { data.push(0); } else { data.push(Number((value[0][10]).slice(4))); //data.push( ((index * 5) ^ 5) + (Number(value[0][0]) * 1.75) ); } } else { data.push(0); } }); return data; } function func_timer(e) { var sekitext = []; for(var i = 0; i < 15; i++) { sekitext[i] = $.grep(sekiArray[i], function (elem, index) { return (elem[6] == e); }); } var time = []; $.each(sekitext,function(index, value) { time.push([moment((value[0][8]).slice(4),"YYYYMMDDHHmm").format('H:00'),moment((value[0][8]).slice(4),"YYYYMMDDHHmm").format('D日')]); }); return time; } function modal(){ $('.modal').modal('show'); setTimeout(function () { $('.modal').modal('hide'); }, 3000); } function homeFunc() { $("ul.switcher li.live").removeClass("d-none"); $(".hanrei").removeClass("d-none"); clearInterval(teleCon.timer); map.invalidateSize(); }