const MONTHS = ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"];
const MONTHS_SHORT = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des"];
var map;
var mapview;
var cur_active_layer;
var layer_pem;
var layer_pea;
var layer_titikstationmatahari;
var source_pem;
var source_pea;
var source_titikstationmatahari;
var legend_pem = [
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,0", "0 - 1 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,1", "1 - 2 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,2", "2 - 3 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,3", "3 - 4 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,4", "4 - 5 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,5", "5 - 6 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,6", "6 - 7 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,7", "7 - 8 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,8", "8 - 9 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,9", "9 - 10 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,10", "10 - 11 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,11", "11 - 12 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,12", "12 - 13 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pem,13", "13 - 14 kwh/m2"]
];
var legend_pea = [
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,0", "0 - 1 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,1", "1 - 2 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,2", "2 - 3 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,3", "3 - 4 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,4", "4 - 5 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,5", "5 - 6 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,6", "6 - 7 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,7", "7 - 8 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,8", "8 - 9 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,9", "9 - 10 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,10", "10 - 11 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,11", "11 - 12 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,12", "12 - 13 kwh/m2"],
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=pea,13", "13 - 14 kwh/m2"]
];
var legend_titikstationmatahari = [
["", "https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg&mode=legendicon&icon=titikstationmatahari,0", "Titik Stasiun Pemantau Energi Matahari"],
];
var infodetails;
$(function(){
infodetails = new ol.Overlay({
element: document.getElementById('infodetails'),
autoPan: true,
autoPanAnimation: {
duration: 250,
},
});
mapview = new ol.View({
center: ol.proj.fromLonLat([118.1661992, -2.2070457]),
zoom: 5,
constrainResolution: true
});
//init ol
map = new ol.Map({
target: 'mapcontainer',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: mapview,
overlays: [infodetails],
interactions: ol.interaction.defaults({mouseWheelZoom:false})
});
source_pem = new ol.source.ImageWMS({url: 'https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg'});
layer_pem = new ol.layer.Image({source:source_pem, visible:false, opacity:0.6});
map.addLayer(layer_pem);
source_pea = new ol.source.ImageWMS({url: 'https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg'});
layer_pea = new ol.layer.Image({source:source_pea, visible:false, opacity:0.6});
map.addLayer(layer_pea);
source_titikstationmatahari = new ol.source.ImageWMS({url: 'https://cews.bmkg.go.id/cgi-bin/mapserv?map=bmkg'});
layer_titikstationmatahari = new ol.layer.Image({source:source_titikstationmatahari, visible:false, opacity:0.6});
map.addLayer(layer_titikstationmatahari);
//init layer switcher
$(".layerswitcher .toggle").click(function(){
if($(this).parent().attr("state")=="opened"){
$(this).siblings(".content").hide();
$(this).children("button").children("i").removeClass("fa-times");
$(this).children("button").children("i").addClass("fa-layer-group");
$(this).parent().attr("state","closed");
}else{
$(this).siblings(".content").show();
$(this).children("button").children("i").removeClass("fa-layer-group");
$(this).children("button").children("i").addClass("fa-times");
$(this).parent().attr("state","opened");
}
});
$(".layerswitcher .content input[name^='optlayer']").change(function(){
var date1 = $(this).siblings("select").children("option:selected").attr("date1") || $(this).attr("date1") || "";
var date2 = $(this).siblings("select").children("option:selected").attr("date2") || $(this).attr("date2") || "";
var num1 = $(this).siblings("select").children("option:selected").attr("num1") || $(this).attr("num1") || "";
var num2 = $(this).siblings("select").children("option:selected").attr("num2") || $(this).attr("num2") || "";
switchLayer({
layername:$(this).val(),
date1:date1,
date2:date2,
num1:num1,
num2:num2
});
});
$(".layerswitcher .content select").change(function(){
if($(this).siblings("input").is(":checked")){//hanya jika layer aktif
var date1 = $(this).children("option:selected").attr("date1");
var date2 = $(this).children("option:selected").attr("date2");
var num1 = $(this).children("option:selected").attr("num1");
var num2 = $(this).children("option:selected").attr("num2");
switchLayer({
layername:$(this).siblings("input").val(),
date1:date1,
date2:date2,
num1:num1,
num2:num2
});
}
});
//init default layer
$(".layerswitcher .content input[value='hth']").prop('checked', true);
switchLayer({
layername:"pem",
date1:"2018-09-01"
});
//init info details
map.on('singleclick', function (e) {
var viewResolution = mapview.getResolution();
switch(cur_active_layer){
case "pem":
var url = source_pem.getFeatureInfoUrl(e.coordinate, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html'});
break;
case "pea":
var url = source_pea.getFeatureInfoUrl(e.coordinate, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html'});
break;
case "titikstationmatahari":
var url = source_titikstationmatahari.getFeatureInfoUrl(e.coordinate, viewResolution, 'EPSG:3857', {'INFO_FORMAT': 'text/html'});
break;
}
if (url) {
fetch(url).then(function (response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response.text();
}).then(function (html) {
if(html.trim()==""){
infodetails.setPosition(undefined);
}else{
$("#infodetails-content").html(html);
infodetails.setPosition(e.coordinate);
}
}).catch(function(e){
infodetails.setPosition(undefined);
console.log("no data");
});
}
});
//print out
$("#mapprint").click(function(){
$("#mdlprintout").modal("show");
});
});
function switchLayer(obj){
var layername = obj.layername || "";
var date1 = obj.date1 || "";
var date2 = obj.date2 || "";
var num1 = obj.num1 || "";
var num2 = obj.num2 || "";
cur_active_layer = layername;
var omonth1_m2 = MONTHS[(parseInt(date1.substring(5,7))-3) < 0?(parseInt(date1.substring(5,7))-3+12):(parseInt(date1.substring(5,7))-3)];
var omonth1_m1 = MONTHS[(parseInt(date1.substring(5,7))-2) < 0?(parseInt(date1.substring(5,7))-2+12):(parseInt(date1.substring(5,7))-2)];
var omonth1 = MONTHS[parseInt(date1.substring(5,7))-1];
var omonth1_p1 = MONTHS[(parseInt(date1.substring(5,7))) > 11?(parseInt(date1.substring(5,7))-12):(parseInt(date1.substring(5,7)))];
var omonth1_p2 = MONTHS[(parseInt(date1.substring(5,7))+1) > 11?(parseInt(date1.substring(5,7))+1-12):(parseInt(date1.substring(5,7))+1)];
var omonth1_short = MONTHS_SHORT[parseInt(date1.substring(5,7))-1];
var oyear1 = date1.substring(0,4);
var omonth2_m2 = MONTHS[(parseInt(date2.substring(5,7))-3) < 0?(parseInt(date2.substring(5,7))-3+12):(parseInt(date2.substring(5,7))-3)];
var omonth2_m1 = MONTHS[(parseInt(date2.substring(5,7))-2) < 0?(parseInt(date2.substring(5,7))-2+12):(parseInt(date2.substring(5,7))-2)];
var omonth2 = MONTHS[parseInt(date2.substring(5,7))-1];
var omonth2_p1 = MONTHS[(parseInt(date2.substring(5,7))) > 11?(parseInt(date2.substring(5,7))-12):(parseInt(date2.substring(5,7)))];
var omonth2_p2 = MONTHS[(parseInt(date2.substring(5,7))+1) > 11?(parseInt(date2.substring(5,7))+1-12):(parseInt(date2.substring(5,7))+1)];
var oyear2 = date2.substring(0,4);
layer_pem.setVisible(false);
layer_titikstationmatahari.setVisible(false);
layer_pea.setVisible(false);
$("#mapprint").hide();
$("#maptitle").show();
switch(layername){
case "pem":
layer_pem.getSource().updateParams({
'LAYERS': 'pem,prov,kabkot',
'date': date1
});
layer_pem.setVisible(true);
$("#maptitle").html("PETA SEBARAN POTENSI ENERGI MATAHARI
PERIODE 5 TAHUN");
break;
case "pea":
layer_pea.getSource().updateParams({
'LAYERS': 'pea,prov,kabkot',
'date': date1
});
layer_pea.setVisible(true);
$("#maptitle").html("PETA SEBARAN POTENSI ENERGI ANGIN
PERIODE 5 TAHUN");
break;
case "titikstationmatahari":
layer_titikstationmatahari.getSource().updateParams({
'LAYERS': 'titikstationmatahari,prov,kabkot'
});
layer_titikstationmatahari.setVisible(true);
$("#maptitle").html("PETA SEBARAN TITIK STASIUN PEMANTAU
ENERGI MATAHARI");
break;
}
setLegend(layername, date1, date2, num1);
infodetails.setPosition(undefined);
}
function setLegend(layername, date1, date2, num1){
var legendsetting;
switch(layername){
case "pem":
legendsetting = legend_pem;
$("#mapannotation").html("Disclaimer: Data dari tahun 2011-2019");
$("#mapannotation").show();
break;
case "pea":
legendsetting = legend_pea;
$("#mapannotation").html("Disclaimer: Data dari tahun 2011-2019");
$("#mapannotation").show();
break;
case "titikstationmatahari":
legendsetting = legend_titikstationmatahari;
$("#mapannotation").hide();
break;
}
var html="
"+legendsetting[i][2]+" | "; } html+="