Home » today » World » Mapy.cz will display the flood situation on the website, they want to lighten the burden on the ČHMÚ

Mapy.cz will display the flood situation on the website, they want to lighten the burden on the ČHMÚ

Lupa.cz
 »

Mapy.cz will display the flood situation on the website, they want to lighten the burden on the ČHMÚ

Author: Martin Drtina, screenshot

With the aim of reducing the burden on the resources of the Czech Hydrometeorological Institute, the Seznam development team created a flood map, which is integrated as a new layer into Mapy.cz web services. It thus mirrors the official data on the flood situation at the measuring points. The map distinguishes individual flood levels in all monitored catchments by color.

The application was created in less than 12 hours, and Seznam.cz diverts part of the search traffic to it, in order to maintain the full functionality of the ČHMI Notification and Flood Service for components of the integrated rescue system.

The flood map works only in the web version of the Mapy.cz service. Mobile versions do not display this news.

Did you find an error in the article?

Editor of the Lupa.cz server with a focus on telecommunications, media, IT and law. Formerly editor-in-chief of Legal Counsel and spokesperson of the Czech Telecommunications Authority.

`;
if (youtubeIframe !== null && iinfoVastUrls.length > 0) {
const re = /embed/(.*)?/;
const youtubeId = youtubeIframe.src.match(re)[1];
const youtubeImg = ‘ + youtubeId + ‘/hqdefault.jpg’;
let thumbWrap = `

