qwc2
Version:
QGIS Web Client
10 lines • 1.71 kB
JavaScript
/**
* Copyright 2015 GeoSolutions Sas
* Copyright 2016-2024 Sourcepole AG
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/import ol from"openlayers";var _removeIds=function removeIds(items){if(items.length!==0){for(var i=0;i<items.length;i++){var item=items.item(i);item.removeAttribute("data-reactid");_removeIds(item.children||[])}}};var cloneOriginalOverlay=function cloneOriginalOverlay(original,options){var cloned=original.cloneNode(true);cloned.id=options.id+"-overlay";cloned.className=(options.className||original.className)+"-overlay";cloned.removeAttribute("data-reactid");// remove reactjs generated ids from cloned object
_removeIds(cloned.children||[]);// handle optional close button on overlay
var closeClassName=options.closeClass||"close";if(options.onClose&&cloned.getElementsByClassName(closeClassName).length===1){var close=cloned.getElementsByClassName(closeClassName)[0];var onClose=function onClose(e){options.onClose(e.target.getAttribute("data-overlayid"))};close.addEventListener("click",onClose)}return cloned};export default{create:function create(options,map){var original=document.getElementById(options.id);var cloned=cloneOriginalOverlay(original,options);document.body.appendChild(cloned);var overlay=new ol.Overlay({id:options.id,element:cloned,autoPan:options.autoPan||false,positioning:options.positioning||"top-left",offset:options.offset||[0,0],autoPanAnimation:{duration:options.autoPanAnimation||250},position:[options.position.x,options.position.y]});map.addOverlay(overlay);return{detached:true,remove:function remove(){map.removeOverlay(overlay)}}}};