@ignf-geoportal/sdk-3d
Version:
French Geoportal SDK based on OpenLayers (2D) and iTowns (3D) libraries
1,169 lines (1,012 loc) • 12.4 MB
JavaScript
/*!
* @brief French Geoportal SDK based on OpenLayers (2D) and iTowns (3D) libraries
*
* This software is released under the licence CeCILL-B (Free BSD compatible)
* @see http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt
* @see http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.txt
* @see http://www.cecill.info/
*
* @copyright copyright (c) IGN
* @license CeCILL-B
* @author IGN
* @version 3.5.6
* @date 12/06/2025
* @build
* date : 6/12/2025, 9:14:14 AM
* branch : tags/3.5.6
* commit : 8e7596e
* dirty : true
*/
/*!
* geoportal-extensions-openlayers. See https://github.com/IGNF/geoportal-extensions
* @license https://github.com/IGNF/geoportal-extensions/blob/master/LICENCE.md
* @version 3.4.6
*/
/*!
* geoportal-extensions-itowns. See https://github.com/IGNF/geoportal-extensions
* @license https://github.com/IGNF/geoportal-extensions/blob/master/LICENCE.md
* @version 2.5.1
*/
/*!
* iTowns. See http://www.itowns-project.org/
* @license https://github.com/iTowns/itowns/blob/master/LICENCE.md
* @version 2.38.2
*/
/*!
* @overview ol-mapbox-style - Use Mapbox Style objects with OpenLayers
* @copyright Copyright (c) 2016 openlayers
* @license BSD 2-Clause "Simplified" License
* See https://raw.githubusercontent.com/openlayers/ol-mapbox-style/master/LICENSE
* @version 6.7.0
*/
/*!
* @overview OpenLayers. See http://openlayers.org/
* @copyright Copyright 2005-present, OpenLayers Contributors All rights reserved.
* @license BSD 2-Clause "Simplified" License
* See https://raw.githubusercontent.com/openlayers/openlayers/master/LICENCE.md
* @version 6.9.0
*/
/*!
* Sortable -- JavaScript library for reorderable drag-and-drop lists on modern
* browsers and touch devices. No jQuery required. Supports Meteor, AngularJS,
* React, Polymer, Vue, Knockout and any CSS library, e.g. Bootstrap.
*
* Released under MIT LICENSE
*
* Copyright Lebedev Konstantin <ibnRubaXa@gmail.com>
* https://github.com/SortableJS/Sortable
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* @version v1.8.4
*/
/*!
* @overview es6-promise - a tiny implementation of Promises/A+.
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
* @license Licensed under MIT license
* See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
* @version v4.2.4
*/
/*!
* @overview Proj4js - Javascript reprojection library.
*
* @authors
* - Mike Adair madairATdmsolutions.ca
* - Richard Greenwood richATgreenwoodmap.com
* - Didier Richard didier.richardATign.fr
* - Stephen Irons stephen.ironsATclear.net.nz
* - Olivier Terral oterralATgmail.com
* - Calvin Metcalf cmetcalfATappgeo.com
*
* @copyright Copyright (c) 2014, Mike Adair, Richard Greenwood, Didier Richard, Stephen Irons, Olivier Terral and Calvin Metcalf
* @license Licensed under MIT license
* See https://raw.githubusercontent.com/proj4js/proj4js/master/LICENSE.md
* @version 2.7.5
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("node-fetch"));
else if(typeof define === 'function' && define.amd)
define("Gp", ["require"], factory);
else if(typeof exports === 'object')
exports["Gp"] = factory(require("node-fetch"));
else
root["Gp"] = factory(root[undefined]);
})(window, function(__WEBPACK_EXTERNAL_MODULE__253__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ };
/******/
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ 0: 0
/******/ };
/******/
/******/
/******/
/******/ // script path function
/******/ function jsonpScriptSrc(chunkId) {
/******/ return __webpack_require__.p + "chunk-" + chunkId + "-src.js"
/******/ }
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // This file contains only the entry chunk.
/******/ // The chunk loading function for additional chunks
/******/ __webpack_require__.e = function requireEnsure(chunkId) {
/******/ var promises = [];
/******/
/******/
/******/ // JSONP chunk loading for javascript
/******/
/******/ var installedChunkData = installedChunks[chunkId];
/******/ if(installedChunkData !== 0) { // 0 means "already installed".
/******/
/******/ // a Promise means "currently loading".
/******/ if(installedChunkData) {
/******/ promises.push(installedChunkData[2]);
/******/ } else {
/******/ // setup Promise in chunk cache
/******/ var promise = new Promise(function(resolve, reject) {
/******/ installedChunkData = installedChunks[chunkId] = [resolve, reject];
/******/ });
/******/ promises.push(installedChunkData[2] = promise);
/******/
/******/ // start chunk loading
/******/ var script = document.createElement('script');
/******/ var onScriptComplete;
/******/
/******/ script.charset = 'utf-8';
/******/ script.timeout = 120;
/******/ if (__webpack_require__.nc) {
/******/ script.setAttribute("nonce", __webpack_require__.nc);
/******/ }
/******/ script.src = jsonpScriptSrc(chunkId);
/******/
/******/ // create error before stack unwound to get useful stacktrace later
/******/ var error = new Error();
/******/ onScriptComplete = function (event) {
/******/ // avoid mem leaks in IE.
/******/ script.onerror = script.onload = null;
/******/ clearTimeout(timeout);
/******/ var chunk = installedChunks[chunkId];
/******/ if(chunk !== 0) {
/******/ if(chunk) {
/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type);
/******/ var realSrc = event && event.target && event.target.src;
/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
/******/ error.name = 'ChunkLoadError';
/******/ error.type = errorType;
/******/ error.request = realSrc;
/******/ chunk[1](error);
/******/ }
/******/ installedChunks[chunkId] = undefined;
/******/ }
/******/ };
/******/ var timeout = setTimeout(function(){
/******/ onScriptComplete({ type: 'timeout', target: script });
/******/ }, 120000);
/******/ script.onerror = script.onload = onScriptComplete;
/******/ document.head.appendChild(script);
/******/ }
/******/ }
/******/ return Promise.all(promises);
/******/ };
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // on error function for async loading
/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
/******/
/******/ var jsonpArray = window["webpackJsonpGp"] = window["webpackJsonpGp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(1);
__webpack_require__(2);
__webpack_require__(3);
module.exports = __webpack_require__(4);
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
// extracted by mini-css-extract-plugin
/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sdkVersion", function() { return sdkVersion; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sdkDate", function() { return sdkDate; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Editor", function() { return Editor; });
/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
var _package_json__WEBPACK_IMPORTED_MODULE_0___namespace = /*#__PURE__*/__webpack_require__.t(5, 1);
/* harmony import */ var _Utils_LoggerByDefault__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6);
/* harmony import */ var _Utils_MapLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Map", function() { return _Utils_MapLoader__WEBPACK_IMPORTED_MODULE_2__["MapLoader"]; });
/* harmony import */ var _OpenLayers_OlMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
/* harmony import */ var _Itowns_ItMap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(472);
/* harmony import */ var _Itowns_CSS_ItMap_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(764);
/* harmony import */ var _Itowns_CSS_ItMap_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_Itowns_CSS_ItMap_css__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _OpenLayers_CSS_OlMap_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(765);
/* harmony import */ var _OpenLayers_CSS_OlMap_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_OpenLayers_CSS_OlMap_css__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _Utils_dist_openlayers_index__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(766);
/* harmony import */ var _Utils_dist_openlayers_index__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_Utils_dist_openlayers_index__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(34);
/* harmony import */ var itowns__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(509);
/* harmony import */ var itowns__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(itowns__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var geoportal_extensions_itowns__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(475);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Services", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["Services"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Error", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["Error"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Helper", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["Helper"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Protocols", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["Protocols"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Logger", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["Logger"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "servicesDate", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["servicesDate"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "servicesVersion", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["servicesVersion"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LayerUtils", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["LayerUtils"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProxyUtils", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["ProxyUtils"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColorUtils", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["ColorUtils"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MathUtils", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["MathUtils"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "olUtils", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["olUtils"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "olExtVersion", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["olExtVersion"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "olExtDate", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["olExtDate"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "olExtended", function() { return geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["olExtended"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "itownsExtVersion", function() { return geoportal_extensions_itowns__WEBPACK_IMPORTED_MODULE_10__["itownsExtVersion"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "itownsExtDate", function() { return geoportal_extensions_itowns__WEBPACK_IMPORTED_MODULE_10__["itownsExtDate"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "itownsExtended", function() { return geoportal_extensions_itowns__WEBPACK_IMPORTED_MODULE_10__["itownsExtended"]; });
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
/**
* Global variable Gp.
*
* The following variables are aslo global :
* - proj4 (exposed by geoportal extensions dependance),
* - ol,
* - itowns,
* - eventbus (exposed by geoportal extensions dependance)
*
* @module Gp
* @alias Gp
* @desc
*
* This is the global variable that is exposed in the browser environment.
* Content is composed of constructor, functions and properties...
*
* > Config: (...)
*
* > ColorUtils: (...)
* > LayerUtils: (...)
* > MathUtils: (...)
* > ProxyUtils: (...)
*
* > olExtended: (...)
* > olUtils: (...)
* > olExtDate: "YYYY-MM-DD"
* > olExtVersion: "X.X.X"
*
* > Error: (...)
* > Helper: (...)
* > Protocols: (...)
* > Services: (...)
* > servicesDate: "YYYY-MM-DD"
* > servicesVersion: "X.X.X"
*
* > itownsExtended: (...)
* > itownsExtVersion: "X.X.X"
* > itownsExtDate: "YYYY-MM-DD"
*
* > Map: (...)
* > sdkVersion: "X.X.X"
* > sdkDate: "YYYY-MM-DD"
*/
// CSS
// import openlayers
// import des extensions openlayers
// import itowns
// import des extensions itowns
var logger = _Utils_LoggerByDefault__WEBPACK_IMPORTED_MODULE_1__["default"].getLogger("SDK3D");
logger.log("Chargement SDK 3D...");
function deepCopy(source, target) {
// FIXME Implementing Tail Call Elimination
function tce(source, target) {
for (var prop in source) {
if (Object.prototype.hasOwnProperty.call(source, prop)) {
if (!Object.prototype.hasOwnProperty.call(target, prop)) {
target[prop] = source[prop];
} else if (_typeof(source[prop]) === "object") {
tce(source[prop], target[prop]);
}
}
}
}
return tce(source, target);
}
// ol extended + Services + Outils
// itowns extended
_Utils_MapLoader__WEBPACK_IMPORTED_MODULE_2__["MapLoader"].__class2d = _OpenLayers_OlMap__WEBPACK_IMPORTED_MODULE_3__["OlMap"];
_Utils_MapLoader__WEBPACK_IMPORTED_MODULE_2__["MapLoader"].__class3d = _Itowns_ItMap__WEBPACK_IMPORTED_MODULE_4__["ItMap"];
/** Geoportal Map loader */
/** Version */
var sdkVersion = _package_json__WEBPACK_IMPORTED_MODULE_0__.SDK3DVersion;
/** Publication date */
var sdkDate = _package_json__WEBPACK_IMPORTED_MODULE_0__.date;
// Editeur MapBox
var Editor = geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["olExtended"].style.Editor;
// fusion des fonctionnalités openlayers
// Gp.olExtended -> ol
deepCopy(geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["olExtended"], _Utils_dist_openlayers_index__WEBPACK_IMPORTED_MODULE_7___default.a);
// ol -> Gp.olExtended
deepCopy(_Utils_dist_openlayers_index__WEBPACK_IMPORTED_MODULE_7___default.a, geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_8__["olExtended"]);
// "ol" is exposed into window (for a build bundle) with webpack.
if (window && window.ol) {
window.ol = _Utils_dist_openlayers_index__WEBPACK_IMPORTED_MODULE_7___default.a;
}
// fusion des fonctionnalités itowns
// Gp.itownsExtended -> itowns
deepCopy(geoportal_extensions_itowns__WEBPACK_IMPORTED_MODULE_10__["itownsExtended"], itowns__WEBPACK_IMPORTED_MODULE_9__);
// itowns -> Gp.itownsExtended
deepCopy(itowns__WEBPACK_IMPORTED_MODULE_9__, geoportal_extensions_itowns__WEBPACK_IMPORTED_MODULE_10__["itownsExtended"]);
// "itowns" is exposed into window (for a build bundle) with webpack.
if (window && window.itowns) {
window.itowns = itowns__WEBPACK_IMPORTED_MODULE_9__;
}
/***/ }),
/* 5 */
/***/ (function(module) {
module.exports = JSON.parse("{\"name\":\"geoportal-sdk\",\"version\":\"3.5.6\",\"date\":\"12/06/2025\",\"SDK2DVersion\":\"3.5.6\",\"SDK3DVersion\":\"3.5.6\",\"description\":\"French Geoportal SDK based on OpenLayers (2D) and iTowns (3D) libraries\",\"main\":\"dist/2d/GpSDK2D-src.js, dist/3d/GpSDK3d-src.js\",\"module\":\"src/SDK2D.js, src/SDK3D.js\",\"scripts\":{\"setup\":\"npm install\",\"clean\":\"echo \\\"Warning: target not yet implemented!\\\" && exit 0\",\"check\":\"eslint src/\",\"test:serve\":\"webpack-dev-server --config webpack.test.serve.js\",\"doc:serve\":\"webpack-dev-server --config webpack.config.3d --content-base jsdoc/ --port 9001 --open\",\"sample:3d:serve\":\"webpack-dev-server --config webpack.config.3d --mode=development --https --open-page samples/index-3d-map.html --content-base . --output-public-path '/dist/3d/' --port 9001 --open\",\"sample:2d:serve\":\"webpack-dev-server --config webpack.config.2d --mode=development --https --open-page samples/index-2d-map.html --content-base . --output-public-path '/dist/2d/' --port 9001 --open\",\"stat:2d\":\"npm run build:2d:src -- --profile --json > map-2d.json\",\"stat:3d\":\"npm run build:3d:src -- --profile --json > map-3d.json\",\"clean:chunk\":\"rm dist/*/chunk*\",\"build\":\"npm-run-all --print-label --print-name build:*:*\",\"build:dev\":\"npm-run-all --print-label --print-name build:*:dev\",\"build:prod\":\"npm-run-all --print-label --print-name build:*:prod\",\"build:src\":\"npm-run-all --print-label --print-name build:*:src\",\"build:3d\":\"npm-run-all --print-label --print-name build:3d:*\",\"build:3d:src\":\"webpack --config webpack.config.3d --mode=none && npm run clean:chunk\",\"build:3d:dev\":\"webpack --config webpack.config.3d --mode=development && npm run clean:chunk\",\"build:3d:prod\":\"webpack --config webpack.config.3d --mode=production && npm run clean:chunk\",\"build:2d\":\"npm-run-all --print-label --print-name build:2d:*\",\"build:2d:src\":\"webpack --config webpack.config.2d --mode=none && npm run clean:chunk\",\"build:2d:dev\":\"webpack --config webpack.config.2d --mode=development && npm run clean:chunk\",\"build:2d:prod\":\"webpack --config webpack.config.2d --mode=production && npm run clean:chunk\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/IGNF/geoportal-sdk.git\"},\"keywords\":[\"openlayers\",\"itowns\",\"geoportail\",\"geoplateforme\",\"webservice\",\"javascript\"],\"author\":\"IGNF\",\"license\":\"CECILL-B\",\"bugs\":{\"url\":\"https://github.com/IGNF/geoportal-sdk/issues\"},\"homepage\":\"https://geoservices.ign.fr/documentation/utilisation_web/sdk.html\",\"dependencies\":{\"whatwg-fetch\":\"3.0.0\"},\"devDependencies\":{\"@babel/core\":\"^7.8.3\",\"@babel/plugin-transform-runtime\":\"^7.8.3\",\"@babel/preset-env\":\"^7.8.3\",\"@mapbox/mapbox-gl-style-spec\":\"13.20.1\",\"babel-loader\":\"^8.0.5\",\"chai\":\"^4.2.0\",\"chalk\":\"^4.0.0\",\"copy-webpack-plugin\":\"^5.1.1\",\"core-js\":\"^3.6.4\",\"css-loader\":\"^3.4.2\",\"eslint\":\"^6.8.0\",\"eslint-config-standard\":\"^14.1.1\",\"eslint-loader\":\"^4.0.0\",\"eslint-plugin-import\":\"^2.17.2\",\"eslint-plugin-node\":\"^11.1.0\",\"eslint-plugin-promise\":\"^4.1.1\",\"eslint-plugin-standard\":\"^4.0.0\",\"exports-loader\":\"^0.7.0\",\"expose-loader\":\"^0.7.5\",\"fs-extra\":\"^9.0.0\",\"geoportal-extensions-itowns\":\"2.5.1\",\"geoportal-extensions-openlayers\":\"3.4.6\",\"handlebars\":\"^4.7.5\",\"handlebars-layouts\":\"^3.1.4\",\"html-webpack-plugin\":\"^4.0.4\",\"itowns\":\"2.38.2\",\"jsdoc-webpack-plugin\":\"^0.3.0\",\"loglevel\":\"1.6.6\",\"mini-css-extract-plugin\":\"^0.9.0\",\"mocha\":\"^7.1.1\",\"mocha-loader\":\"^5.0.0\",\"npm-run-all\":\"^4.1.5\",\"ol\":\"6.9.0\",\"ol-mapbox-style\":\"6.7.0\",\"optimize-css-assets-webpack-plugin\":\"^5.0.1\",\"path\":\"^0.12.7\",\"proj4\":\"2.7.5\",\"replace-bundle-webpack-plugin\":\"^1.0.0\",\"requirejs\":\"^2.3.6\",\"responsive-loader\":\"^1.2.0\",\"shelljs\":\"^0.8.3\",\"speed-measure-webpack-plugin\":\"^1.3.0\",\"string-template\":\"^1.0.0\",\"style-loader\":\"^1.1.3\",\"terser-webpack-plugin\":\"^2.0.0\",\"three\":\"0.137.5\",\"three.meshline\":\"1.2.0\",\"url-loader\":\"^4.0.0\",\"webpack\":\"^4.41.5\",\"webpack-cli\":\"^3.3.10\",\"webpack-dev-server\":\"^3.10.1\",\"webpack-merge\":\"^4.2.1\",\"webpack-node-externals\":\"^1.7.2\"}}");
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var loglevel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
/* harmony import */ var loglevel__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(loglevel__WEBPACK_IMPORTED_MODULE_0__);
var LoggerByDefault = {
/**
*logger statique
* @param {String} [name="default"] - the logger name
*
* @returns {Object} logger
*/
getLogger: function getLogger(name) {
// Substitute global constants configured at compile time
// cf. webpack.config.js
// on masque cette constante afin d'eviter "referenceerror not defined"
"false".match(/true/) ? loglevel__WEBPACK_IMPORTED_MODULE_0__["disableAll"]() : loglevel__WEBPACK_IMPORTED_MODULE_0__["enableAll"]();
var logname = name || "default";
return loglevel__WEBPACK_IMPORTED_MODULE_0__["getLogger"](logname);
}
};
/* harmony default export */ __webpack_exports__["default"] = (LoggerByDefault);
/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
* loglevel - https://github.com/pimterry/loglevel
*
* Copyright (c) 2013 Tim Perry
* Licensed under the MIT license.
*/
(function (root, definition) {
"use strict";
if (true) {
!(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
__WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {}
}(this, function () {
"use strict";
// Slightly dubious tricks to cut down minimized file size
var noop = function() {};
var undefinedType = "undefined";
var isIE = (typeof window !== undefinedType) && (
/Trident\/|MSIE /.test(window.navigator.userAgent)
);
var logMethods = [
"trace",
"debug",
"info",
"warn",
"error"
];
// Cross-browser bind equivalent that works at least back to IE6
function bindMethod(obj, methodName) {
var method = obj[methodName];
if (typeof method.bind === 'function') {
return method.bind(obj);
} else {
try {
return Function.prototype.bind.call(method, obj);
} catch (e) {
// Missing bind shim or IE8 + Modernizr, fallback to wrapping
return function() {
return Function.prototype.apply.apply(method, [obj, arguments]);
};
}
}
}
// Trace() doesn't print the message in IE, so for that case we need to wrap it
function traceForIE() {
if (console.log) {
if (console.log.apply) {
console.log.apply(console, arguments);
} else {
// In old IE, native console methods themselves don't have apply().
Function.prototype.apply.apply(console.log, [console, arguments]);
}
}
if (console.trace) console.trace();
}
// Build the best logging method possible for this env
// Wherever possible we want to bind, not wrap, to preserve stack traces
function realMethod(methodName) {
if (methodName === 'debug') {
methodName = 'log';
}
if (typeof console === undefinedType) {
return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives
} else if (methodName === 'trace' && isIE) {
return traceForIE;
} else if (console[methodName] !== undefined) {
return bindMethod(console, methodName);
} else if (console.log !== undefined) {
return bindMethod(console, 'log');
} else {
return noop;
}
}
// These private functions always need `this` to be set properly
function replaceLoggingMethods(level, loggerName) {
/*jshint validthis:true */
for (var i = 0; i < logMethods.length; i++) {
var methodName = logMethods[i];
this[methodName] = (i < level) ?
noop :
this.methodFactory(methodName, level, loggerName);
}
// Define log.log as an alias for log.debug
this.log = this.debug;
}
// In old IE versions, the console isn't present until you first open it.
// We build realMethod() replacements here that regenerate logging methods
function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {
return function () {
if (typeof console !== undefinedType) {
replaceLoggingMethods.call(this, level, loggerName);
this[methodName].apply(this, arguments);
}
};
}
// By default, we use closely bound real methods wherever possible, and
// otherwise we wait for a console to appear, and then try again.
function defaultMethodFactory(methodName, level, loggerName) {
/*jshint validthis:true */
return realMethod(methodName) ||
enableLoggingWhenConsoleArrives.apply(this, arguments);
}
function Logger(name, defaultLevel, factory) {
var self = this;
var currentLevel;
var storageKey = "loglevel";
if (name) {
storageKey += ":" + name;
}
function persistLevelIfPossible(levelNum) {
var levelName = (logMethods[levelNum] || 'silent').toUpperCase();
if (typeof window === undefinedType) return;
// Use localStorage if available
try {
window.localStorage[storageKey] = levelName;
return;
} catch (ignore) {}
// Use session cookie as fallback
try {
window.document.cookie =
encodeURIComponent(storageKey) + "=" + levelName + ";";
} catch (ignore) {}
}
function getPersistedLevel() {
var storedLevel;
if (typeof window === undefinedType) return;
try {
storedLevel = window.localStorage[storageKey];
} catch (ignore) {}
// Fallback to cookies if local storage gives us nothing
if (typeof storedLevel === undefinedType) {
try {
var cookie = window.document.cookie;
var location = cookie.indexOf(
encodeURIComponent(storageKey) + "=");
if (location !== -1) {
storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];
}
} catch (ignore) {}
}
// If the stored level is not valid, treat it as if nothing was stored.
if (self.levels[storedLevel] === undefined) {
storedLevel = undefined;
}
return storedLevel;
}
/*
*
* Public logger API - see https://github.com/pimterry/loglevel for details
*
*/
self.name = name;
self.levels = { "TRACE": 0, "DEBUG": 1, "INFO": 2, "WARN": 3,
"ERROR": 4, "SILENT": 5};
self.methodFactory = factory || defaultMethodFactory;
self.getLevel = function () {
return currentLevel;
};
self.setLevel = function (level, persist) {
if (typeof level === "string" && self.levels[level.toUpperCase()] !== undefined) {
level = self.levels[level.toUpperCase()];
}
if (typeof level === "number" && level >= 0 && level <= self.levels.SILENT) {
currentLevel = level;
if (persist !== false) { // defaults to true
persistLevelIfPossible(level);
}
replaceLoggingMethods.call(self, level, name);
if (typeof console === undefinedType && level < self.levels.SILENT) {
return "No console available for logging";
}
} else {
throw "log.setLevel() called with invalid level: " + level;
}
};
self.setDefaultLevel = function (level) {
if (!getPersistedLevel()) {
self.setLevel(level, false);
}
};
self.enableAll = function(persist) {
self.setLevel(self.levels.TRACE, persist);
};
self.disableAll = function(persist) {
self.setLevel(self.levels.SILENT, persist);
};
// Initialize with the right level
var initialLevel = getPersistedLevel();
if (initialLevel == null) {
initialLevel = defaultLevel == null ? "WARN" : defaultLevel;
}
self.setLevel(initialLevel, false);
}
/*
*
* Top-level API
*
*/
var defaultLogger = new Logger();
var _loggersByName = {};
defaultLogger.getLogger = function getLogger(name) {
if (typeof name !== "string" || name === "") {
throw new TypeError("You must supply a name when creating a logger.");
}
var logger = _loggersByName[name];
if (!logger) {
logger = _loggersByName[name] = new Logger(
name, defaultLogger.getLevel(), defaultLogger.methodFactory);
}
return logger;
};
// Grab the current global log variable in case of overwrite
var _log = (typeof window !== undefinedType) ? window.log : undefined;
defaultLogger.noConflict = function() {
if (typeof window !== undefinedType &&
window.log === defaultLogger) {
window.log = _log;
}
return defaultLogger;
};
defaultLogger.getLoggers = function getLoggers() {
return _loggersByName;
};
return defaultLogger;
}));
/***/ }),
/* 8 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MapLoader", function() { return MapLoader; });
/* harmony import */ var _LoggerByDefault__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
/**
* Geoportal map loader.
*
* Provide convenience method to create a Map and attach it to a HTML element.
*
* @module
* @alias Gp.Map.load()
*/
var MapLoader = {
/**
* Initialize a Geoportal map in an HTML element.
*
* @method load
* @static
* @param {String | DOMElement} div - The HTML element or its id where the map will be loaded.
* @param {Gp.MapOptions} [mapOptions] - Options for loading the map.
* @example
* var map = Gp.Map.load(
* 'viewer-map',
* {
* apiKey: "YOUR_API_KEY",
* reloadConfig: true,
* isWebGL2: false,
* enginePath3d: "path/to/itowns.js",
* viewMode: "3d",
* center: {
* location: "rue pasteur, Saint-Mandé"
* },
* zoom: 16,
* tilt: 0,
* azimuth: 45,
* controlsOptions: {
* mousePosition: {},
* search: { maximised : true }
* },
* mapEventsOptions: {
* "mapLoaded": window.initMap,
* "layerChanged": window.callbackLayerChanged,
* "zoomChanged": window.callbackZoomChanged,
* "centerChanged": window.callbackCenterChanged,
* "azimuthChanged": window.callbackAzimuthChanged,
* "tiltChanged": window.callbackTiltChanged
* },
* layersOptions: {
* 'GEOGRAPHICALGRIDSYSTEMS.MAPS.SCAN-EXPRESS.STANDARD': {}
* }
* }
* );
*
* // abonnement à l'evenement "mapLoaded"
* map.listen("mapLoaded", function (e) { console.log("objet map", e); });
*
* @returns {Gp.Map} - The Geoportal map.
*/
load: function load(div, mapOptions) {
var logger = _LoggerByDefault__WEBPACK_IMPORTED_MODULE_0__["default"].getLogger("MapLoader.load");
// checking required parameter : div
if (!div) {
throw new Error("missing parameter div !");
}
if (typeof div === "string") {
div = document.getElementById(div);
}
if (!div) {
throw new Error("HTML element with id [" + div + "] not found.");
}
if (!mapOptions) {
mapOptions = {};
}
// view mode by default
if (!mapOptions.hasOwnProperty("viewMode")) {
mapOptions.viewMode = "2d";
}
// auto detect lib. loaded
var Map2d = null;
var Map3d = null;
if (this.__class2d !== null && typeof this.__class2d === "function") {
Map2d = this.__class2d;
}
if (this.__class3d !== null && typeof this.__class3d === "function") {
Map3d = this.__class3d;
}
// TODO => autres implementations
// creating the library map instance
var objMap = null;
var viewMode = mapOptions.viewMode;
switch (viewMode) {
case "2d":
logger.trace("construction de la carte 2D");
if (Map2d === null || typeof Map2d !== "function") {
throw new Error("library ol is not loaded !");
}
objMap = new Map2d({
div: div,
mapOptions: mapOptions
});
break;
case "3d":
logger.trace("construction du globe 3D");
if (Map3d === null || typeof Map3d !== "function") {
throw new Error("library itowns is not loaded !");
}
objMap = new Map3d({
div: div,
mapOptions: mapOptions
});
break;
default:
throw new Error("not supported view mode");
}
return objMap;
}
};
/***/ }),
/* 9 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _OlMapLayers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
/* harmony import */ var _OlMapVectorTile__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(465);
/* harmony import */ var _OlMapControls__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(466);
/* harmony import */ var _OlMapListeners__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(470);
/* harmony import */ var _OlMapView__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(471);
/* harmony import */ var _OlMapBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(11);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OlMap", function() { return _OlMapBase__WEBPACK_IMPORTED_MODULE_5__["OlMap"]; });
/***/ }),
/* 10 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _OlMapBase__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
/* harmony import */ var _Interface_IMap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
/* harmony import */ var geoportal_extensions_openlayers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34);
/* harmony import */ var ol_layer_Vector__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(192);
/* harmony import */ var ol_layer_Image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(457);
/* harmony import */ var ol_layer_Tile__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(337);
/* harmony import */ var ol_source_Vector__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(113);
/* harmony import */ var ol_source_TileWMS__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(120);
/* harmony import */ var ol_source_ImageWMS__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(136);
/* harmony import */ var ol_source_OSM__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(460);
/* harmony import */ var ol_format_GML2__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(462);
/* harmony import */ var ol_format_GML3__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(464);
/* harmony import */ var ol_Overlay__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(75);
/* harmony import */ var ol_proj__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(15);
/* harmony import */ var ol_tilegrid_WMTS__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(135);
/* harmony import */ var ol_style__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(229);
/* harmony import */ var ol_Collection__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(114);
/* harmony import */ var ol_Observable__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(79);
/* harmony import */ var ol_loadingstrategy__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(119);
/**
* Proprietes observables des couches pour le SDK
*/
_OlMapBase__WEBPACK_IMPORTED_MODULE_0__["OlMap"].LAYERPROPERTIES = {
visible: "visibility",
opacity: "opacity",
zIndex: "position",
grayScaled: "grayScaled",
minResolution: "maxZoom",
maxResolution: "minZoom"
};
_OlMapBase__WEBPACK_IMPORTED_MODULE_0__["OlMap"].LAYERPROPERTIES["mapbox-status"] = "mapbox-status";
/**
* Remove the layers listed to the map.
*
* @param {Array.<String>} layerIds - A list of layer's id or null.
*/
_OlMapBase__WEBPACK_IMPORTED_MODULE_0__["OlMap"].prototype.removeLayers = function (layerIds) {
if (!_Interface_IMap__WEBPACK_IMPORTED_MODULE_1__["IMap"].prototype.removeLayers.apply(this, arguments)) {
return;
}
// ici on sait que layerIds est un tableau
var _layers = this._getLayersObj(layerIds);
_layers.forEach(function (_layer, i, array) {
this.libMap.removeLayer(_layer.obj);
}, this);
};
/**
* Modify the layers'options listed to the map
*
* @param {Object} layersOptions - Layers to add to the map and their options. Associative array mapping official name of the Geoportal layer or the id of a personal layer (keys) with their properties (values given as {@link Gp.LayerOptions}).
*/
_OlMapBase__WEBPACK_IMPORTED_MODULE_0__["OlMap"].prototype.modifyLayers = function (layersOptions) {
if (!_Interface_IMap__WEBPACK_IMPORTED_MODULE_1__["IMap"].prototype.modifyLayers.apply(this, arguments)) {
return;
}
var layerIds = Object.keys(layersOptions);
// on recupere les objets correspondants dejà sur la carte
var _layerObjs = this._getLayersObj(layerIds);
_layerObjs.forEach(function (_layerObj) {
this.logger.trace("[modifyLayers] : modifying : [" + _layerObj.id + "]");
// traduction options ahn => options OlMap
var commonOpts = this._applyCommonLayerParams(layersOptions[_layerObj.id]);
// application des options OL aux couches OL
// l'objet _layerObj.options sera mis à jour par le mécanisme des evenements.
if (commonOpts.hasOwnProperty("opacity")) {
this.logger.trace("[modifyLayers] : setting opacity of : [" + _layerObj.id + "] to : " + commonOpts.opacity);
_layerObj.obj.setOpacity(commonOpts.opacity);
}
if (commonOpts.hasOwnProperty("visible")) {
this.logger.trace("[modifyLayers] : setting visible of : [" + _layerObj.id + "] to : " + commonOpts.visible);
_layerObj.obj.setVisible(commonOpts.visible);
}
if (commonOpts.hasOwnProperty("zIndex")) {
this.logger.trace("[modifyLayers] : setting zIndex of : [" + _layerObj.id + "] to : " + commonOpts.zIndex);
_layerObj.obj.setZIndex(commonOpts.zIndex);
// pour forcer la prise en compte par le LayerSwitcher du zIndex quand il vaut zéro (extension OL) (cf. issue #12)
if (commonOpts.zIndex === 0) {
_layerObj.obj._forceNullzIndex = true;
}
// ou inversement pour ne plus forcer le zIndex à zéro lorsque ce n'est pas le cas
if (commonOpts.zIndex !== 0 && _layerObj.obj._forceNullzIndex) {
_layerObj.obj._forceNullzIndex = false;
}
}
if (commonOpts.hasOwnProperty("minResolution")) {
this.logger.trace("[modifyLayers] : setting minResolution of : [" + _layerObj.id + "] to : " + commonOpts.minResolution);
_layerObj.obj.setMinResolution(commonOpts.minResolution);
}
if (commonOpts.hasOwnProperty("maxResolution")) {
this.logger.trace("[modifyLayers] : setting maxResolution of : [" + _layerObj.id + "] to : " + commonOpts.maxResolution);
_layerObj.obj.setMaxResolution(commonOpts.maxResolution);
}
if (commonOpts.hasOwnProperty("grayScaled")) {
this.logger.trace("[modifyLayers] : setting grayScaled of : [" + _layerObj.id + "] to : " + commonOpts.grayScaled);
this._changeLayerColor(_layerObj.id, commonOpts.grayScaled);
}
}, this);
};
/**
* Add a Raster Layer to the map
*
* @param {Object} layerObj - geoportalLayer to add.
* @param {Gp.LayerOptions} layerObj.geoportalLayerID - options of the layer
*
* @private
*/
_OlMapBase__WEBPACK_IMPORTED_MODULE_0__["OlMap"].prototype._addRasterLayer = function (layerObj) {
var layerId = Object.keys(layerObj)[0];
var layerOpts = layerObj[layerId];
// au cas où la couche ajoutée est un MNT, on essaye pas de l'ajouter en 2D
if (layerOpts.type !== "elevation") {
var constructorOpts = this._applyCommonLayerParams(layerOpts);
switch (layerOpts.format.toUpperCase()) {
case "WMS":
{
this.logger.trace("[_addRasterLayer] : ajout d'une couche WMS");
var params = {};
params.LAYERS = layerOpts.layers.join(",");
if (layerOpts.version) {
params.VERSION = layerOpts.version;
}
// au cas ou maintien de l'ancien nom de paramètre :
// layerOpts.styleName (sans "s")
layerOpts.stylesNames = layerOpts.stylesNames || layerOpts.stylesName;
if (layerOpts.stylesNames) {
if (Array.isArray(layerOpts.stylesNames)) {
params.STYLES = layerOpts.stylesNames.join();
} else {
this.logger.info("[_addRasterLayer] : 'stylesNames' parameter should be an array of style names (string)");
}
}
if (layerOpts.outputFormat) {
params.FORMAT = layerOpts.outputFormat;
}
if (layerOpts.backgroundColor) {
params.BGCOLOR = layerOpts.backgroundColor;
params.TRANSPARENT = "FALSE";
} else {
params.TRANSPARENT = "TRUE";
}
var sourceWmsOpts = {
url: layerOpts.url,
params: params
};
if (layerOpts.hasOwnProperty("projection")) {
sourceWmsOpts.projection = layerOpts.projecti