// 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();
}