`;
thumbWrap += “
thumbWrap += “;
youtubeIframe.after(document.createRange().createContextualFragment(thumbWrap));
youtubeIframe.style.display = ‘none’;
const youtubeThumb = document.getElementById(‘ytPrerollThumb’)
let prerollAdInitialized = false;
document.addEventListener(‘DOMContentLoaded’, handleInitScroll, false);
window.addEventListener(‘scroll’, handleInitScroll, false);
function handleInitScroll() {
if (prerollAdInitialized === false) {
const containerOffset = document.getElementById(‘ytPrerollThumb’).getBoundingClientRect();
const windowHeight = window.innerHeight;
if (containerOffset.top 0.0) {
prerollAdInitialized = true;
console.log(‘Preroll: INIT’);
setTimeout(() => {
youtubeThumb.remove();
playPrerollAd();
}, 2000);
document.removeEventListener(‘DOMContentLoaded’, handleInitScroll, false);
window.removeEventListener(‘scroll’, handleInitScroll, false);
}
}
}
}
let adsManager;
let adsLoader;
let adDisplayContainer;
let iinfoPrerollPosition;
let iinfoVastUrlIndex = 0;
let iinfoVastUrlIndexMuted = 0;
let prerollCurrent = 0;
let adVolume = 0;
let prerollWidth = 480;
let prerollHeight = 320;
let prerollDocument;
let videoContent;
let prerollLastError = 303;
let prerollContainer;
let prerollPaused = false;
function playPrerollAd() {
youtubeIframe.after(document.createRange().createContextualFragment(videoEl));
iinfoPrerollPosition = document.getElementById(‘iinfoPrerollPosition’);
document.getElementById(‘preroll-iframe’).srcdoc=””;
document.getElementById(‘preroll-iframe’).onload = function () {
setupIframe();
}
prerollContainer = document.getElementsByClassName(‘preroll-container-iframe’)[0];
}
function setupIframe() {
prerollDocument = document.getElementById(‘preroll-iframe’).contentWindow.document;
let el = prerollDocument.createElement(‘style’);
prerollDocument.head.appendChild(el);
el.innerText = “#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:’Helvetica Neue’,Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}”;
videoContent = prerollDocument.getElementById(‘contentElement’);
videoContent.style.display = ‘none’;
videoContent.volume = 1;
videoContent.muted = false;
const playPromise = videoContent.play();
if (playPromise !== undefined) {
playPromise.then(function () {
console.log(‘PREROLL sound allowed’);
// setUpIMA(true);
videoContent.volume = 0;
videoContent.muted = true;
setUpIMA(false);
}).catch(function () {
console.log(‘PREROLL sound forbidden’);
videoContent.volume = 0;
videoContent.muted = true;
setUpIMA(false);
});
}
}
function setupDimensions() {
prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480);
prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320);
}
function setUpIMA(sound) {
google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true);
google.ima.settings.setLocale(‘cs’);
google.ima.settings.setNumRedirects(10);
// Create the ad display container.
createAdDisplayContainer();
// Create ads loader.
adsLoader = new google.ima.AdsLoader(adDisplayContainer);
// Listen and respond to ads loaded and error events.
adsLoader.addEventListener(
google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,
onAdsManagerLoaded, false);
adsLoader.addEventListener(
google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false);
// An event listener to tell the SDK that our content video
// is completed so the SDK can play any post-roll ads.
const contentEndedListener = function () {
adsLoader.contentComplete();
};
videoContent.onended = contentEndedListener;
// Request video ads.
const adsRequest = new google.ima.AdsRequest();
/*adsRequest.adTagUrl=” +
‘iu=/21775744923/external/single_preroll_skippable&sz=640×480&’ +
‘ciu_szs=300×250%2C728x90&gdfp_req=1&’ +
‘output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=”;*/
adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex];
if (sound) {
adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex];
console.log(“Preroll advert: ‘ + iinfoVastUrls[iinfoVastUrlIndex]); prerollCurrent = 0; videoContent.muted = false; videoContent.volume = 1; } else { adsRequest.adTagUrl = iinfoVastUrlsMuted[iinfoVastUrlIndexMuted];
console.log(‘Preroll advert: ‘ + iinfoVastUrlsMuted[iinfoVastUrlIndexMuted]);
prerollCurrent = 1;
videoContent.muted = true;
videoContent.volume = 0;
}
// Specify the linear and nonlinear slot sizes. This helps the SDK to
// select the correct creative if multiple are returned.
// adsRequest.linearAdSlotWidth = prerollWidth;
// adsRequest.linearAdSlotHeight = prerollHeight;
adsRequest.nonLinearAdSlotWidth = 0;
adsRequest.nonLinearAdSlotHeight = 0;
adsLoader.requestAds(adsRequest);
}
function createAdDisplayContainer() {
// We assume the adContainer is the DOM id of the element that will house
// the ads.
prerollDocument.getElementById(‘videoContent’).style.display = ‘none’;
adDisplayContainer = new google.ima.AdDisplayContainer(
prerollDocument.getElementById(‘adContainer’), videoContent);
}
function unmutePrerollAdvert() {
adVolume = !adVolume;
if (adVolume) {
adsManager.setVolume(0.3);
prerollDocument.getElementById(‘adMuteBtn’).innerHTML = ”;
} else {
adsManager.setVolume(0);
prerollDocument.getElementById(‘adMuteBtn’).innerHTML = ”;
}
}
function onAdsManagerLoaded(adsManagerLoadedEvent) {
// Get the ads manager.
const adsRenderingSettings = new google.ima.AdsRenderingSettings();
adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true;
adsRenderingSettings.loadVideoTimeout = 12000;
// videoContent should be set to the content video element.
adsManager =
adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings);
// Add listeners to the required events.
adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError);
adsManager.addEventListener(
google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested);
adsManager.addEventListener(
google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,
onContentResumeRequested);
adsManager.addEventListener(
google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent);
// Listen to any additional events, if necessary.
adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent);
adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent);
adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent);
playAds();
}
function playAds() {
// Initialize the container. Must be done through a user action on mobile
// devices.
videoContent.load();
adDisplayContainer.initialize();
// setupDimensions();
try {
// Initialize the ads manager. Ad rules playlist will start at this time.
adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL);
// Call play to start showing the ad. Single video and overlay ads will
// start at this time; the call will be ignored for ad rules.
adsManager.start();
// window.addEventListener(‘resize’, function (event) {
// if (adsManager) {
// setupDimensions();
// adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL);
// }
// });
} catch (adError) {
// An error may be thrown if there was a problem with the VAST response.
// videoContent.play();
}
}
function onAdEvent(adEvent) {
const ad = adEvent.getAd();
console.log(‘Preroll event: ‘ + adEvent.type);
switch (adEvent.type) {
case google.ima.AdEvent.Type.LOADED:
if (!ad.isLinear()) {
videoContent.play();
}
prerollDocument.getElementById(‘adContainer’).style.width=”100%”;
prerollDocument.getElementById(‘adContainer’).style.maxWidth=”640px”;
prerollDocument.getElementById(‘adContainer’).style.height=”360px”;
break;
case google.ima.AdEvent.Type.STARTED:
window.addEventListener(‘scroll’, onActiveView);
if (ad.isLinear()) {
intervalTimer = setInterval(
function () {
// Example: const remainingTime = adsManager.getRemainingTime();
// adsManager.pause();
},
300); // every 300ms
}
prerollDocument.getElementById(‘adMuteBtn’).style.display = ‘block’;
break;
case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:
if (ad.isLinear()) {
clearInterval(intervalTimer);
}
if (prerollLastError === 303) {
playYtVideo();
}
break;
case google.ima.AdEvent.Type.COMPLETE:
if (ad.isLinear()) {
clearInterval(intervalTimer);
}
playYtVideo();
break;
}
}
function onAdError(adErrorEvent) {
console.log(adErrorEvent.getError());
prerollLastError = adErrorEvent.getError().getErrorCode();
if (!loadNext()) {
playYtVideo();
}
}
function loadNext() {
if (prerollCurrent === 0) {
iinfoVastUrlIndex++;
if (iinfoVastUrlIndex 0.0) {
if (prerollPaused) {
adsManager.resume();
prerollPaused = false;
}
return true;
} else {
if (!prerollPaused) {
adsManager.pause();
prerollPaused = true;
}
}
}
return false;
}
function playYtVideo() {
iinfoPrerollPosition.remove();
youtubeIframe.style.display = ‘block’;
youtubeIframe.src += ‘&autoplay=1&mute=1’;
}
}

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.