UNPKG

geoportal-extensions-openlayers

Version:

![GitHub package.json version](https://img.shields.io/github/package-json/v/IGNF/geoportal-extensions?filename=build%2Fscripts%2Frelease%2Fpackage-openlayers.json)

92 lines (79 loc) 3.16 kB
// import CSS import "../CSS/Controls/ToolBoxMeasure/GPtoolBoxMeasureOpenLayers.css"; // import local import Logger from "../../Common/Utils/LoggerByDefault"; import Utils from "../../Common/Utils"; import ID from "../../Common/Utils/SelectorID"; // DOM import MeasureToolBoxDOM from "../../Common/Controls/MeasureToolBoxDOM"; var logger = Logger.getLogger("toolbox"); /** * @type {ol.control.MeasureToolBox} * MeasureToolBox - Boite à outils (ToolBox) pour les outils de mesures. * - distance * - aire * - azimut */ var MeasureToolBox = { /** * liste des uid/map (pour chaque toolbox) * { map : uid } * Ex. { "map1" : 465456456486845 } */ _toolbox : {}, /** * Ajout d'un controle dans la ToolBox. * Creation de la toolbox si besoin... * * @param {ol.Map} map - map * @param {ol.control.Control} ctrl - objet à ajouter */ add : function (map, ctrl) { logger.trace("ToolBox.add()", ctrl); if (!map) { logger.trace("map doesn't exist !?"); return; } // contexte d'execution var context = typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : null; if (context) { // Pour info // l'objet ToolBox devrait être partagé avec les outils de mesures..., // mais, ce n'est pas le cas pour le mode modules cad un module par extension. // c'est pourquoi, on l'enregistre dans le contexte, qui lui est partagé (ex. window) this._toolbox = context.gpShareMeasureToolBox || {}; } var mapContainer = map.getTargetElement(); var mapDocument = mapContainer.ownerDocument; var mapId = mapContainer.id; if (!this._toolbox || Object.keys(this._toolbox).length === 0) { this._toolbox = {}; this._toolbox[mapId] = ID.generate(); } else { if (!this._toolbox[mapId]) { this._toolbox[mapId] = ID.generate(); } } var uid = this._toolbox[mapId]; if (!mapDocument.getElementById(this.getToolBoxID(uid))) { logger.trace("create toolbox !"); // creation et ajout de la toolbox sur la map var toolboxContainer = this._createToolBoxContainerElement(uid); toolboxContainer.style.pointerEvents = "auto"; // ajout pour ol6 var overlaysContainer = mapContainer.getElementsByClassName("ol-overlaycontainer-stopevent"); overlaysContainer[0].appendChild(toolboxContainer); // mapContainer.appendChild(toolboxContainer); } // ajout du widget dans la toolbox var widgetContainer = mapDocument.getElementById(this.getWidgetID(uid)); ctrl.setTarget(widgetContainer); if (context) { // Pour info // on partage (enregistre) l'objet ToolBox dans le contexte d'execution ! context.gpShareMeasureToolBox = this._toolbox; } logger.trace("add control to toolbox !"); } }; Utils.assign(MeasureToolBox, MeasureToolBoxDOM); export default MeasureToolBox;