diff --git a/layers/dot-cams/index.js b/layers/dot-cams/index.js index 166d5b5..1d5ee46 100644 --- a/layers/dot-cams/index.js +++ b/layers/dot-cams/index.js @@ -62,6 +62,7 @@ for (let [state, url] of Object.entries(allStates)) { var hls = new Hls(); hls.loadSource(view.src); hls.attachMedia(video); + vectorLayer.destroyPopupCallback = () => hls.destroy(); } // iDevice support, untested (only works in Safari; required for iPhones) else if (video.canPlayType('application/vnd.apple.mpegurl')) { diff --git a/main.js b/main.js index 24f87ab..73fc3f4 100644 --- a/main.js +++ b/main.js @@ -23,12 +23,6 @@ const popupOverlay = new Overlay({ }, }); -closer.onclick = function () { - popupOverlay.setPosition(undefined); - closer.blur(); - return false; -}; - const contextMenu = new ContextMenu({ width: 170, defaultItems: false, @@ -147,6 +141,15 @@ map.on('click', function (evt) { } popupOverlay.setPosition(evt.coordinate); + + closer.onclick = function (){ + popupOverlay.setPosition(undefined); + if (layer.hasOwnProperty('destroyPopupCallback')) { + layer.destroyPopupCallback(feature); + } + closer.blur(); + return false; + }; }); new ResizeObserver(() => map.updateSize()).observe(document.getElementById("map"));