diff --git a/_lib/collections/ItsLayerCollection.js b/_lib/collections/ItsLayerCollection.js deleted file mode 100644 index f82d63ac42233ec3ff5f706136587bdfa5283d83..0000000000000000000000000000000000000000 --- a/_lib/collections/ItsLayerCollection.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 12/14/2015. - */ - -var _LayerItsInventory = require('../layers/LayerItsInventory'); - -var _LayerItsInventory2 = _interopRequireDefault(_LayerItsInventory); - -var _colors = require('../util/colors'); - -var colors = _interopRequireWildcard(_colors); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('collections'); - -var itsConfig = [{ - name: 'Camera', - itsType: 'cctv', - minZoom: 11, - itsIconConfig: { - prop: 'owner', - defaultName: 'WisDOT', - defaultIcon: 'cctv.png', - iconArray: [['City of Madison', 'Madison', 'cctv-mad.png']] - } -}, { - name: 'Message Signs', - itsType: 'DMS', - minZoom: 11, - itsIconConfig: { - prop: 'dmsType', - defaultName: 'DMS', - defaultIcon: 'dms.png', - iconArray: [['pcms', 'PCMS', 'pcms.png']] - } -}, { name: 'ATR', itsType: 'atr', minZoom: 8, itsIcon: 'atr.png', visible: false }, { name: 'Lighting', itsType: 'light', minZoom: 16, itsIcon: 'streetlight.png', visible: false, onDemand: true }, { name: 'Bluetooth', itsType: 'blue', minZoom: 10, itsIcon: 'bluetooth.png', visible: false }, { name: 'Cabinets', itsType: 'cabinet', minZoom: 10, itsIcon: 'cabinet.png', visible: false }, { name: 'Hut', itsType: 'hut', minZoom: 10, itsIcon: 'hut.png', visible: false }, { name: 'Vault', itsType: 'vault', minZoom: 13, itsIcon: 'vault.png', visible: false }, { name: 'Advisory Radio', itsType: 'har', minZoom: 10, itsIcon: 'har.png', visible: false }, { - name: 'Loop Detectors', - itsType: 'loop', - legendCollapse: true, - minZoom: 14, - visible: false, - itsIconConfig: { - prop: 'dtctrType', - defaultName: 'Other', - defaultIcon: 'loopdetectorother.png', - iconArray: [['detector', 'Detector', 'loopdetector.png'], ['long', 'Long', 'loopdetectorlong.png'], ['zone', 'Zone', 'loopdetectorzone.png']] - }, - onDemand: true -}, { name: 'Microwave', itsType: 'microwave', minZoom: 14, itsIcon: 'microwave.png', visible: false }, { name: 'Pull Box', itsType: 'pull', minZoom: 14, itsIcon: 'pullbox.png', visible: false, onDemand: true }, { name: 'RWIS', itsType: 'rwis', minZoom: 7, itsIcon: 'rwis.png', visible: false }, { name: 'Ramp Gates', itsType: 'gate', minZoom: 10, itsIcon: 'rampgate.png', visible: false }, { name: 'Ramp Meter', itsType: 'meter', minZoom: 10, itsIcon: 'rampmeter.png', visible: false }, { name: 'Signal', itsType: 'signal', minZoom: 13, itsIcon: 'signal.png', visible: false, onDemand: true }, { name: 'Tower', itsType: 'tower', minZoom: 10, itsIcon: 'tower.png', visible: false }, { - name: 'Trench', - itsType: 'trench', - onDemand: true, - visible: false, - onDemandDelay: 500, - minZoom: 15, - legendCollapse: true, - itsLineConfig: { - prop: 'owner', - //defaultName: 'Other', - //defaultWidth: 7, - defaultColor: colors.hexAlphaToRgbOrRgba('#747474', 0.8), - lineArray: [['WisDOT', 'WisDOT', colors.hexAlphaToRgbOrRgba('#FF032F', 0.7)], ['WIN', 'WIN', colors.hexAlphaToRgbOrRgba('#FFC632', 0.7)], ['USXchange', 'USXchange', colors.hexAlphaToRgbOrRgba('#2DFF46', 0.7)], ['AT&T', 'AT&T', colors.hexAlphaToRgbOrRgba('#ff2be5', 0.7)], ['Touch America', 'Touch America', colors.hexAlphaToRgbOrRgba('#52f3ff', 0.7)], ['Qwest', 'Qwest', colors.hexAlphaToRgbOrRgba('#9278ff', 0.7)], ['McLeodUSA', 'McLeodUSA', colors.hexAlphaToRgbOrRgba('#2926FF', 0.7)], ['CINC', 'CINC', colors.hexAlphaToRgbOrRgba('#CB00FF', 0.7)], ['City of Madison', 'Madison', colors.hexAlphaToRgbOrRgba('#000380', 0.7)]] - } -}]; - -var ItsLayerCollection = function () { - - /** - * Create a collection of all ITS layers - * @param {ol.Map} theMap the openlayers map - * @param {Array} [exclude=[]] array of Its layer identifiers to exclude - * - * BLUE Bluetooth Detector - Bluetooth Detector - * CABINET Cabinets - The cabinets - * CCTV Camera - Traffic Cameras - * HUT Communication Hut - Communication Hut - * VAULT Communication Vault - The communication vaults - * HAR Highway Advisory Radio - Advisory Radios - * LIGHT Lighting - Lighting - * LOOP Loop Detectors - Loop Detectors - * DMS Message Board - Message Boards and Signs - * MICROWAVE Microwave Detector - Microwave Detectors - * PULL Pull Box - A pull box - * RWIS RWIS - Road weather information system - * GATE Ramp Gate - The ramp Gates - * METER Ramp Meter - The ramp meters - * SIGNAL Signal - Traffic Signal - * TOWER Tower - The towers - * TRENCH - */ - - function ItsLayerCollection(theMap, exclude) { - _classCallCheck(this, ItsLayerCollection); - - this.map = theMap; - this._layers = []; - - exclude = (typeof exclude === 'undefined' ? 'undefined' : _typeof(exclude)) == 'object' ? exclude : []; - - for (var i = 0; i < itsConfig.length; i++) { - var lyrConfig = itsConfig[i]; - var addLayer = true; - - for (var j = 0; j < exclude.length; j++) { - if (exclude[j] == lyrConfig.itsType) { - addLayer = false; - break; - } - } - - if (addLayer) { - var inventLyr = new _LayerItsInventory2.default(lyrConfig); - this['map'].addLayer(inventLyr.olLayer); - this._layers.push(inventLyr); - } - } - } - - /** - * Return the array of layers in this collection - * @returns {Array<LayerItsInventory>} an array of layers - */ - - - _createClass(ItsLayerCollection, [{ - key: 'layers', - get: function get() { - return this._layers; - } - }]); - - return ItsLayerCollection; -}(); - -nm.ItsLayerCollection = ItsLayerCollection; -exports.default = ItsLayerCollection; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/collections/LayerLegend.js b/_lib/collections/LayerLegend.js deleted file mode 100644 index 1e7ba3e16063e48dc3c4466e090ea29fb53ae475..0000000000000000000000000000000000000000 --- a/_lib/collections/LayerLegend.js +++ /dev/null @@ -1,445 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 12/16/2015. - */ - - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _makeGuid = require('../util/makeGuid'); - -var _makeGuid2 = _interopRequireDefault(_makeGuid); - -var _mapMove = require('../olHelpers/mapMove'); - -var _mapMove2 = _interopRequireDefault(_mapMove); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('collections'); - -var LayerGroup = function () { - - /** - * - * @param {object} [groupConfig={}] - group configuration object - * @param {string} groupConfig.groupName - the group name - * @param {boolean} [groupConfig.collapse=false] - if the group should be collapsed initially - * @param {boolean} [groupConfig.addCheck=true] - if the group should have a checkbox controlling visibility of all layers - * @param {LayerGroup} [parent=undefined] - the parent group - */ - - function LayerGroup(groupConfig, parent) { - _classCallCheck(this, LayerGroup); - - this.groupLayers = []; - this.groupLayersLookup = {}; - this.groupGroups = []; - this.groupGroupsLookup = {}; - this.itemIdArray = []; - - if (typeof groupConfig == 'undefined') { - this.parent = null; - this.groupId = 'root'; - this.groupName = 'root'; - this.allGroupLookup = { root: this }; - this.allGroupArray = [this]; - this.allLayerArray = []; - this.allLayerLookup = {}; - this.layerParentLookup = {}; - this.collapse = false; - this.addCheck = false; - } else { - this.groupId = (0, _makeGuid2.default)(); - this.parent = parent; - this.groupName = groupConfig.groupName; - this.collapse = typeof groupConfig.collapse == 'boolean' ? groupConfig.collapse : false; - this.addCheck = typeof groupConfig.addCheck == 'boolean' ? groupConfig.addCheck : true; - } - } - - /** - * - * @param {object} groupConfig - configuration object - * @param {string} groupConfig.groupName - the group name - * @param {boolean} groupConfig.collapse if the group should be collapsed initially - * @param {boolean} groupConfig.addCheck if the group should have a checkbox controlling visibility of all layers - * @param {Array<LayerGroup>} parents parent groups - * @returns {LayerGroup} the layer group just added - */ - - - _createClass(LayerGroup, [{ - key: 'addGroup', - value: function addGroup(groupConfig, parents) { - var parent = void 0; - if (parents.length > 0) { - parent = parents[parents.length - 1]; - } else { - parent = 'root'; - } - - /** - * @type {LayerGroup} - */ - var parentGroup = this.allGroupLookup[parent]; - var newGroup = new LayerGroup(groupConfig, parentGroup); - this.allGroupLookup[newGroup.groupId] = newGroup; - this.allGroupArray.push(newGroup); - - parentGroup.groupGroups.push(newGroup); - parentGroup.groupGroupsLookup[newGroup.groupId] = newGroup; - - if (parentGroup.itemIdArray.indexOf(newGroup.groupId) > 0) { - console.log(newGroup.groupId); - throw 'layer and group ids must be unique'; - } - parentGroup.itemIdArray.push(newGroup.groupId); - - return newGroup; - } - - /** - * - * @param {LayerBase} newLayer the layer to be added - * @param {Array} parents array - */ - - }, { - key: 'addLegendLayer', - value: function addLegendLayer(newLayer, parents) { - var parent = void 0; - if (parents.length > 0) { - parent = parents[parents.length - 1]; - } else { - parent = 'root'; - } - - this.allLayerLookup[newLayer.id] = newLayer; - this.allLayerArray.push(newLayer); - - /** - * @type {LayerGroup} - */ - var parentGroup = this.allGroupLookup[parent]; - - parentGroup.groupLayers.push(newLayer); - parentGroup.groupLayersLookup[newLayer.id] = newLayer; - if (parentGroup.itemIdArray.indexOf(newLayer.id) > 0) { - console.log(newLayer.id); - throw 'layer and group ids must be unique'; - } - parentGroup.itemIdArray.push(newLayer.id); - - this.layerParentLookup[newLayer.id] = parentGroup; - } - }, { - key: 'getLegendHtml', - value: function getLegendHtml(legendId, options) { - - var legendHtml = '<ul id="' + legendId + '" class="legend-container">'; - - legendHtml += '<li>' + options.legendTitle + '<input type="checkbox" checked id="suppress-by-extent-' + legendId + '" class="suppress-by-extent">' + ('<label title="Suppress layers not visible at this zoom level" for="suppress-by-extent-' + legendId + '">') + '<span></span>' + '</label></li>'; - - legendHtml += this._buildLegend(this.itemIdArray, this, options.layerDivClasses) + '</ul>'; - - return legendHtml; - } - - /** - * @param {Array} itemIds the items to process - * @param {LayerGroup} theGroup new group - * @param {Array} [layerDivClasses=[]] optional classes to apply to the layer divs - * @static - * @returns {string} html string - */ - - }, { - key: '_buildLegend', - value: function _buildLegend(itemIds, theGroup, layerDivClasses) { - - if (itemIds.length == 0) { - return ''; - } - - var theHml = ''; - - var itemId = itemIds[0]; - - if (theGroup.groupLayersLookup[itemId]) { - - /** - * @type {LayerBase} - */ - var lyr = theGroup.groupLayersLookup[itemId]; - theHml += '<li id="' + lyr.id + '-layer-li" class="legend-layer-li ' + layerDivClasses.join(' ') + '">' + lyr.getLegendDiv() + '</li>'; - } else if (theGroup.groupGroupsLookup[itemId]) { - /** - * type {LayerGroup} - */ - var otherGroup = theGroup.groupGroupsLookup[itemId]; - - theHml += '<li>'; - theHml += '<div id="' + otherGroup.groupId + '-legend-layer-div" ' + ('class="legend-layer-group ' + layerDivClasses.join(' ') + '">'); - - if (otherGroup.addCheck) { - theHml += '<input type="checkbox" checked id="' + otherGroup.groupId + '-group-chck">' + ('<label for="' + otherGroup.groupId + '-group-chck" title="Click arrow to expand or collapse">' + otherGroup.groupName + '</label>'); - } else { - theHml += '<label title="Click arrow to expand or collapse">' + otherGroup.groupName + '</label>'; - } - - theHml += '<span title="Expand/Collapse" class="layer-group-expander'; - theHml += (otherGroup.collapse ? ' legend-layer-group-initial-collapse' : '') + '">'; - theHml += otherGroup.collapse ? '▶' : '▼'; - theHml += '</span>'; - - //parents.push(groupId); - theHml += '<ul>' + this._buildLegend(otherGroup.itemIdArray, otherGroup, layerDivClasses) + '</ul>'; - theHml += '</div>'; - theHml += '</li>'; - } - - return theHml + this._buildLegend(itemIds.slice(1), theGroup, layerDivClasses); - } - }]); - - return LayerGroup; -}(); - -/** - * a wrapper to make a legend - */ - - -var LayerLegend = function () { - - /** - * - * @param {Array} legendItems array of layers or objects with {groupName: {string}, collapse: {boolean}, addCheck: {boolean}, items: {Array}} - * @param {string} divId the div where the legend should be added - * @param {object} options for legend - * @param {Array} [options.layerDivClasses=[]] optional array of classes to be applied to the layer legend divs for custom styling - * @param {string} [options.legendTitle=Legend] the legend title - * @param {bool} [options.scaleDependent=true] if legend display is scale dependent - */ - - function LayerLegend(legendItems, divId, options) { - _classCallCheck(this, LayerLegend); - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = legendItems[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var i = _step.value; - - if (typeof i == 'undefined') { - throw 'undefined item passed in array to legend constructor'; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - options = options || {}; - - options.legendTitle = typeof options.legendTitle == 'string' ? options.legendTitle : 'Legend'; - options.scaleDependent = typeof options.scaleDependent == 'boolean' ? options.scaleDependent : true; - options.layerDivClasses = options.layerDivClasses || []; - - // if legend display is scale dependent, make sure the mapMove object is initialized first - if (options.scaleDependent) { - _mapMove2.default.checkInit(); - } - - this.$divElement = (0, _jquery2.default)('#' + divId); - - this._legendItems = legendItems; - - this.layerGroup = new LayerGroup(); - - this._buildTree(legendItems); - - this.legendId = (0, _makeGuid2.default)(); - - this.$divElement.append(this.layerGroup.getLegendHtml(this.legendId, options)); - - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = this.layerGroup.allLayerArray[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var l = _step2.value; - - l.applyCollapse(); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - var _this = this; - - //// if legend display is scale dependent, make sure the mapMove object is initialized first - if (options.scaleDependent) { - _mapMove2.default.checkInit(); - - _mapMove2.default.addCallback(function (ext, zoom, evt) { - if (typeof evt == 'undefined' || evt == 'change:resolution') { - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = this.layerGroup.allLayerArray[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var lyr = _step3.value; - - var $lyrLi = (0, _jquery2.default)('#' + lyr.id + '-layer-li'); - if (zoom > lyr.maxZoom || zoom < lyr.minZoom) { - $lyrLi.addClass('layer-not-visible'); - } else { - $lyrLi.removeClass('layer-not-visible'); - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - } - }, this, 100, true, 'legend1'); - } - - // <editor-fold desc="add event listeners"> - - this.$divElement.find(".suppress-by-extent").change(function () { - var legendLayerLis = (0, _jquery2.default)('.legend-layer-li'); - if (this.checked) { - legendLayerLis.removeClass('layer-force-show'); - } else { - legendLayerLis.addClass('layer-force-show'); - } - }); - - this.$divElement.find('.legend-check').change(function () { - var lyrId = this.id.replace('-legend-layer-check', ''); - _this.layerGroup.allLayerLookup[lyrId].visible = this.checked; - }); - - this.$divElement.find('.legend-layer-group > input[type=checkbox]').change(function () { - (0, _jquery2.default)(this).siblings('ul').find('input[type=checkbox]').prop('checked', this.checked).trigger('change'); - }); - - this.$divElement.find('.layer-group-expander').click(function () { - var $this = (0, _jquery2.default)(this); - $this.removeClass('legend-layer-group-initial-collapse'); - - $this.siblings('ul').slideToggle(); - - if ($this.hasClass('legend-layer-group-collapsed')) { - $this.removeClass('legend-layer-group-collapsed'); - $this.html('▼'); - } else { - $this.addClass('legend-layer-group-collapsed'); - $this.html('▶'); - } - }); - - this.$divElement.find('.legend-layer-group-initial-collapse').trigger('click'); - // </editor-fold> - } - - /** - * @param {Array} [legendItems=this._layerConfig] the legend items - * @param {Array} [parents=[]] the ordered list of groups in which this item is a member - * @private - */ - - - _createClass(LayerLegend, [{ - key: '_buildTree', - value: function _buildTree(legendItems, parents) { - - if (legendItems.length == 0) { - return; - } - - var oneItem = legendItems[0]; - - //reset the parent if the item is in the base array - if (this._legendItems.indexOf(oneItem) > -1 || typeof parents == 'undefined') { - parents = []; - } - - if (typeof oneItem['groupName'] !== 'undefined') { - var groupItem = legendItems[0]; - var newGroup = this.layerGroup.addGroup(groupItem, parents); - parents.push(newGroup.groupId); - this._buildTree(groupItem.items, parents); - } else { - /** - * @type {LayerBase} - */ - var layerItem = legendItems[0]; - - this.layerGroup.addLegendLayer(layerItem, parents); - } - - this._buildTree(legendItems.slice(1), parents); - } - }, { - key: 'showAll', - set: function set(val) {} - }]); - - return LayerLegend; -}(); - -nm.LayerLegend = LayerLegend; -exports.default = LayerLegend; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/collections/Sliders.js b/_lib/collections/Sliders.js deleted file mode 100644 index 3677a73b984867713aab5cb7347c1d6b06ffeabe..0000000000000000000000000000000000000000 --- a/_lib/collections/Sliders.js +++ /dev/null @@ -1,605 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 12/10/2015. - */ - - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('collections'); - -var _Slider = function () { - - /** - * Slider constructor - * @param {string} name - the slider name - * @param {Array} selections - the selection - * @param {number} wgt - weight - * @param {boolean} selected - if selected - */ - - function _Slider(name, selections, wgt, selected) { - _classCallCheck(this, _Slider); - - //let _this = this; - this.name = name; - this.domId = name.toLowerCase().replace(/ /g, '-'); - this._weight = wgt; - this._weightDefault = this._weight; - - this.selectedParam = null; - this.selectedParamDefault = null; - - this._locked = false; - - this._min = 0.0; - this._max = 100; - - this.labelLow = null; - this.labelHigh = null; - this.labelVal = null; - this.slider = null; - this.chk = null; - - this.atMin = this._weight == this._min; - this.atMax = this._weight == this._max; - - var sel = '<select class="' + (selections.length == 1 ? 'hidden-select' : 'show-select') + '" id="' + this.domId + '_chg">'; - for (var i = 0; i < selections.length; i++) { - var itm = selections[i][0]; - var itmSelected = itm === selected; - - sel += '<option value="' + itm + '" ' + (itmSelected ? ' selected="selected"' : '') + '>' + selections[i][1] + '</option>'; - if (itmSelected) { - this.selectedParam = itm; - } - } - sel += '</select>'; - - this.selectedParamDefault = this.selectedParam; - - this.html = '<div class="slider-div">' + ('<label for="' + this.domId + '_chk" class="slider-label">' + this.name + '</label>') + sel + '<br>' + ('<input id="' + this.domId + '_chk" type="checkbox" title="Lock/Unlock Slider">') + ('<label id="' + this.domId + '_low" class="low-high">' + this._min.toFixed(1) + '</label>') + ('<input id="' + this.domId + '" type="range" value="' + this._weight.toFixed(1) + '" min="0" max="100" step="0.1">') + ('<label id="' + this.domId + '_high" class="low-high">' + this._max.toFixed(1) + '</label>') + ('<label id="' + this.domId + '_lbl" for="' + this.domId + '" class="percent-label">' + this._weight.toFixed(1) + '%</label></div>'); - } - - /** - * add html to dom - * @param {jQuery} $container - container element - */ - - - _createClass(_Slider, [{ - key: 'addToDom', - value: function addToDom($container) { - $container.append(this.html); - this.labelLow = (0, _jquery2.default)('#' + this.domId + '_low'); - this.labelHigh = (0, _jquery2.default)('#' + this.domId + '_high'); - this.labelVal = (0, _jquery2.default)('#' + this.domId + '_lbl'); - this.slider = (0, _jquery2.default)('#' + this.domId); - this.selectionBox = (0, _jquery2.default)('#' + this.domId + '_chg'); - this.chk = (0, _jquery2.default)('#' + this.domId + '_chk'); - } - - /** - * increment the slider - * @param {number} delta change delta - * @returns {number} the remainder not able to be allocated to this slider - */ - - }, { - key: 'increment', - value: function increment(delta) { - var remainder = 0; - delta = Number(delta.toFixed(1)); - - this._weight += delta; - if (this._weight < this._min) { - remainder = this._min - this._weight; - this._weight = this._min; - this.atMin = true; - } else if (this._weight > this._max) { - remainder = this._max - this._weight; - this._weight = this._max; - this.atMax = true; - } else { - this.atMin = false; - this.atMax = false; - } - - this.slider.val(this._weight.toFixed(1)); - this.labelVal.html(this._weight.toFixed(1) + '%'); - - return remainder; - } - - /** - * reset to the original values - */ - - }, { - key: 'reset', - value: function reset() { - this.weight = this._weightDefault; - this.slider.val(this._weightDefault.toFixed(1)); - this.selectionBox.val(this.selectedParamDefault); - this.chk.attr('checked', false); - //let event = new CustomEvent('change'); - //this.chk[0].dispatchEvent(event); - } - - /** - * set the value and drop down - * @param {number} newVal the new value - * @param {string} selectedParam the selected parameter - */ - - }, { - key: 'setValAndDropDown', - value: function setValAndDropDown(newVal, selectedParam) { - this.weight = newVal; - this.min = 0; - this.max = 100; - this.slider.val(newVal.toFixed(1)); - this.selectionBox.val(selectedParam); - this.selectedParam = selectedParam; - this.locked = true; - } - - /** - * - * @returns {boolean} if locked - */ - - }, { - key: 'locked', - get: function get() { - return this._locked; - } - - /** - * - * @param {boolean} val if locked - */ - , - set: function set(val) { - this._locked = val; - this.slider.prop('disabled', this._locked); - this.selectionBox.prop('disabled', this._locked); - this.chk.prop('checked', !this._locked); - } - - /** - * - * @returns {number} the minimum - */ - - }, { - key: 'min', - get: function get() { - return this._min; - } - - /** - * - * @param {number} newVal new minimum - */ - , - set: function set(newVal) { - this._min = Number(newVal.toFixed(1)); - if (this._min < 0) { - this._min = 0; - } - this.labelLow.html(this._min.toFixed(1)); - this.slider.attr('min', this._min.toFixed(1)); - this.atMin = this._weight == this._min; - } - - /** - * - * @returns {number} the maximum - */ - - }, { - key: 'max', - get: function get() { - return this._max; - } - - /** - * - * @param {number} newVal the maximum - */ - , - set: function set(newVal) { - this._max = Number(newVal.toFixed(1)); - if (this._max > 100) { - this._max = 100.0; - } - this.labelHigh.html(this._max.toFixed(1)); - this.slider.attr('max', this._max.toFixed(1)); - this.atMax = this._weight == this._max; - } - - /** - * - * @returns {number} the weight - */ - - }, { - key: 'weight', - get: function get() { - return this._weight; - } - - /** - * - * @param {number} newVal the weight - */ - , - set: function set(newVal) { - this._weight = Number(newVal.toFixed(1)); - this.labelVal.html(this._weight.toFixed(1) + '%'); - if (this._weight <= this._min) { - this.atMin = true; - this.atMax = false; - } else if (this._weight >= this._max) { - this.atMin = false; - this.atMax = true; - } else { - this.atMin = false; - this.atMax = false; - } - } - }]); - - return _Slider; -}(); - -nm._Slider = _Slider; - -/** - * class to make a slider group - */ - -var Sliders = function () { - /** - * - * @param {Array} paramList list of parameters - * @param {string} divId the div id - */ - - function Sliders(paramList, divId) { - _classCallCheck(this, Sliders); - - this.resetting = false; - this._slideFinishedFunctions = []; - this.reservedPercent = 0.0; - this.$container = (0, _jquery2.default)('#' + divId); - this.$container.addClass('slider-container'); - - this.sliderList = []; - this.sliderLookup = {}; - - this.total = 0; - - for (var i = 0; i < paramList.length; i++) { - var p = paramList[i]; - - var sld = new _Slider(p[0], p[1], p[2], p[3]); - this.sliderList.push(sld); - this.sliderLookup[sld.domId] = sld; - sld.addToDom(this.$container); - this.total += sld._weight; - } - - if (this.total != 100) { - alert('total not equal to 100'); - } - - this.lockedList = []; - this.inRangeList = []; - this.atMinList = []; - this.atMaxList = []; - - this.lockedCount = 0; - this.notLockedCount = 0; - - this._splitSliderArray(); - this._addEventListeners(); - } - - _createClass(Sliders, [{ - key: 'addSlideFinishedFunction', - value: function addSlideFinishedFunction(finishedFunction) { - this._slideFinishedFunctions.push(finishedFunction); - } - - /** - * split array into subarrays holding the sliders - * @private - */ - - }, { - key: '_splitSliderArray', - value: function _splitSliderArray() { - this.lockedList = []; - this.inRangeList = []; - this.atMinList = []; - this.atMaxList = []; - - for (var i = 0; i < this.sliderList.length; i++) { - var sld = this.sliderList[i]; - - if (sld.locked) { - this.lockedList.push(sld); - } else if (sld.atMin) { - this.atMinList.push(sld); - } else if (sld.atMax) { - this.atMaxList.push(sld); - } else { - this.inRangeList.push(sld); - } - } - this.lockedCount = this.lockedList.length; - this.notLockedCount = this.sliderList.length - this.lockedCount; - } - - /** - * handle remainder, recursive to take care of min max overshoots - * @param {number} remain the remainder - * @param {string} skipDomId - this dom id - * @private - */ - - }, { - key: '_handleRemainder', - value: function _handleRemainder(remain, skipDomId) { - - remain = Number(remain.toFixed(1)); - if (remain == 0) { - return; - } - - this._splitSliderArray(); - - var canChangeArray = []; - for (var i = 0; i < this.inRangeList.length; i++) { - var sld = this.inRangeList[i]; - if (sld.domId == skipDomId) { - continue; - } - canChangeArray.push(sld); - } - - if (remain > 0) { - for (var _i = 0; _i < this.atMaxList.length; _i++) { - var _sld = this.atMaxList[_i]; - if (_sld.domId == skipDomId) { - continue; - } - canChangeArray.push(_sld); - } - } else { - for (var _i2 = 0; _i2 < this.atMinList.length; _i2++) { - var _sld2 = this.atMinList[_i2]; - if (_sld2.domId == skipDomId) { - continue; - } - canChangeArray.push(_sld2); - } - } - - if (canChangeArray.length == 0) { - return; - } - - var inc = -1 * Number((remain / canChangeArray.length).toFixed(1)); - - var newRemainder = 0; - for (var _i3 = 0; _i3 < canChangeArray.length; _i3++) { - newRemainder += canChangeArray[_i3].increment(inc); - } - - this._handleRemainder(newRemainder, skipDomId); - } - - /** - * reset all - */ - - }, { - key: 'reset', - value: function reset() { - this.resetting = true; - for (var i = 0; i < this.sliderList.length; i++) { - var sld = this.sliderList[i]; - sld.reset(); - } - this.resetting = false; - - if (this._slideFinishedFunctions != null) { - this._slideFinishedFunctions(); - } - } - - /** - * - * @param {object} keyValList key and value list - */ - - }, { - key: 'setValues', - value: function setValues(keyValList) { - this.resetting = true; - for (var k in keyValList) { - if (keyValList.hasOwnProperty(k)) { - this.sliderLookup[k].setValAndDropDown(keyValList[k][0], keyValList[k][1]); - } - } - this.resetting = false; - } - - /** - * get the weight sum - * @returns {number} the weight sum - */ - - }, { - key: 'getSum', - value: function getSum() { - var total = 0; - for (var i = 0; i < this.sliderList.length; i++) { - var sld = this.sliderList[i]; - total += Number(sld.weight.toFixed(1)); - } - - return total; - } - - /** - * get the parameter weights - * @returns {object} lookup with parameter weights - */ - - }, { - key: 'getParams', - value: function getParams() { - var paramWeights = {}; - for (var i = 0; i < this.sliderList.length; i++) { - var sld = this.sliderList[i]; - paramWeights[sld.selectedParam] = Number(sld.weight.toFixed(1)); - } - - return paramWeights; - } - }, { - key: '_addEventListeners', - value: function _addEventListeners() { - var _this = this; - - //change function - this.$container.find('input[type="range"]').change(function () { - if (_this.resetting) { - return; - } - - var $this = (0, _jquery2.default)(this); - var domId = this['id']; - var sldr = _this.sliderLookup[domId]; - - var newValue = parseFloat($this.val()); - - var oldValue = sldr.weight; - var diff = newValue - oldValue; - diff = Number(diff.toFixed(1)); - - sldr.weight = Number(newValue.toFixed(1)); - - _this._handleRemainder(diff, domId); - - //cleanup, make sure the sum is still 100 - var sum = Number(_this.getSum().toFixed(1)); - - if (sum > 100) { - loop1: while (true) { - for (var i = 0; i < _this.sliderList.length; i++) { - var sld = _this.sliderList[i]; - if (sld.domId == domId || sld.locked || sld.atMin) { - continue; - } - sld.increment(-0.1); - sum -= 0.1; - if (sum.toFixed(1) == '100.0') { - break loop1; - } - } - } - } else if (sum < 100) { - loop1: while (true) { - for (var _i4 = 0; _i4 < _this.sliderList.length; _i4++) { - var _sld3 = _this.sliderList[_i4]; - if (_sld3.domId == domId || _sld3.locked || _sld3.atMax) { - continue; - } - _sld3.increment(0.1); - sum += 0.1; - if (sum.toFixed(1) == '100.0') { - break loop1; - } - } - } - } - - for (var _i5 = 0; _i5 < _this._slideFinishedFunctions.length; _i5++) { - _this._slideFinishedFunctions[_i5](); - } - }); - - //update the selected parameter when the selection is changed - (0, _jquery2.default)('.show-select').change(function () { - if (_this.resetting) { - return; - } - _this.sliderLookup[this['id'].replace('_chg', '')].selectedParam = (0, _jquery2.default)(this).val(); - }); - - //lock the slider and update the reserved percent - this.$container.find('input[type="checkbox"]').change(function () { - var domEl = this; - - _this.sliderLookup[domEl.id.replace('_chk', '')].locked = !domEl.checked; - _this.reservedPercent = 0.0; - _this.notLockedCount = 0; - - var notLockedSliders = []; - - for (var i = 0; i < _this.sliderList.length; i++) { - var sld = _this.sliderList[i]; - if (sld.locked) { - _this.reservedPercent += sld.weight; - continue; - } - notLockedSliders.push(sld); - _this.notLockedCount++; - } - - for (var _i6 = 0; _i6 < _this.sliderList.length; _i6++) { - var _sld4 = _this.sliderList[_i6]; - if (_sld4.locked) { - continue; - } - _sld4.max = 100 - _this.reservedPercent; - } - - if (notLockedSliders.length == 1) { - notLockedSliders[0].min = notLockedSliders[0].weight; - } else { - for (var _i7 = 0; _i7 < notLockedSliders.length; _i7++) { - notLockedSliders[_i7].min = 0; - } - } - }); - } - }]); - - return Sliders; -}(); - -nm.Sliders = Sliders; -window.gv['collections'].Sliders = Sliders; -exports.default = Sliders; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/domUtil/SelectBoxBase.js b/_lib/domUtil/SelectBoxBase.js deleted file mode 100644 index 55bede694a3e2f87a462d4f5981f16c00cbdfae6..0000000000000000000000000000000000000000 --- a/_lib/domUtil/SelectBoxBase.js +++ /dev/null @@ -1,183 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 5/13/2016. - */ -/** - * Created by gavorhes on 5/12/2016. - */ - - -var _makeGuid = require('webmapsjs/src/util/makeGuid'); - -var _makeGuid2 = _interopRequireDefault(_makeGuid); - -var _provide = require('webmapsjs/src/util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('ssa.select'); - -var SelectBoxBase = function () { - - /** - * - * @param {jQuery} parent - parent container - * @param {string} labelContent - * @param {contentGenFunc} [contentGen=undefined] - */ - - function SelectBoxBase(parent, labelContent, contentGen) { - var _this = this; - - _classCallCheck(this, SelectBoxBase); - - var guidTop = (0, _makeGuid2.default)(); - var guid = (0, _makeGuid2.default)(); - - var htmlString = '<div id="' + guidTop + '">'; - htmlString += '<label for="' + guid + '">' + labelContent + '</label>'; - - if (contentGen) { - htmlString += contentGen(guid); - } else { - htmlString += '<select id="' + guid + '"></select>'; - } - htmlString += '</div>'; - - parent.append(htmlString); - - this._$container = parent.find('#' + guidTop); - - this.$label = this._$container.find('label'); - - /** - * - * @type {Array<changeListener>} - * @private - */ - this._changeListeners = []; - - /** - * reference to the selector box - * @protected - * @type {jQuery} - */ - this._box = parent.find('#' + guid); - - if (!this._box) { - throw 'the select box was not found'; - } - - this._box.change(function () { - _this.changed(); - }); - } - - /** - * - * @returns {jQuery} - */ - - - _createClass(SelectBoxBase, [{ - key: 'changed', - value: function changed() { - var v = this._box.val(); - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = this._changeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var f = _step.value; - - f(v); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } - - /** - * - * @param {changeListener} func - */ - - }, { - key: 'addChangeListener', - value: function addChangeListener(func) { - this._changeListeners.push(func); - } - - /** - * - * @returns {string|number} - */ - - }, { - key: 'box', - get: function get() { - return this._box; - } - }, { - key: 'selectedValue', - get: function get() { - var theVal = this.box.val(); - - if (theVal == null || typeof theVal == 'undefined') { - return null; - } else if (isNaN(theVal)) { - return theVal; - } else { - if (theVal.indexOf('.') > -1) { - return parseFloat(theVal); - } else { - return parseInt(theVal); - } - } - } - - /** - * - * @param {string|number} v - * @protected - */ - , - set: function set(v) { - this.box.val(v); - } - }, { - key: 'selectedText', - get: function get() { - return this.box.find('option:selected').text(); - } - }]); - - return SelectBoxBase; -}(); - -nm.SelectBoxBase = SelectBoxBase; - -exports.default = SelectBoxBase; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/gulp-helpers.js b/_lib/gulp-helpers.js deleted file mode 100644 index a17ace6faac5db667b42a1d7e714426c3beb0064..0000000000000000000000000000000000000000 --- a/_lib/gulp-helpers.js +++ /dev/null @@ -1,182 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.bundleEs2015 = bundleEs2015; -exports.processLessFile = processLessFile; -exports.bundleEs2015Multiple = bundleEs2015Multiple; -/** - * Created by gavorhes on 5/10/2016. - * Helpers functions for gulp tasks - */ - -var gulp = require('gulp'); -var babel = require('gulp-babel'); -var babelify = require('babelify'); -var browserify = require('browserify'); -var buffer = require('vinyl-buffer'); -var source = require('vinyl-source-stream'); -var sourcemaps = require('gulp-sourcemaps'); -var minify = require('gulp-minify'); -var less = require('gulp-less'); -var cssmin = require('gulp-cssmin'); -var rename = require('gulp-rename'); -var glob = require('glob'); -var watchify = require('watchify'); -var gulpUtil = require('gulp-util'); - -/** - * @typedef {object} dirNameFilePath - * @property {string} dirName - directory name - * @property {string} fileName - file name - */ - -/** - * get directory and file name from output path - * @param {string} outputFile - output file path - * @returns {dirNameFilePath} file directory and path - * @private - */ -function _processOutDir(outputFile) { - "use strict"; - - var pathParts = outputFile.split('/'); - var outFileName = pathParts[pathParts.length - 1]; - pathParts.splice(pathParts.length - 1, 1); - var outDir = pathParts.length === 0 ? '.' : pathParts.join('/'); - - return { dirName: outDir, fileName: outFileName }; -} - -/** - * - * @param {string} inputFile - input file set to null to bundle everything in 'test' directory - * @param {dirNameFilePath|string} outFile - output file as string or path object - * @param {boolean} [production=false] if production, minify and don't watch - * @returns {*} the stream - * @private - */ -function bundleEs2015(inputFile, outFile, production) { - "use strict"; - - if (typeof outFile == 'string') { - outFile = _processOutDir(outFile); - } - - production = typeof production == 'boolean' ? production : false; - - if (inputFile.indexOf('*') > -1) { - inputFile = glob.sync(inputFile); - } - - var bundler = browserify({ - entries: inputFile, - cache: {}, - packageCache: {}, - debug: true - }); - - bundler.transform(babelify.configure({ - presets: ["es2015"], - ignore: /ol\-build\.js|jquery\.min/ - // ignore: /ol\-build\.js|jquery\.min|\/node_modules\/(?!webmapsjs\/)|\/node_modules\/webmapsjs\/(?!lib\/)/ - })); - - if (!production) { - bundler = watchify(bundler); - } - - function runBundle() { - console.log(inputFile); - var stream = bundler.bundle().on('error', function (err) { - console.error(err); - }).pipe(source(outFile.fileName)).pipe(buffer()).pipe(sourcemaps.init({ loadMaps: true })); - - if (production) { - stream = stream.pipe(minify({ - ext: { - src: '-debug.js', - min: '.js' - }, - exclude: ['tasks'], - ignoreFiles: ['.combo.js', '-min.js'] - })); - } - - return stream.pipe(sourcemaps.write('./')).pipe(gulp.dest(outFile.dirName)); - } - - if (!production) { - bundler.on('update', runBundle); - bundler.on('log', gulpUtil.log); - } - - return runBundle(); -} - -/** - * convert less file - * @param {string} inputFile - input less file - * @param {string} outputFile - output css file - * @returns {*} stream - */ -function processLessFile(inputFile, outputFile) { - "use strict"; - - var pathParts = outputFile.split('/'); - var outFileName = pathParts[pathParts.length - 1]; - pathParts.splice(pathParts.length - 1, 1); - var outDir = pathParts.length === 0 ? '.' : pathParts.join('/'); - - var fileNameParts = outFileName.split('.'); - - return gulp.src(inputFile).pipe(less().on('error', function (err) { - console.log(err); - })).pipe(cssmin().on('error', function (err) { - console.log(err); - })).pipe(rename({ - basename: fileNameParts[0], - extname: '.' + fileNameParts[1], - suffix: '.min' - })).pipe(gulp.dest(outDir)); -} - -/** - * make multiple bundles - * @param {Array<Array<string>>} fileArray - array with elements [input file, output file] - * @param {boolean} production - if is production - * @returns {*} output stream - */ -function bundleEs2015Multiple(fileArray, production) { - "use strict"; - - var outStream = undefined; - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = fileArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var f = _step.value; - - outStream = bundleEs2015(f[0], f[1], production); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return outStream; -} \ No newline at end of file diff --git a/_lib/jquery-plugin/animate-buttons.js b/_lib/jquery-plugin/animate-buttons.js deleted file mode 100644 index a1becc217f1875675cd03e5444d847ffc3f9ad1e..0000000000000000000000000000000000000000 --- a/_lib/jquery-plugin/animate-buttons.js +++ /dev/null @@ -1,253 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -/** - * Created by gavorhes on 11/2/2015. - */ - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -require('./range-change'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('jQueryPlugin'); - -/** - * @callback mediaCallback - * @param {number} tm - */ - -function timeToLocalDateString(tm) { - "use strict"; - - var d = new Date(tm); - var p1 = d.toLocaleTimeString().split(' '); - var p2 = p1[0].split(':'); - p2 = p2.slice(0, 2); - - return d.toLocaleDateString() + '<br>' + p2.join(':') + ' ' + p1[1]; -} - -var MediaControl = function () { - function MediaControl(jQueryElement, min, max, val, step, func, playInterval, dateFormat) { - _classCallCheck(this, MediaControl); - - this._container = jQueryElement; - this._playInterval = playInterval; - this._interval = undefined; - this._func = func; - - this._dateFormat = dateFormat; - - this._currentValue = undefined; - this._min = undefined; - this._max = undefined; - this._step = undefined; - this._playing = false; - - var htmlStr = '<span class="media-player-button media-back"></span>' + '<span class="media-player-button media-play"></span>' + '<span class="media-player-button media-pause media-disabled"></span>' + '<span class="media-player-button media-stop media-disabled" ></span>' + '<span class="media-player-button media-ahead"></span>' + '<input type="range">' + '<div class="media-control-value-label-container">' + '<span class="media-control-value-label-min"></span>' + '<span class="media-control-value-label-val"></span>' + '<span class="media-control-value-label-max"></span>' + '</div>'; - - this._container.append(htmlStr); - - var btnPause = this._container.find('.media-pause'); - var btnPlay = this._container.find('.media-play'); - this._$btnStop = this._container.find('.media-stop'); - var btnAhead = this._container.find('.media-ahead'); - var btnBack = this._container.find('.media-back'); - this._$slider = this._container.find('input[type=range]'); - - this._$valLabelMin = this._container.find('.media-control-value-label-min'); - this._$valLabelVal = this._container.find('.media-control-value-label-val'); - this._$valLabelMax = this._container.find('.media-control-value-label-max'); - - this.setMinMaxValueStep(min, max, val, step); - - var _this = this; - - this._$slider.rangeChange(function (newVal, ratio, evt) { - _this.currentValue = newVal; - }, 100); - - btnPlay.click(function () { - var $this = (0, _jquery2.default)(this); - $this.addClass('media-disabled'); - _this._$btnStop.removeClass('media-disabled'); - btnAhead.addClass('media-locked'); - btnBack.addClass('media-locked'); - _this._$slider.prop('disabled', true); - _this._playing = true; - - _this._interval = setInterval(function () { - _this.currentValue += _this._step; - }, _this._playInterval); - }); - - this._$btnStop.click(function () { - clearInterval(_this._interval); - var $this = (0, _jquery2.default)(this); - $this.addClass('media-disabled'); - btnPlay.removeClass('media-disabled'); - btnAhead.removeClass('media-locked'); - btnBack.removeClass('media-locked'); - _this._$slider.prop('disabled', false); - _this._playing = false; - }); - - btnAhead.click(function () { - _this.currentValue = _this.currentValue + _this._step; - }); - - btnBack.click(function () { - _this.currentValue = _this.currentValue - _this._step; - }); - } - - _createClass(MediaControl, [{ - key: 'stopPlaying', - value: function stopPlaying() { - if (this._playing) { - this._$btnStop.trigger('click'); - } - } - }, { - key: 'setMinMaxValueStep', - - - /** - * set min and max value with step - * @param {number} newMin the new min - * @param {number} newMax the new mas - * @param {number} [newValue=newMin] the value to set - * @param {number} [newStep=(newMax-newMin)/20] step value - */ - value: function setMinMaxValueStep(newMin, newMax, newValue, newStep) { - this._min = newMin; - this._max = newMax; - - newValue = typeof newValue == 'number' ? newValue : newMin; - newStep = typeof newStep == 'number' ? newStep : (newMax - newMin) / 20; - - this._currentValue = newValue; - this._step = newStep; - - this._$slider.prop('min', this.min.toString()); - this._$slider.prop('max', this.max.toString()); - this._$slider.prop('step', this.step.toString()); - this._$slider.val(this.currentValue.toString()); - - if (this._dateFormat) { - this._$valLabelMin.html(timeToLocalDateString(this._min)); - this._$valLabelVal.html(timeToLocalDateString(this.currentValue)); - this._$valLabelMax.html(timeToLocalDateString(this._max)); - } else { - this._$valLabelMin.html(this._min.toString()); - this._$valLabelVal.html(this.currentValue.toString()); - this._$valLabelMax.html(this._max.toString()); - } - } - - /** - * - * @param {mediaCallback} newFunc the callback on change - */ - - }, { - key: 'playing', - get: function get() { - return this._playing; - } - }, { - key: 'min', - get: function get() { - return this._min; - } - }, { - key: 'max', - get: function get() { - return this._max; - } - }, { - key: 'step', - get: function get() { - return this._step; - } - }, { - key: 'currentValue', - get: function get() { - return this._currentValue; - }, - set: function set(newValue) { - if (newValue > this._max) { - newValue = this._min; - } else if (newValue < this._min) { - newValue = this._max; - } - this._currentValue = newValue; - this._$slider.val(this._currentValue.toFixed(2)); - - if (this._dateFormat) { - this._$valLabelVal.html(timeToLocalDateString(this.currentValue)); - } else { - this._$valLabelVal.html(this.currentValue.toString()); - } - - this._func(newValue); - } - }, { - key: 'changeFunction', - set: function set(newFunc) { - this._func = newFunc; - } - }]); - - return MediaControl; -}(); - -nm.MediaControl = MediaControl; - -/** - * Adds a media control to a container - * @param {number} [min=0] the min - * @param {number} [max=100] the max - * @param {number} [val=0] the val - * @param {number} [step=1] the step - * @param {mediaCallback} [func=function (n) {console.log('default function', n);}] media change callback function - * @param {number} [playInterval=500] play interval - * @param {boolean} [dateFormat=false] date format - * @this {jQuery} - * @returns {MediaControl} the Media control object - */ -_jquery2.default.fn.mediaControl = function (min, max, val, step, func, playInterval, dateFormat) { - - min = typeof min == 'number' ? min : 0; - max = typeof max == 'number' ? max : 100; - val = typeof val == 'number' ? val : 0; - step = typeof step == 'number' ? step : 1; - func = typeof func == 'function' ? func : function (n) { - console.log('default function', n); - }; - - playInterval = typeof playInterval == 'number' ? playInterval : 500; - dateFormat = typeof dateFormat == 'boolean' ? dateFormat : false; - - this.addClass('media-control-container'); - - return new MediaControl(this, min, max, val, step, func, playInterval, dateFormat); -}; - -exports.default = undefined; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/jquery-plugin/day-range.js b/_lib/jquery-plugin/day-range.js deleted file mode 100644 index 067f049be425c677ec0bac742542d27dacdd65fe..0000000000000000000000000000000000000000 --- a/_lib/jquery-plugin/day-range.js +++ /dev/null @@ -1,122 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -require('../jquery/jquery-ui'); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('jQueryPlugin'); - -var DayRange = function () { - - /** - * constructor for the date range - * @param {number} dayRange number of days - * @param {jQuery} jQueryRef reference to the jquery element - */ - - function DayRange(dayRange, jQueryRef) { - _classCallCheck(this, DayRange); - - this._workingDayRange = dayRange - 1; - - var pickerHtml = '<label for="start-date" style="width: 78px; display: inline-block; margin:5px;">Start Date</label>' + '<input type="text" readonly id="start-date" class="date-pick" style="width: 90px;">' + '<br><label for="end-date" style="width: 78px; display: inline-block; margin:5px;">End Date</label>' + '<input type="text" readonly id="end-date" class="date-pick" style="width: 90px;">'; - - jQueryRef.append(pickerHtml); - - this._$startDate = (0, _jquery2.default)('#start-date'); - this._$endDate = (0, _jquery2.default)('#end-date'); - - this._$startDate.datepicker(); - this._$endDate.datepicker(); - - this._startDate = null; - this._endDate = null; - - var dte1 = new Date(); - dte1.setHours(0, 0, 0, 0); - var dte2 = new Date(dte1.getTime()); - dte2.setDate(dte2.getDate() + dayRange); - dte2.setHours(23, 59, 59, 0); - this._maxDateRange = dte2 - dte1; - - var _this = this; - - //add event listeners - this._$startDate.change(function () { - _this.startDate = this.value; - }); - - this._$endDate.change(function () { - _this.endDate = this.value; - }); - - // initialize - this.endDate = new Date().getTime(); - } - - _createClass(DayRange, [{ - key: 'startDate', - get: function get() { - return this._startDate; - }, - set: function set(val) { - this._startDate = new Date(val); - this._startDate.setHours(0, 0, 0, 0); - this._$startDate.val(this._startDate.toLocaleDateString()); - - if (this.endDate == null || this._endDate - this._startDate > this._maxDateRange || this._endDate.getTime() - this._startDate.getTime() < 24 * 60 * 60 * 1000) { - var tmpDate = new Date(this._startDate.getTime()); - tmpDate.setDate(tmpDate.getDate() + this._workingDayRange); - this.endDate = tmpDate.getTime(); - } - } - }, { - key: 'endDate', - get: function get() { - return this._endDate; - }, - set: function set(val) { - this._endDate = new Date(val); - this._endDate.setHours(23, 59, 59, 0); - this._$endDate.val(this._endDate.toLocaleDateString()); - if (this._startDate == null || this._endDate - this.startDate > this._maxDateRange || this._endDate.getTime() - this._startDate.getTime() < 24 * 60 * 60 * 1000) { - var tmpDate = new Date(this._endDate.getTime()); - tmpDate.setDate(tmpDate.getDate() - this._workingDayRange); - this.startDate = tmpDate.getTime(); - } - } - }]); - - return DayRange; -}(); - -nm.DayRange = DayRange; -var jQuery = _jquery2.default; - -/** - * Adds day range control - * @param {number} dayRange the number of days - * @returns {DayRange} the day range object - */ -jQuery.fn.dayRange = function (dayRange) { - return new DayRange(dayRange, this); -}; - -exports.default = DayRange; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/jquery-plugin/range-change.js b/_lib/jquery-plugin/range-change.js deleted file mode 100644 index 21941453ad9f9be6ccce6477aae804d72ac20c55..0000000000000000000000000000000000000000 --- a/_lib/jquery-plugin/range-change.js +++ /dev/null @@ -1,134 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var mouseIn = false; -var mouseDown = false; -var timeout = null; -var dragged = false; -var lastVal = void 0; - -/** - * Created by gavorhes on 11/2/2015. - */ - -function triggerCallback(callback, evt) { - "use strict"; - - var val = parseFloat(this.value); - var min = parseFloat(this.min); - var max = parseFloat(this.max); - var step = parseFloat(this.step); - - if (max - val < step) { - val = max; - } - - var percent = (val - min) / (max - min); - - if (typeof lastVal == 'number' && val == lastVal) { - return; - } - lastVal = val; - callback(val, percent, evt); -} - -/** - * callback on range change interaction, context of this is the firing dom element - * @callback rangeChangeCallback - * @param {number} newValue - * @param {number} ratio value from 0 to 1 relative of the value to the min and max - * @param {object} evt - */ - -/** - * Add a variety of listeners for range inputs applied to a common callback - * @param {rangeChangeCallback} callback - the callback - * @param {number} [changeTimeout=75] before the callback is called - * @this {jQuery} - * @returns {jQuery} the jQuery object - */ -_jquery2.default.fn.rangeChange = function (callback, changeTimeout) { - - changeTimeout = typeof changeTimeout == 'number' ? changeTimeout : 75; - - this.mouseenter(function () { - mouseIn = true; - }); - - this.mouseleave(function () { - mouseIn = false; - mouseDown = false; - }); - - this.mousedown(function () { - mouseDown = true; - }); - - this.mouseup(function () { - mouseDown = false; - }); - - this.mousemove( - /** - * - * @param {object} evt - event properties - * @this {HTMLElement} - */ - function (evt) { - if (!(mouseIn && mouseDown)) { - return; - } - - dragged = true; - - if (lastVal == this['value']) { - return; - } - lastVal = this['value']; - - if (timeout != null) { - clearTimeout(timeout); - } - - var _this = this; - - timeout = setTimeout(function () { - triggerCallback.call(_this, callback, evt); - timeout = null; - }, changeTimeout); - }); - - this.keyup( - /** - * - * @param {object} evt - event properties - */ - function (evt) { - if (evt.keyCode == 37 || evt.keyCode == 39) { - triggerCallback.call(this, callback, evt); - } - }); - - this.change(function (evt) { - if (dragged) { - dragged = false; - - return; - } - triggerCallback.call(this, callback, evt); - }); - - return this; -}; - -exports.default = undefined; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/jquery/floatthead.js b/_lib/jquery/floatthead.js deleted file mode 100644 index 3ffbd7944ce1c72fc6d1ab0ca6428fea62a6f835..0000000000000000000000000000000000000000 --- a/_lib/jquery/floatthead.js +++ /dev/null @@ -1,64 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.windowScroll = windowScroll; -exports.overflowScroll = overflowScroll; -exports.responsiveScroll = responsiveScroll; -/** - * Created by gavorhes on 6/22/2016. - */ -var $ = require('jquery'); -global.jQuery = $; - -require('floatthead'); - -/** - * implement the default window scroll - * @param {jQuery} $table - jquery reference to table - * @param {object} [options={}] float options - */ -function windowScroll($table, options) { - "use strict"; - - options = options || {}; - - $table.floatThead(options); -} - -/** - * - * @param {jQuery} $table - jquery reference to table - * @param {jQuery} $tableContainer - jquery reference to table - * @param {object} [options={}] float options - */ -function overflowScroll($table, $tableContainer, options) { - "use strict"; - - options = options || {}; - - options.scrollContainer = function (t) { - return $tableContainer; - }; - - $table.floatThead(options); -} - -/** - * - * @param {jQuery} $table - jquery reference to table - * @param {jQuery} $responsiveContainer - jquery reference to table - * @param {object} [options={}] float options - */ -function responsiveScroll($table, $responsiveContainer, options) { - "use strict"; - - options = options || {}; - - options.responsiveContainer = function (t) { - return $responsiveContainer; - }; - - $table.floatThead(options); -} \ No newline at end of file diff --git a/_lib/jquery/jquery-layout.js b/_lib/jquery/jquery-layout.js deleted file mode 100644 index e9cb852063e43bafc3028035b82daa6ad6b2f0e2..0000000000000000000000000000000000000000 --- a/_lib/jquery/jquery-layout.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/** - * Created by gavorhes on 5/23/2016. - */ - -require('jquery-layout'); - -exports.default = undefined; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/jquery/jquery-ui.js b/_lib/jquery/jquery-ui.js deleted file mode 100644 index 0f9b3bd578f02a86f979abf2703250c538792e01..0000000000000000000000000000000000000000 --- a/_lib/jquery/jquery-ui.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/** - * Created by gavorhes on 5/23/2016. - */ - -require('jquery-ui'); - -exports.default = undefined; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/jquery/jquery.js b/_lib/jquery/jquery.js deleted file mode 100644 index bb3205b1ded7a66da7bc3d9f8b2e613afc7d9023..0000000000000000000000000000000000000000 --- a/_lib/jquery/jquery.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var jQuery = require('jquery'); - -exports.default = jQuery; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerBase.js b/_lib/layers/LayerBase.js deleted file mode 100644 index a50e9f433080a9f8641b4ea39bf8604068e0e04e..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerBase.js +++ /dev/null @@ -1,468 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _makeGuid = require('../util/makeGuid'); - -var _makeGuid2 = _interopRequireDefault(_makeGuid); - -var _zoomResolutionConvert = require('../olHelpers/zoomResolutionConvert'); - -var zoomResolutionConvert = _interopRequireWildcard(_zoomResolutionConvert); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('layers'); - -/** - * The base layer class - * @abstract - */ - -var LayerBase = function () { - /** - * The base layer for all others - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id=makeGuid()] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] - the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] - the z index for the layer - * @param {function} [options.loadCallback] - function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] - if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] - if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent=undefined] - additional content to add to the legend - */ - - function LayerBase(url, options) { - _classCallCheck(this, LayerBase); - - options = options || {}; - - if (typeof url !== 'string') { - throw 'Invalid URL'; - } - this._url = url; - - this._params = _typeof(options.params) == 'object' ? options.params : {}; - this._legendCollapse = typeof options.legendCollapse == 'boolean' ? options.legendCollapse : false; - this._legendCheckbox = typeof options.legendCheckbox == 'boolean' ? options.legendCheckbox : true; - - this.id = options.id || (0, _makeGuid2.default)(); - this._name = options.name || 'Unnamed Layer'; - this.animate = false; - this._opacity = typeof options.opacity == 'number' ? options.opacity : 1; - - if (this._opacity > 1) { - this._opacity = 1; - } else if (this._opacity < 0) { - this._opacity = 0; - } - - this._visible = typeof options.visible === 'boolean' ? options.visible : true; - - this._source = undefined; - - /** - * - * @protected - */ - this._olLayer = undefined; - this._loaded = false; - - this._maxResolution = zoomResolutionConvert.zoomToResolution(options.minZoom); - if (typeof this._maxResolution !== 'undefined') { - this._maxResolution += 0.00001; - } - this._minResolution = zoomResolutionConvert.zoomToResolution(options.maxZoom); - - this._minZoom = typeof options.minZoom == 'number' ? options.minZoom : undefined; - this._maxZoom = typeof options.maxZoom == 'number' ? options.maxZoom : undefined; - this._zIndex = typeof options.zIndex == 'number' ? options.zIndex : 0; - - this.loadCallback = typeof options.loadCallback == 'function' ? options.loadCallback : function () {}; - - this._legendContent = ''; - - if (this._legendCheckbox) { - this._legendContent += '<input type="checkbox" ' + (this.visible ? 'checked' : '') + ' ' + ('class="legend-check" id="' + this.id + '-legend-layer-check"><span></span>'); - this._legendContent += '<label for="' + this.id + '-legend-layer-check" class="legend-layer-name">' + this.name + '</label>'; - } else { - this._legendContent += '<label class="legend-layer-name">' + this.name + '</label>'; - } - - this._$legendDiv = null; - this._applyCollapseCalled = false; - this._addLegendContent(typeof options.legendContent === 'string' ? options.legendContent : undefined); - } - - /** - * base load function, sets _loaded = true if it is not already - * @protected - * @returns {boolean} if already loaded - */ - - - _createClass(LayerBase, [{ - key: '_load', - value: function _load() { - if (this.loaded == true) { - return true; - } else { - this._loaded = true; - - return false; - } - } - - /** - * Get the legend html, be sure to only add to the DOM once - * @returns {string} html for layer wrapped in a div - */ - - }, { - key: 'getLegendDiv', - value: function getLegendDiv() { - return '<div class="legend-layer-div" id="' + this.id + '-legend-layer-div">' + this._legendContent + '</div>'; - } - - /** - * - * @param {string|undefined} additionalContent - additional content to add to legend - * @private - */ - - }, { - key: '_addLegendContent', - value: function _addLegendContent(additionalContent) { - additionalContent = typeof additionalContent == 'string' ? additionalContent : ''; - - var addCollapse = additionalContent.indexOf('<ul>') > -1; - - if (addCollapse) { - additionalContent = '<span class="legend-items-expander" title="Expand/Collapse">▼</span>' + additionalContent; - } - - this._legendContent += additionalContent; - - this._$legendDiv = (0, _jquery2.default)('#' + this.id + '-legend-layer-div'); - - if (this._$legendDiv.length > 0) { - this._$legendDiv.append(additionalContent); - this.applyCollapse(); - } - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=] - additonal content to add - */ - - }, { - key: 'addLegendContent', - value: function addLegendContent(additionalContent) { - this._addLegendContent(additionalContent); - } - }, { - key: 'applyCollapse', - value: function applyCollapse() { - if (this._applyCollapseCalled) { - console.log('collapse already applied'); - - return undefined; - } - - this._$legendDiv = (0, _jquery2.default)('#' + this.id + '-legend-layer-div'); - - if (this._$legendDiv.length > 0) { - - var $expander = this._$legendDiv.find('.legend-items-expander'); - - if ($expander.length > 0) { - this._applyCollapseCalled = true; - - $expander.click(function () { - var $this = (0, _jquery2.default)(this); - - $this.siblings('ul').slideToggle(); - - if ($this.hasClass('legend-layer-group-collapsed')) { - $this.removeClass('legend-layer-group-collapsed'); - $this.html('▼'); - } else { - $this.addClass('legend-layer-group-collapsed'); - $this.html('▶'); - } - }); - - if (this._legendCollapse) { - $expander.trigger('click'); - } - } - } - } - - /** - * trick to refresh the layer - */ - - }, { - key: 'refresh', - value: function refresh() { - if (this.source) { - this.source.refresh(); - //let src = this.source; - //this.olLayer.setSource(undefined); - //this.olLayer.setSource(src); - } - } - - /** - * get the legend content - * @type {string} - */ - - }, { - key: 'legendContent', - get: function get() { - return this._legendContent; - } - - /** - * set the legend content directly - * @param {string} newVal - new content - * @protected - */ - , - set: function set(newVal) { - this._legendContent = newVal; - } - - /** - * get the map get params - * @type {object} - */ - - }, { - key: 'params', - get: function get() { - return this._params; - } - - /** - * set the map get params - * @param {object} newParams - new get params - * @protected - */ - , - set: function set(newParams) { - this._params = newParams; - } - - /** - * get the minimum resolution - * @type {number|*} - */ - - }, { - key: 'minResolution', - get: function get() { - return this._minResolution; - } - - /** - * get the maximum resolution - * @type {number|*} - */ - - }, { - key: 'maxResolution', - get: function get() { - return this._maxResolution; - } - - /** - * get min zoom - * @type {number|*} - */ - - }, { - key: 'minZoom', - get: function get() { - return this._minZoom; - } - - /** - * get max zoom - * @type {number|*} - */ - - }, { - key: 'maxZoom', - get: function get() { - return this._maxZoom; - } - - /** - * get the url - * @type {string} - */ - - }, { - key: 'url', - get: function get() { - return this._url; - } - - /** - * Get the layer visibility - * @type {boolean} - */ - - }, { - key: 'visible', - get: function get() { - return this._visible; - } - - /** - * Set the layer visibility - * @param {boolean} visibility - layer visibility - */ - , - set: function set(visibility) { - this._visible = visibility; - if (this.olLayer) { - this.olLayer.setVisible(this._visible); - if (visibility && !this._loaded) { - this._load(); - } - } - } - - /** - * Get the layer opacity - * @type {number} - */ - - }, { - key: 'opacity', - get: function get() { - return this._opacity; - } - - /** - * Set the layer opacity - * @param {number} opacity - layer opacity - */ - , - set: function set(opacity) { - this._opacity = opacity; - if (this.olLayer) { - this.olLayer.setOpacity(this._opacity); - } - } - - /** - * Get the layer name - * @type {string} - */ - - }, { - key: 'name', - get: function get() { - return this._name; - } - - /** - * set the layer name - * @param {string} newName - the new name - */ - , - set: function set(newName) { - this._name = newName; - } - - /** - * Check if the layer is loaded - * @type {boolean} - */ - - }, { - key: 'loaded', - get: function get() { - return this._loaded; - } - - /** - * get the layer source - * @type {*} - */ - - }, { - key: 'source', - get: function get() { - return this._source; - } - - /** - * get the z index - * @type {number} - */ - - }, { - key: 'zIndex', - get: function get() { - return this._zIndex; - } - - /** - * set the z index - * @param {number} newZ - new Z index - */ - , - set: function set(newZ) { - this._zIndex = newZ; - this.olLayer.setZIndex(this.zIndex); - } - - /** - * - * @returns {ol.layer.Base|undefined} the ol layer - */ - - }, { - key: 'olLayer', - get: function get() { - return this._olLayer; - } - }]); - - return LayerBase; -}(); - -nm.LayerBase = LayerBase; -exports.default = LayerBase; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerBaseVector.js b/_lib/layers/LayerBaseVector.js deleted file mode 100644 index dd8dd7f39a12f171bc0c01e6a55cc66704c82246..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerBaseVector.js +++ /dev/null @@ -1,372 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _set = function set(object, property, value, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent !== null) { set(parent, property, value, receiver); } } else if ("value" in desc && desc.writable) { desc.value = value; } else { var setter = desc.set; if (setter !== undefined) { setter.call(receiver, value); } } return value; }; - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _LayerBase2 = require('./LayerBase'); - -var _LayerBase3 = _interopRequireDefault(_LayerBase2); - -var _mapMove = require('../olHelpers/mapMove'); - -var _mapMove2 = _interopRequireDefault(_mapMove); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var nm = (0, _provide2.default)('layers'); - -/** - * The make mapMoveGetParams function takes the extent and the zoom level - * context is 'this' object, probably want to do something with this.mapMoveParams - * @callback mapMoveMakeGetParams - * @param {LayerBaseVector} lyr - * @param {object} extent - * @param {number} extent.minX - * @param {number} extent.minY - * @param {number} extent.maxX - * @param {number} extent.maxY - * @param {number} zoomLevel - */ - -/** - * The Vector layer base - * @augments LayerBase - * @abstract - */ - -var LayerBaseVector = function (_LayerBase) { - _inherits(LayerBaseVector, _LayerBase); - - /** - * The base vector layer - * @param {string} url - pass an empty string to prevent default load and add from a json source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {mapMoveMakeGetParams} [options.mapMoveMakeGetParams=function(lyr, extent, zoomLevel){}] function to create additional map move params - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - */ - - function LayerBaseVector(url, options) { - _classCallCheck(this, LayerBaseVector); - - //prevent regular load if no url has been provided - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerBaseVector).call(this, url, options)); - - if (_this.url.trim() == '') { - _this._loaded = true; - } - - _this._style = typeof options.style == 'undefined' ? undefined : options.style; - - if (_this.visible) { - _this._autoLoad = true; - } else { - _this._autoLoad = typeof options['autoLoad'] == 'boolean' ? options['autoLoad'] : false; - } - - _this._onDemand = typeof options.onDemand == 'boolean' ? options.onDemand : false; - _this._onDemandDelay = typeof options.onDemandDelay == 'number' ? options.onDemandDelay : 300; - - if (options.mapMoveObj) { - _this._mapMove = options.mapMoveObj; - } else { - _this._mapMove = _this._onDemand ? _mapMove2.default : undefined; - } - - _this._mapMoveMakeGetParams = typeof options.mapMoveMakeGetParams == 'function' ? options.mapMoveMakeGetParams : function (lyr, extent, zoomLevel) { - return {}; - }; - - if (_this._onDemand) { - _this._loaded = true; - _this._mapMoveParams = {}; - _this._mapMove.checkInit(); - _this._mapMove.addVectorLayer(_this); - } - - _this._source = new _ol2.default.source.Vector(); - - /** - * - * @type {ol.layer.Vector|ol.layer.Base} - */ - _this._olLayer = new _ol2.default.layer.Vector({ - source: _this._source, - visible: _this.visible, - style: _this.style, - minResolution: _this._minResolution, - maxResolution: _this._maxResolution, - zIndex: _this._zIndex - }); - return _this; - } - - /** - * dummy to be overridden - * @param {object} featureCollection - geojson or esrijson object - */ - - - _createClass(LayerBaseVector, [{ - key: 'addFeatures', - value: function addFeatures(featureCollection) { - console.log('Layer vector base addFeatures is a placeholder and does nothing'); - } - - /** - * Before call to map move callback, can prevent call by returning false - * @param {number} zoom - zoom level - * @param {string} [evtType=undefined] undefined for initial load, otherwise one of 'change:center', 'change:resolution' - * @returns {boolean} if the call should proceed - */ - - }, { - key: 'mapMoveBefore', - value: function mapMoveBefore(zoom, evtType) { - if (this.minZoom !== undefined) { - if (zoom < this.minZoom) { - return false; - } - } - - if (this.maxZoom !== undefined) { - if (zoom > this.maxZoom) { - return false; - } - } - - return this.visible; - } - - /** - * callback to generate the parameters passed in the get request - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - */ - - }, { - key: 'mapMoveMakeGetParams', - value: function mapMoveMakeGetParams(extent, zoomLevel) { - this._mapMoveParams = {}; - _jquery2.default.extend(this._mapMoveParams, this.params); - _jquery2.default.extend(this._mapMoveParams, this._mapMoveMakeGetParams(this, extent, zoomLevel)); - } - - /** - * callback function on map move - * @param {object} d - the json response - */ - - }, { - key: 'mapMoveCallback', - value: function mapMoveCallback(d) { - if (this.source) { - this._source.clear(); - } - } - - /** - * clear features in the layer - */ - - }, { - key: 'clear', - value: function clear() { - if (this._source) { - this._source.clear(); - } - } - - /** - * get on demand delay in miliseconds - * @type {number|*} - */ - - }, { - key: 'onDemandDelay', - get: function get() { - return this._onDemandDelay; - } - - /** - * get if the layer is autoloaded - * @type {boolean} - */ - - }, { - key: 'autoLoad', - get: function get() { - return this._autoLoad; - } - - /** - * get the style definition - * @type {ol.Style|styleFunc} - */ - - }, { - key: 'style', - get: function get() { - return this._style; - } - - /** - * set the style - * @param {ol.Style|styleFunc} style - the style or function - */ - , - set: function set(style) { - this._style = style; - this.olLayer.setStyle(this._style); - } - - /** - * get the map CRS if it is defined by the map move object - * @type {string|*} - */ - - }, { - key: 'mapCrs', - get: function get() { - if (this._mapMove) { - return this._mapMove.map.getView().getProjection().getCode(); - } else { - return undefined; - } - } - - /** - * get the map move object - * @type {MapMoveCls|*} - */ - - }, { - key: 'mapMove', - get: function get() { - return this._mapMove; - } - - /** - * map move params - * @type {object} - */ - - }, { - key: 'mapMoveParams', - get: function get() { - return this._mapMoveParams; - } - - /** - * Get the layer visibility - * @type {boolean} - */ - - }, { - key: 'visible', - get: function get() { - return _get(Object.getPrototypeOf(LayerBaseVector.prototype), 'visible', this); - } - - /** - * Set the layer visibility - * @type {boolean} - * @override - */ - , - set: function set(visibility) { - _set(Object.getPrototypeOf(LayerBaseVector.prototype), 'visible', visibility, this); - - if (this._onDemand) { - this.mapMove.triggerLyrLoad(this); - } - } - - /** - * get the layer vector source - * @override - * @type {ol.source.Vector} - */ - - }, { - key: 'source', - get: function get() { - return _get(Object.getPrototypeOf(LayerBaseVector.prototype), 'source', this); - } - - /** - * array of ol features - * @type {Array.<ol.Feature>} - */ - - }, { - key: 'features', - get: function get() { - return this.source.getFeatures(); - } - - /** - * - * @returns {ol.layer|Vector|ol.layer.Base|undefined} the ol layer - */ - - }, { - key: 'olLayer', - get: function get() { - return _get(Object.getPrototypeOf(LayerBaseVector.prototype), 'olLayer', this); - } - }]); - - return LayerBaseVector; -}(_LayerBase3.default); - -nm.LayerBaseVector = LayerBaseVector; -exports.default = LayerBaseVector; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerBaseVectorEsri.js b/_lib/layers/LayerBaseVectorEsri.js deleted file mode 100644 index 51e2e10a3622108d55741bd71592bf21a7b2a65b..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerBaseVectorEsri.js +++ /dev/null @@ -1,247 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _LayerBaseVector2 = require('./LayerBaseVector'); - -var _LayerBaseVector3 = _interopRequireDefault(_LayerBaseVector2); - -var _esriToOlStyle = require('../olHelpers/esriToOlStyle'); - -var esriToOl = _interopRequireWildcard(_esriToOlStyle); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 11/2/2015. - */ - -var nm = (0, _provide2.default)('layers'); - -/** - * Base layer for esri vector layers - * @augments LayerBaseVector - */ - -var LayerBaseVectorEsri = function (_LayerBaseVector) { - _inherits(LayerBaseVectorEsri, _LayerBaseVector); - - /** - * The base vector layer - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - * @param {string} [options.where=1=1] the layer filter clause - * @param {string} [options.outFields=*] comma separated list of output fields, defaults to all - * @param {string} [options.format=pjson] the format the retrieve the data - * @param {number} [options.outSR=3857] the output spatial reference, defaults to web mercator - * @param {boolean} [options.useEsriStyle=false] if the map service style should be used - * @param {boolean} [options.collapseLegend=false] if the legend should be initially collapsed - * @param {number} [options.mapMoveMakeGetParams=function(extent, zoomLevel){}] function to create additional map move params - */ - - function LayerBaseVectorEsri(url, options) { - _classCallCheck(this, LayerBaseVectorEsri); - - if (_typeof(options.params) != 'object') { - options.params = {}; - } - options.params['where'] = options.where || '1=1'; - options.params['outFields'] = options.outFields || '*'; - options.params['f'] = options.format || 'pjson'; - options.params['outSR'] = options.outSR || 3857; - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerBaseVectorEsri).call(this, url, options)); - - _this._outSR = _this.params['outSR']; - _this._esriFormat = new _ol2.default.format.EsriJSON(); - - if (_this._url[_this._url.length - 1] !== '/') { - _this._url += '/'; - } - - _this._urlCopy = _this.url; - _this._url += 'query?callback=?'; - - if (_this.autoLoad || _this.visible) { - _this._load(); - } - - _this._useEsriStyle = typeof options.useEsriStyle == 'boolean' ? options.useEsriStyle : false; - - if (_this._useEsriStyle) { - _this.addLegendContent(); - } - return _this; - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=''] additional content to add to legend - */ - - - _createClass(LayerBaseVectorEsri, [{ - key: 'addLegendContent', - value: function addLegendContent(additionalContent) { - var _this2 = this; - - if (!this._useEsriStyle) { - _get(Object.getPrototypeOf(LayerBaseVectorEsri.prototype), 'addLegendContent', this).call(this, additionalContent); - } else { - _jquery2.default.get(this._urlCopy + '?f=pjson&callback=?', {}, function (d) { - if (d['subLayers'].length > 0) { - alert('should only use single feature layers, not groups'); - - return; - } - - var newStyleAndLegend = esriToOl.makeFeatureServiceLegendAndSymbol(d); - _this2.style = newStyleAndLegend.style; - _get(Object.getPrototypeOf(LayerBaseVectorEsri.prototype), 'addLegendContent', _this2).call(_this2, newStyleAndLegend.legend); - }, 'json'); - } - } - - /** - * add feature collection - * @param {object} featureCollection - features as esrijson - */ - - }, { - key: 'addFeatures', - value: function addFeatures(featureCollection) { - var feats = this._esriFormat.readFeatures(featureCollection); - this.source.addFeatures(feats); - } - - /** - * trigger load features - * @protected - * @returns {boolean} if already loaded - */ - - }, { - key: '_load', - value: function _load() { - var _this3 = this; - - if (_get(Object.getPrototypeOf(LayerBaseVectorEsri.prototype), '_load', this).call(this)) { - return true; - } - _jquery2.default.get(this._url, this.params, function (d) { - _this3.addFeatures(d); - _this3.loadCallback(_this3); - }, 'json').fail(function () { - _this3._loaded = false; - }); - - return false; - } - - /** - * callback to generate the parameters passed in the get request - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - */ - - }, { - key: 'mapMoveMakeGetParams', - value: function mapMoveMakeGetParams(extent, zoomLevel) { - _get(Object.getPrototypeOf(LayerBaseVectorEsri.prototype), 'mapMoveMakeGetParams', this).call(this, extent, zoomLevel); - this.mapMoveParams['geometry'] = extent.minX + ',' + extent.minY + ',' + extent.maxX + ',' + extent.maxY; - this.mapMoveParams['geometryType'] = 'esriGeometryEnvelope'; - this.mapMoveParams['spatialRel'] = 'esriSpatialRelIntersects'; - this.mapMoveParams['spatialRel'] = 'esriSpatialRelIntersects'; - this.mapMoveParams['inSR'] = 3857; - if (this._outSR == 3857) { - this.mapMoveParams['geometryPrecision'] = 1; - } - } - - /** - * Before call to map move callback, can prevent call by returning false - * @param {number} zoom - zoom level - * @param {string} [evtType=undefined] undefined for initial load, otherwise one of 'change:center', 'change:resolution' - * @returns {boolean} if the call should proceed - */ - - }, { - key: 'mapMoveBefore', - value: function mapMoveBefore(zoom, evtType) { - return _get(Object.getPrototypeOf(LayerBaseVectorEsri.prototype), 'mapMoveBefore', this).call(this, zoom, evtType); - //if (super.mapMoveBefore(zoom, evtType)){ - // //place holder for additional processing - // return true; - //} else { - // return false; - //} - } - - /** - * callback function on map move - * @param {object} d - the json response - */ - - }, { - key: 'mapMoveCallback', - value: function mapMoveCallback(d) { - _get(Object.getPrototypeOf(LayerBaseVectorEsri.prototype), 'mapMoveCallback', this).call(this, d); - this.source.addFeatures(this._esriFormat.readFeatures(d)); - } - }]); - - return LayerBaseVectorEsri; -}(_LayerBaseVector3.default); - -nm.LayerBaseVectorEsri = LayerBaseVectorEsri; -exports.default = LayerBaseVectorEsri; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerBaseVectorGeoJson.js b/_lib/layers/LayerBaseVectorGeoJson.js deleted file mode 100644 index 95f28992cc0b1ef6c39700487cd3e3ea268dc528..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerBaseVectorGeoJson.js +++ /dev/null @@ -1,154 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _LayerBaseVector2 = require('./LayerBaseVector'); - -var _LayerBaseVector3 = _interopRequireDefault(_LayerBaseVector2); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 11/2/2015. - */ - -var nm = (0, _provide2.default)('layers'); - -/** - * The Vector GeoJson Layer - * @augments LayerBaseVector - */ - -var LayerBaseVectorGeoJson = function (_LayerBaseVector) { - _inherits(LayerBaseVectorGeoJson, _LayerBaseVector); - - /** - * @param {string|undefined|null} url - resource url, set to '' to make blank layer - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * - * @param {object} [options.transform={}] SR transform, set as false for no transform - * @param {string} options.transform.dataProjection=EPSG:4326 the data CRS - * @param {string} options.transform.featureProjection=EPSG:3857 the feature/map CRS - * @param {mapMoveMakeGetParams} [options.mapMoveMakeGetParams=function(lyr, extent, zoomLevel){}] function to create additional map move params - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - */ - - function LayerBaseVectorGeoJson(url, options) { - _classCallCheck(this, LayerBaseVectorGeoJson); - - url = typeof url == 'string' ? url : ''; - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerBaseVectorGeoJson).call(this, url, options)); - - _this._geoJsonFormat = new _ol2.default.format.GeoJSON(); - - _this._transform = options.transform || {}; - _this._transform.dataProjection = _this._transform.dataProjection || "EPSG:4326"; - _this._transform.featureProjection = _this._transform.featureProjection || "EPSG:3857"; - - if (_this.autoLoad || _this.visible) { - _this._load(); - } - return _this; - } - - /** - * add feature collection - * @param {object} featureCollection - as geojson object - */ - - - _createClass(LayerBaseVectorGeoJson, [{ - key: 'addFeatures', - value: function addFeatures(featureCollection) { - if (this._transform.dataProjection == 'EPSG:3857' && this._transform.featureProjection == 'EPSG:3857') { - this._source.addFeatures(this._geoJsonFormat.readFeatures(featureCollection)); - } else { - this._source.addFeatures(this._geoJsonFormat.readFeatures(featureCollection, this._transform)); - } - } - - /** - * trigger load features - * @protected - * @returns {boolean} if already loaded - */ - - }, { - key: '_load', - value: function _load() { - var _this2 = this; - - if (_get(Object.getPrototypeOf(LayerBaseVectorGeoJson.prototype), '_load', this).call(this)) { - return true; - } - - _jquery2.default.get(this._url, this._params, function (d) { - _this2.addFeatures(d); - _this2.loadCallback(_this2); - }, 'json').fail(function () { - this._loaded = false; - }); - - return false; - } - - /** - * callback function on map move - * @param {object} d the json response - * @override - */ - - }, { - key: 'mapMoveCallback', - value: function mapMoveCallback(d) { - _get(Object.getPrototypeOf(LayerBaseVectorGeoJson.prototype), 'mapMoveCallback', this).call(this, d); - this._source.addFeatures(this._geoJsonFormat.readFeatures(d, this._transform)); - } - }]); - - return LayerBaseVectorGeoJson; -}(_LayerBaseVector3.default); - -nm.LayerBaseVectorGeoJson = LayerBaseVectorGeoJson; -exports.default = LayerBaseVectorGeoJson; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerBaseXyzTile.js b/_lib/layers/LayerBaseXyzTile.js deleted file mode 100644 index 72f53ec4b3cc3a3efffdef008cfb81c8d9f568eb..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerBaseXyzTile.js +++ /dev/null @@ -1,171 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _LayerBase2 = require('./LayerBase'); - -var _LayerBase3 = _interopRequireDefault(_LayerBase2); - -var _esriToOlStyle = require('../olHelpers/esriToOlStyle'); - -var esriToOl = _interopRequireWildcard(_esriToOlStyle); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 12/4/2015. - */ - - -var nm = (0, _provide2.default)('layers'); - -/** - * XYZ tile - * @augments LayerBase - */ - -var LayerBaseXyzTile = function (_LayerBase) { - _inherits(LayerBaseXyzTile, _LayerBase); - - /** - * The XYZ tile layer - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * @param {boolean} [options.useEsriStyle=false] if the map service style should be used - */ - - function LayerBaseXyzTile(url, options) { - _classCallCheck(this, LayerBaseXyzTile); - - var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerBaseXyzTile).call(this, url, options)); - - _this2._source = new _ol2.default.source.XYZ({ url: _this2.url == '' ? undefined : _this2.url }); - _this2._olLayer = new _ol2.default.layer.Tile({ - source: _this2._source, - visible: _this2.visible, - opacity: _this2.opacity, - minResolution: _this2._minResolution, - maxResolution: _this2._maxResolution, - zIndex: _this2._zIndex - }); - - _this2._useEsriStyle = typeof options.useEsriStyle == 'boolean' ? options.useEsriStyle : false; - - if (_this2._useEsriStyle) { - _this2.addLegendContent(); - } - return _this2; - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=''] additional content for legend - */ - - - _createClass(LayerBaseXyzTile, [{ - key: 'addLegendContent', - value: function addLegendContent(additionalContent) { - var _this3 = this; - - if (!this._useEsriStyle) { - _get(Object.getPrototypeOf(LayerBaseXyzTile.prototype), 'addLegendContent', this).call(this, additionalContent); - } else { - var _ret = function () { - var urlCopy = _this3.url; - - var mapServerIndex = urlCopy.toLowerCase().indexOf('mapserver'); - if (mapServerIndex > -1) { - urlCopy = urlCopy.slice(0, mapServerIndex + 9); - } else { - return { - v: void 0 - }; - } - - if (urlCopy[urlCopy.length - 1] !== '/') { - urlCopy += '/'; - } - - urlCopy += 'legend?f=pjson&callback=?'; - - var _this = _this3; - var superAddLegend = _get(Object.getPrototypeOf(LayerBaseXyzTile.prototype), 'addLegendContent', _this3); - - _jquery2.default.get(urlCopy, {}, function (d) { - var newHtml = esriToOl.makeMapServiceLegend(d); - superAddLegend.call(_this, newHtml); - }, 'json'); - }(); - - if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; - } - } - - /** - * - * @returns {ol.source.XYZ} the vector source - */ - - }, { - key: 'source', - get: function get() { - return _get(Object.getPrototypeOf(LayerBaseXyzTile.prototype), 'source', this); - } - - /** - * - * @returns {ol.layer.Tile|ol.layer.Base|undefined} the ol layer - */ - - }, { - key: 'olLayer', - get: function get() { - return _get(Object.getPrototypeOf(LayerBaseXyzTile.prototype), 'olLayer', this); - } - }]); - - return LayerBaseXyzTile; -}(_LayerBase3.default); - -nm.LayerBaseXyzTile = LayerBaseXyzTile; -exports.default = LayerBaseXyzTile; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerEsriMapServer.js b/_lib/layers/LayerEsriMapServer.js deleted file mode 100644 index 9e2bb5158c7a97d87d0c995b5c74429111fe84fb..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerEsriMapServer.js +++ /dev/null @@ -1,245 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _LayerBase2 = require('./LayerBase'); - -var _LayerBase3 = _interopRequireDefault(_LayerBase2); - -var _esriToOlStyle = require('../olHelpers/esriToOlStyle'); - -var esriToOl = _interopRequireWildcard(_esriToOlStyle); - -var _mapPopup = require('../olHelpers/mapPopup'); - -var _mapPopup2 = _interopRequireDefault(_mapPopup); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 12/7/2015. - */ - - -var nm = (0, _provide2.default)('layers'); - -/** - * esri mapserver layer - * @augments LayerBase - */ - -var LayerEsriMapServer = function (_LayerBase) { - _inherits(LayerEsriMapServer, _LayerBase); - - /** - * The base layer for all others - * @param {string} url - resource url - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * @param {boolean} [options.addPopup=false] if a popup should be added - * @param {undefined|Array<number>} [options.showLayers=undefined] if a popup should be added - */ - - function LayerEsriMapServer(url, options) { - _classCallCheck(this, LayerEsriMapServer); - - var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerEsriMapServer).call(this, url, options)); - - _this2._source = new _ol2.default.source.TileArcGISRest({ - url: _this2.url == '' ? undefined : _this2.url, - params: typeof options.showLayers == 'undefined' ? undefined : { layers: 'show:' + options.showLayers.join(',') } - }); - - _this2._olLayer = new _ol2.default.layer.Tile({ - source: _this2._source, - visible: _this2.visible, - opacity: _this2.opacity, - minResolution: _this2._minResolution, - maxResolution: _this2._maxResolution, - zIndex: _this2._zIndex - }); - - options.addPopup = typeof options.addPopup == 'boolean' ? options.addPopup : false; - - _this2._esriFormat = new _ol2.default.format.EsriJSON(); - _this2._popupRequest = null; - - _this2.addLegendContent(); - - if (options.addPopup) { - _mapPopup2.default.addMapServicePopup(_this2); - } - return _this2; - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=''] additional content for legend - */ - - - _createClass(LayerEsriMapServer, [{ - key: 'addLegendContent', - value: function addLegendContent(additionalContent) { - var urlCopy = this.url; - - if (urlCopy[urlCopy.length - 1] !== '/') { - urlCopy += '/'; - } - - urlCopy += 'legend?f=pjson&callback=?'; - - var _this = this; - var superAddLegend = _get(Object.getPrototypeOf(LayerEsriMapServer.prototype), 'addLegendContent', this); - - _jquery2.default.get(urlCopy, {}, function (d) { - var newHtml = esriToOl.makeMapServiceLegend(d); - superAddLegend.call(_this, newHtml); - }, 'json'); - } - }, { - key: 'getPopupInfo', - value: function getPopupInfo(queryParams) { - if (!this.visible) { - return; - } - - var urlCopy = this.url; - - if (urlCopy[urlCopy.length - 1] != '/') { - urlCopy += '/'; - } - - urlCopy += 'identify?callback=?'; - - var _this = this; - - if (this._popupRequest != null) { - this._popupRequest.abort(); - } - - this._popupRequest = _jquery2.default.get(urlCopy, queryParams, function (d) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = d['results'][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var r = _step.value; - - - var popupHtml = '<table class="esri-popup-table">'; - - for (var a in r['attributes']) { - if (r['attributes'].hasOwnProperty(a)) { - var attrVal = r['attributes'][a]; - - if (attrVal == null || attrVal.toString().toLowerCase() == 'null') { - continue; - } - - var attr = a; - if (attr.length > 14) { - attr = attr.slice(0, 11) + '...'; - } - - popupHtml += '<tr><td>' + attr + '</td><td>' + attrVal + '</td></tr>'; - } - } - - popupHtml += '</table>'; - - _mapPopup2.default.addMapServicePopupContent(_this._esriFormat.readFeature(r), _this, popupHtml, r['layerName']); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - }, 'json').always(function () { - _this._popupRequest = null; - }); - } - - /** - * overwrite the base load - * @protected - */ - - }, { - key: '_load', - value: function _load() {} - - /** - * - * @returns {ol.source.TileArcGISRest} the vector source - */ - - }, { - key: 'source', - get: function get() { - return _get(Object.getPrototypeOf(LayerEsriMapServer.prototype), 'source', this); - } - - /** - * - * @returns {ol.layer.Tile|ol.layer.Base|undefined} the ol layer - */ - - }, { - key: 'olLayer', - get: function get() { - return _get(Object.getPrototypeOf(LayerEsriMapServer.prototype), 'olLayer', this); - } - }]); - - return LayerEsriMapServer; -}(_LayerBase3.default); - -nm.LayerEsriMapServer = LayerEsriMapServer; -exports.default = LayerEsriMapServer; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerEsriTile.js b/_lib/layers/LayerEsriTile.js deleted file mode 100644 index 8fcf73591eeeafd608a7d94dcda6ca2a74bcb68c..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerEsriTile.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _LayerBaseXyzTile2 = require('./LayerBaseXyzTile'); - -var _LayerBaseXyzTile3 = _interopRequireDefault(_LayerBaseXyzTile2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 12/4/2015. - */ - - -var nm = (0, _provide2.default)('layers'); - -/** - * Esri tile - * @augments LayerBaseXyzTile - */ - -var LayerEsriTile = function (_LayerBaseXyzTile) { - _inherits(LayerEsriTile, _LayerBaseXyzTile); - - /** - * The Esri tile layer - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * @param {boolean} [options.useEsriStyle=false] if the map service style should be used - */ - - function LayerEsriTile(url, options) { - _classCallCheck(this, LayerEsriTile); - - if (url.search(/\/$/) == -1) { - url += '/'; - } - url += 'tile/{z}/{y}/{x}'; - - return _possibleConstructorReturn(this, Object.getPrototypeOf(LayerEsriTile).call(this, url, options)); - } - - return LayerEsriTile; -}(_LayerBaseXyzTile3.default); - -nm.LayerBaseXyzTile = LayerEsriTile; -exports.default = LayerEsriTile; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerItsInventory.js b/_lib/layers/LayerItsInventory.js deleted file mode 100644 index 90a8c5f52fceefd70bce39b326807d8f22679941..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerItsInventory.js +++ /dev/null @@ -1,416 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; /** - * Created by gavorhes on 12/8/2015. - */ - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _LayerBaseVectorGeoJson = require('./LayerBaseVectorGeoJson'); - -var _LayerBaseVectorGeoJson2 = _interopRequireDefault(_LayerBaseVectorGeoJson); - -var _mapPopup = require('../olHelpers/mapPopup'); - -var _mapPopup2 = _interopRequireDefault(_mapPopup); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var nm = (0, _provide2.default)('layers'); - -function checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig) { - "use strict"; - - //make sure one and only one configuration is defined; - - var configCount = 0; - if (typeof itsIcon == 'string') { - configCount++; - } - - if ((typeof itsLineStyle === 'undefined' ? 'undefined' : _typeof(itsLineStyle)) == 'object') { - itsLineStyle.width = typeof itsLineStyle.width == 'number' ? itsLineStyle.width : 5; - itsLineStyle.color = typeof itsLineStyle.color == 'string' ? itsLineStyle.color : 'red'; - configCount++; - } - - if ((typeof itsIconConfig === 'undefined' ? 'undefined' : _typeof(itsIconConfig)) == 'object') { - itsIconConfig.defaultName = itsIconConfig.defaultName || 'Other'; - - if (typeof itsIconConfig.iconArray == 'undefined') { - itsIconConfig.iconArray = []; - } - - configCount++; - } - - if ((typeof itsLineConfig === 'undefined' ? 'undefined' : _typeof(itsLineConfig)) == 'object') { - itsLineConfig.defaultName = itsLineConfig.defaultName || 'Other'; - itsLineConfig.defaultWidth = itsLineConfig.defaultWidth || 5; - itsLineConfig.defaultColor = itsLineConfig.defaultColor || 'red'; - - if (typeof itsLineConfig.lineArray == 'undefined') { - itsLineConfig.lineArray = []; - } - - // set the width if not defined - for (var i = 0; i < itsLineConfig.lineArray.length; i++) { - if (itsLineConfig.lineArray[i].length == 3) { - itsLineConfig.lineArray[i].push(5); - } - } - - configCount++; - } - - if (configCount > 1) { - throw 'Only one style config can be defined'; - } -} - -/** - * - * @param {string} [itsIcon=undefined] the ITS device type icon image see http://transportal.cee.wisc.edu/its/inventory/icons/ - * - * @param {object} [itsLineStyle=undefined] A single line style - * @param {string} itsLineStyle.color the line color as rgb or hex - * @param {number} [itsLineStyle.width=5] the line width - * - * @param {object} [itsIconConfig=undefined] The icon subtype configuration - * @param {string} itsIconConfig.prop The property used to define icon attribute symbolization - * @param {string} itsIconConfig.defaultName The default name to be used if no other match is found - * @param {string} itsIconConfig.defaultIcon The default icon to be used for no other matches - * @param {object} [itsIconConfig.iconArray=[]] an array, items with format [property, name, img] - * - * @param {object} [itsLineConfig=undefined] The property used to define icon attribute symbolization - * @param {string} itsLineConfig.prop The property used to define icon attribute symbolization - * @param {string} [itsLineConfig.defaultName=Other] The default name to be used if no other match is found - * @param {string} [itsLineConfig.defaultColor=red] The default line color to be used for no other matches - * @param {number} [itsLineConfig.defaultWidth=5] The default line width to be used for no other matches - * @param {object} [itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width] - * @returns {*} undefined, style, or style function - */ -function defineStyle(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig) { - "use strict"; - - checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig); - - var _iconUrlRoot = 'http://transportal.cee.wisc.edu/its/inventory/icons/'; - - if (itsIcon) { - return new _ol2.default.style.Style({ - image: new _ol2.default.style.Icon({ - src: _iconUrlRoot + itsIcon, - crossOrigin: 'anonymous' - }) - }); - } else if (itsLineStyle) { - return new _ol2.default.style.Style({ - stroke: new _ol2.default.style.Stroke({ - color: itsLineStyle.color, - width: itsLineStyle.width - }) - }); - } else if (itsIconConfig) { - return function (feature) { - var symbolProp = feature.getProperties()[itsIconConfig.prop]; - var iconUrl = _iconUrlRoot + itsIconConfig.defaultIcon; - - for (var i = 0; i < itsIconConfig.iconArray.length; i++) { - var thisProp = itsIconConfig.iconArray[i]; - - if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) { - iconUrl = _iconUrlRoot + thisProp[2]; - break; - } - } - - return [new _ol2.default.style.Style({ - image: new _ol2.default.style.Icon({ - src: iconUrl, - crossOrigin: 'anonymous' - }) - })]; - }; - } else if (itsLineConfig) { - return function (feature) { - var symbolProp = feature.getProperties()[itsLineConfig.prop]; - var colr = itsLineConfig.defaultColor || 'red'; - var width = itsLineConfig.defaultWidth || 5; - - for (var i = 0; i < itsLineConfig.lineArray.length; i++) { - var thisProp = itsLineConfig.lineArray[i]; - - if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) { - colr = thisProp[2]; - width = thisProp[3]; - break; - } - } - - return [new _ol2.default.style.Style({ - stroke: new _ol2.default.style.Stroke({ - color: colr, - width: width - }) - })]; - }; - } else { - return undefined; - } -} - -/** - * - * @param {string} [itsIcon=undefined] the ITS device type icon image see http://transportal.cee.wisc.edu/its/inventory/icons/ - * - * @param {object} [itsLineStyle=undefined] A single line style - * @param {string} itsLineStyle.color the line color as rgb or hex - * @param {number} [itsLineStyle.width=5] the line width - * - * @param {object} [itsIconConfig=undefined] The icon subtype configuration - * @param {string} itsIconConfig.prop The property used to define icon attribute symbolization - * @param {string} itsIconConfig.defaultName The default name to be used if no other match is found - * @param {string} itsIconConfig.defaultIcon The default icon to be used for no other matches - * @param {object} [itsIconConfig.iconArray=[]] an array, items with format [property, name, img] - * - * @param {object} [itsLineConfig=undefined] The property used to define icon attribute symbolization - * @param {string} itsLineConfig.prop The property used to define icon attribute symbolization - * @param {string} [itsLineConfig.defaultName=Other] The default name to be used if no other match is found - * @param {string} [itsLineConfig.defaultColor=red] The default line color to be used for no other matches - * @param {number} [itsLineConfig.defaultWidth=5] The default line width to be used for no other matches - * @param {object} [itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width] - * @returns {string} html to be added to the legend - */ -function defineLegend(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig) { - "use strict"; - - var iconHeight = 17; - - checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig); - - var _iconUrlRoot = 'http://transportal.cee.wisc.edu/its/inventory/icons/'; - - if (itsIcon) { - return '<img src="' + (_iconUrlRoot + itsIcon) + '" class="legend-layer-icon" height="' + iconHeight + '">'; - } else if (itsLineStyle) { - return '<hr style="height: ' + itsLineStyle.width + 'px; background-color: ' + itsLineStyle.color + '">'; - } else if (itsIconConfig) { - var outHtml = ''; - outHtml += '<ul>'; - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = itsIconConfig.iconArray[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var a = _step.value; - - outHtml += '<li><span class="legend-layer-subitem">' + a[1] + '</span><img src="' + (_iconUrlRoot + a[2]) + '" class="legend-layer-icon" height="' + iconHeight + '">'; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - outHtml += '<li><span class="legend-layer-subitem">' + itsIconConfig.defaultName + '</span>' + ('<img src="' + (_iconUrlRoot + itsIconConfig.defaultIcon) + '" class="legend-layer-icon" height="' + iconHeight + '"></li>'); - outHtml += '</ul>'; - - return outHtml; - } else if (itsLineConfig) { - var _outHtml = ''; - _outHtml += '<ul>'; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = itsLineConfig.lineArray[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var ls = _step2.value; - - _outHtml += '<li><span class="legend-layer-subitem">' + ls[1] + '</span>' + ('<hr style="height: ' + ls[3] + 'px; background-color: ' + ls[2] + '">'); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - _outHtml += '<li><span class="legend-layer-subitem">' + itsLineConfig.defaultName + '</span>' + ('<hr style="height: ' + itsLineConfig.defaultWidth + 'px; background-color: ' + itsLineConfig.defaultColor + '"></li>'); - _outHtml += '</ul>'; - - return _outHtml; - } else { - return ''; - } -} - -/** - * Its Layer class - * @augments LayerBaseVectorGeoJson - */ - -var LayerItsInventory = function (_LayerBaseVectorGeoJs) { - _inherits(LayerItsInventory, _LayerBaseVectorGeoJs); - - /** - * ITS device layer, types available at http://transportal.cee.wisc.edu/its/inventory/ - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object|*} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - * @param {string} options.itsType the ITS device type, use the url flag at http://transportal.cee.wisc.edu/its/inventory/ - * @param {boolean} [options.addPopup=true] if the popup should be added automatically - * - * @param {string} [options.itsIcon=undefined] the ITS device type icon image see http://transportal.cee.wisc.edu/its/inventory/icons/ - * - * @param {object} [options.itsLineStyle=undefined] A single line style - * @param {string} options.itsLineStyle.color the line color as rgb or hex - * @param {number} [options.itsLineStyle.width=5] the line width - * - * @param {object} [options.itsIconConfig=undefined] The icon subtype configuration - * @param {string} options.itsIconConfig.prop The property used to define icon attribute symbolization - * @param {string} options.itsIconConfig.defaultName The default name to be used if no other match is found - * @param {string} options.itsIconConfig.defaultIcon The default icon to be used for no other matches - * @param {object} [options.itsIconConfig.iconArray=[]] an array, items with format [property, name, img] - * - * @param {object} [options.itsLineConfig=undefined] The property used to define icon attribute symbolization - * @param {string} options.itsLineConfig.prop The property used to define icon attribute symbolization - * @param {string} [options.itsLineConfig.defaultName=Other] The default name to be used if no other match is found - * @param {string} [options.itsLineConfig.defaultColor=red] The default line color to be used for no other matches - * @param {number} [options.itsLineConfig.defaultWidth] The default line width to be used for no other matches - * @param {object} [options.itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width = 5] - */ - - function LayerItsInventory(options) { - _classCallCheck(this, LayerItsInventory); - - if (typeof options.itsType !== 'string') { - throw 'its type must be defined'; - } - - var addToLegend = ''; - - // define a style with the helper function if it is not explicitly defined - if (typeof options.style == 'undefined') { - options.style = defineStyle(options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig); - addToLegend = defineLegend(options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig); - } - - options.params = _typeof(options.params) == 'object' ? options.params : {}; - _jquery2.default.extend(options.params, { format: 'JSON', resource: options.itsType }); - - //add any additional content to the legend - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerItsInventory).call(this, 'http://transportal.cee.wisc.edu/its/inventory/', options)); - - _this.addLegendContent(addToLegend); - - options.addPopup = typeof options.addPopup == 'boolean' ? options.addPopup : true; - - if (options.addPopup) { - _mapPopup2.default.addVectorPopup(_this, function (props) { - return '<iframe src="http://transportal.cee.wisc.edu/its/inventory/?feature=' + props['featureGuid'] + '" ' + 'height="250" width="350"></iframe>'; - }); - } - return _this; - } - - /** - * callback to generate the parameters passed in the get request - * @callback makeGetParams - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - */ - - - _createClass(LayerItsInventory, [{ - key: 'mapMoveMakeGetParams', - value: function mapMoveMakeGetParams(extent, zoomLevel) { - _get(Object.getPrototypeOf(LayerItsInventory.prototype), 'mapMoveMakeGetParams', this).call(this, extent, zoomLevel); - var lowerLeft = new _ol2.default.geom.Point([extent.minX, extent.minY]); - lowerLeft.transform(this.mapCrs, "EPSG:4326"); - var lowerLeftCoordinates = lowerLeft.getCoordinates(); - var upperRight = new _ol2.default.geom.Point([extent.maxX, extent.maxY]); - upperRight.transform(this.mapCrs, "EPSG:4326"); - var upperRightCoordinates = upperRight.getCoordinates(); - - _jquery2.default.extend(this.mapMoveParams, { - L: lowerLeftCoordinates[0], - R: upperRightCoordinates[0], - B: lowerLeftCoordinates[1], - T: upperRightCoordinates[1] - }); - } - }]); - - return LayerItsInventory; -}(_LayerBaseVectorGeoJson2.default); - -nm.LayerItsInventory = LayerItsInventory; -exports.default = LayerItsInventory; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerRealEarthTile.js b/_lib/layers/LayerRealEarthTile.js deleted file mode 100644 index 2e6ce7f8727723e49fe5b7b6c9b37360fb2bf7c5..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerRealEarthTile.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _LayerBaseXyzTile2 = require('./LayerBaseXyzTile'); - -var _LayerBaseXyzTile3 = _interopRequireDefault(_LayerBaseXyzTile2); - -var _RealEarthAnimateTile = require('../mixin/RealEarthAnimateTile'); - -var _RealEarthAnimateTile2 = _interopRequireDefault(_RealEarthAnimateTile); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 11/4/2015. - */ - -var mixIns = require('es6-mixins'); -var nm = (0, _provide2.default)('layers'); - -/** - * Real earth tile - * @augments LayerBaseXyzTile - */ - -var LayerRealEarthTile = function (_LayerBaseXyzTile) { - _inherits(LayerRealEarthTile, _LayerBaseXyzTile); - - /** - * The base layer for all others - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {string} options.products - the products to request - * @param {boolean} [options.hasTimes=false] If the layer is time dependent, fixed set of dates - * @param {boolean} [options.animate=false] if the layer should be animated - */ - - function LayerRealEarthTile(options) { - _classCallCheck(this, LayerRealEarthTile); - - options.animate = typeof options.animate == 'boolean' ? options.animate : false; - if (!options.animate) { - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerRealEarthTile).call(this, 'http://realearth.ssec.wisc.edu/api/image?products=' + options.products + '&x={x}&y={y}&z={z}', options)); - - _this._products = options.products; - } else { - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerRealEarthTile).call(this, '', options)); - - _this._products = options.products; - - if (!_this.timeInit) { - mixIns([_RealEarthAnimateTile2.default], _this); - } - _this.timeInit(); - } - return _possibleConstructorReturn(_this); - } - - return LayerRealEarthTile; -}(_LayerBaseXyzTile3.default); - -nm.LayerRealEarthTile = LayerRealEarthTile; -exports.default = LayerRealEarthTile; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/layers/LayerRealEarthVector.js b/_lib/layers/LayerRealEarthVector.js deleted file mode 100644 index 5648279153066f44563f52cced4794f57b79a5dd..0000000000000000000000000000000000000000 --- a/_lib/layers/LayerRealEarthVector.js +++ /dev/null @@ -1,97 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _LayerBaseVectorGeoJson = require('./LayerBaseVectorGeoJson'); - -var _LayerBaseVectorGeoJson2 = _interopRequireDefault(_LayerBaseVectorGeoJson); - -var _RealEarthAnimateVector = require('../mixin/RealEarthAnimateVector'); - -var _RealEarthAnimateVector2 = _interopRequireDefault(_RealEarthAnimateVector); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 11/13/2015. - */ - -var mixIns = require('es6-mixins'); -var nm = (0, _provide2.default)('layers'); - -/** - * Vector real earth vector - * @augments LayerBaseVectorGeoJson - */ - -var LayerVectorRealEarth = function (_LayerBaseVectorGeoJs) { - _inherits(LayerVectorRealEarth, _LayerBaseVectorGeoJs); - - /** - * Real Earth vector layer - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - * @param {object} [options.transform={}] SR transform, set as false for no transform - * @param {string} options.transform.dataProjection=EPSG:4326 the data CRS - * @param {string} options.transform.featureProjection=EPSG:3857 the feature/map CRS - * - * @param {string} options.products real earth products identifier - * @param {boolean} [options.animate=false] if the layer should be animated - */ - - function LayerVectorRealEarth(options) { - _classCallCheck(this, LayerVectorRealEarth); - - options.animate = typeof options.animate == 'boolean' ? options.animate : false; - if (!options.animate) { - options.params = { products: options.products }; - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerVectorRealEarth).call(this, 'http://realearth.ssec.wisc.edu/api/shapes', options)); - } else { - options.autoLoad = false; - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(LayerVectorRealEarth).call(this, '', options)); - - _this._products = options.products; - if (!_this.timeInit) { - mixIns([_RealEarthAnimateVector2.default], _this); - } - _this.timeInit(); - } - return _possibleConstructorReturn(_this); - } - - return LayerVectorRealEarth; -}(_LayerBaseVectorGeoJson2.default); - -nm.LayerVectorRealEarth = LayerVectorRealEarth; -exports.default = LayerVectorRealEarth; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/mixin/RealEarthAnimate.js b/_lib/mixin/RealEarthAnimate.js deleted file mode 100644 index 76f05a3a10ea99766fba4248f44c543c95b343f7..0000000000000000000000000000000000000000 --- a/_lib/mixin/RealEarthAnimate.js +++ /dev/null @@ -1,196 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 12/4/2015. - */ - - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _mapPopup = require('../olHelpers/mapPopup'); - -var _mapPopup2 = _interopRequireDefault(_mapPopup); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('mixin'); - -/** - * The GMT offset time in minutes - * @type {number} - */ -var offsetMinutes = new Date().getTimezoneOffset(); - -/** - * Mixin to get the product times - * Be sure to call getTimeInit after the mixin has been applied - */ - -var RealEarthAnimate = function () { - function RealEarthAnimate() { - _classCallCheck(this, RealEarthAnimate); - } - - _createClass(RealEarthAnimate, [{ - key: 'load', - - - /** - * override base layer load - */ - value: function load() {} - }, { - key: 'timeInit', - - - /** - * Call this after the mixin has been applied - */ - value: function timeInit() { - if (!this._products) { - throw 'this mixin must be applied to one of the RealEarth layer objects with this.products defined'; - } - - this._rawDateStrings = []; - this._localDates = []; - this.localTimes = []; - this._animateEnabled = true; - this._loaded = true; - this._currentTime = undefined; - this._currentIndex = undefined; - - var _this = this; - - _jquery2.default.get('http://realearth.ssec.wisc.edu/api/products', { products: this._products }, function (d) { - if (d.length == 0) { - console.log(this._products + ' layer not available or does not have times'); - - return; - } - d = d[0]; - for (var i = 0; i < d['times'].length; i++) { - _this._loadDates.call(_this, d['times'][i]); - } - _this.loadCallback.call(_this); - _this._loadLatest.call(_this); - }, 'json'); - } - - /** - * - * @returns {boolean} if animation enabled - */ - - }, { - key: '_loadDates', - - - /** - * Given the raw time string, add to the arrays to keep track of dates and cache - * @param {string} inString - input string to parse - * @returns {string} the converted string - * @protected - */ - value: function _loadDates(inString) { - var yr = inString.slice(0, 4); - var month = inString.slice(4, 6); - var d = inString.slice(6, 8); - var hr = inString.slice(9, 11); - var mn = inString.slice(11, 13); - var sec = inString.slice(13, 15); - - var rawDateStr = inString.replace('.', '_'); - this._rawDateStrings.push(rawDateStr); - - var dteStr = month + '/' + d + '/' + yr + ' ' + hr + ':' + mn + ':' + sec; - var newDte = new Date(dteStr); - newDte.setMinutes(newDte.getMinutes() - offsetMinutes); - this._localDates.push(newDte); - this.localTimes.push(newDte.getTime()); - - return rawDateStr; - } - - /** - * - * @protected - * @returns {boolean} if should continue - */ - - }, { - key: '_loadLatest', - value: function _loadLatest() { - _mapPopup2.default.closePopup(); - if (this.localTimes.length > 0) { - this._currentIndex = this.localTimes.length - 1; - - return true; - } else { - return false; - } - } - - /** - * - * @param {number} theTime - the time - * @returns {boolean} true if new index, false if the same or below lowest value - */ - - }, { - key: 'setLayerTime', - value: function setLayerTime(theTime) { - if (!this.visible) { - return false; - } - - this._currentTime = theTime; - - var newIndex = void 0; - - if (theTime < this.localTimes[0]) { - return false; - } else if (theTime > this.localTimes[this.localTimes.length - 1]) { - newIndex = this.localTimes.length - 1; - } - - for (var i = 0; i < this.localTimes.length; i++) { - if (this.localTimes[i] >= theTime) { - newIndex = i; - break; - } - } - - if (newIndex == this._currentIndex) { - return false; - } else { - this._currentIndex = newIndex; - _mapPopup2.default.closePopup(); - - return true; - } - } - }, { - key: 'animationEnabled', - get: function get() { - return this._animateEnabled; - } - }]); - - return RealEarthAnimate; -}(); - -nm.RealEarthAnimate = RealEarthAnimate; -exports.default = RealEarthAnimate; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/mixin/RealEarthAnimateTile.js b/_lib/mixin/RealEarthAnimateTile.js deleted file mode 100644 index be92929fbd7ab0c002a5a32eaaabbee6f6786a4c..0000000000000000000000000000000000000000 --- a/_lib/mixin/RealEarthAnimateTile.js +++ /dev/null @@ -1,100 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _RealEarthAnimate2 = require('./RealEarthAnimate'); - -var _RealEarthAnimate3 = _interopRequireDefault(_RealEarthAnimate2); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 12/4/2015. - */ - - -var nm = (0, _provide2.default)('mixin'); - -/** - * Animate real earth tile - * @augments RealEarthAnimate - */ - -var RealEarthAnimateTile = function (_RealEarthAnimate) { - _inherits(RealEarthAnimateTile, _RealEarthAnimate); - - function RealEarthAnimateTile() { - _classCallCheck(this, RealEarthAnimateTile); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(RealEarthAnimateTile).apply(this, arguments)); - } - - _createClass(RealEarthAnimateTile, [{ - key: 'load', - - - /** - * override base layer load - */ - value: function load() { - _get(Object.getPrototypeOf(RealEarthAnimateTile.prototype), 'load', this).call(this); - } - }, { - key: 'timeInit', - value: function timeInit() { - _get(Object.getPrototypeOf(RealEarthAnimateTile.prototype), 'timeInit', this).call(this); - this._sourceUrls = []; - } - }, { - key: '_loadDates', - value: function _loadDates(inString) { - var rawDte = _get(Object.getPrototypeOf(RealEarthAnimateTile.prototype), '_loadDates', this).call(this, inString); - var dteProductUrl = 'http://realearth.ssec.wisc.edu/api/image?products=' + this._products + '_' + rawDte + '&x={x}&y={y}&z={z}'; - this._sourceUrls.push(dteProductUrl); - } - - /** - * @protected - */ - - }, { - key: '_loadLatest', - value: function _loadLatest() { - if (_get(Object.getPrototypeOf(RealEarthAnimateTile.prototype), '_loadLatest', this).call(this)) { - this._source.setUrl(this._sourceUrls[this._sourceUrls.length - 1]); - } - } - }, { - key: 'setLayerTime', - value: function setLayerTime(theTime) { - if (_get(Object.getPrototypeOf(RealEarthAnimateTile.prototype), 'setLayerTime', this).call(this, theTime)) { - if (this.olLayer.getZIndex() < 0) { - this.olLayer.setZIndex(0); - } - this._source.setUrl(this._sourceUrls[this._currentIndex]); - } else { - this.olLayer.setZIndex(-1); - } - } - }]); - - return RealEarthAnimateTile; -}(_RealEarthAnimate3.default); - -nm.RealEarthAnimateTile = RealEarthAnimateTile; -exports.default = RealEarthAnimateTile; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/mixin/RealEarthAnimateVector.js b/_lib/mixin/RealEarthAnimateVector.js deleted file mode 100644 index 9faf973cbad2720a9c5ef20a6e44d1cb7b3bb707..0000000000000000000000000000000000000000 --- a/_lib/mixin/RealEarthAnimateVector.js +++ /dev/null @@ -1,159 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _RealEarthAnimate2 = require('./RealEarthAnimate'); - -var _RealEarthAnimate3 = _interopRequireDefault(_RealEarthAnimate2); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 12/4/2015. - */ - - -var nm = (0, _provide2.default)('mixin'); -var $ = require('jquery'); - -/** - * class mixin to animate RealEarth vector layers - * @augments RealEarthAnimate - */ - -var RealEarthAnimateVector = function (_RealEarthAnimate) { - _inherits(RealEarthAnimateVector, _RealEarthAnimate); - - function RealEarthAnimateVector() { - _classCallCheck(this, RealEarthAnimateVector); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(RealEarthAnimateVector).apply(this, arguments)); - } - - _createClass(RealEarthAnimateVector, [{ - key: 'load', - - - /** - * override base layer load - */ - value: function load() { - _get(Object.getPrototypeOf(RealEarthAnimateVector.prototype), 'load', this).call(this); - } - }, { - key: 'timeInit', - - - /** - * Call this after the mixin has been applied - */ - value: function timeInit() { - _get(Object.getPrototypeOf(RealEarthAnimateVector.prototype), 'timeInit', this).call(this); - this._rawTimesLookup = {}; - this._dataCache = []; - } - - /** - * Given the raw time string, add to the arrays to keep track of dates and cache - * @param {string} inString - input date string - * @protected - */ - - }, { - key: '_loadDates', - value: function _loadDates(inString) { - var rawDte = _get(Object.getPrototypeOf(RealEarthAnimateVector.prototype), '_loadDates', this).call(this, inString); - this._dataCache.push(null); - this._rawTimesLookup[rawDte] = null; - } - - /** - * @protected - */ - - }, { - key: '_loadLatest', - value: function _loadLatest() { - if (_get(Object.getPrototypeOf(RealEarthAnimateVector.prototype), '_loadLatest', this).call(this)) { - this._loadAtTimeIndex.call(this, this._currentIndex); - } - } - // - //http://realearth.ssec.wisc.edu/api/image?products=nexrhres_20160108_212500&x=1&y=5&z=4 - // - // 20160108.205500 - // http://realearth.ssec.wisc.edu/api/image?products=nexrhres_20160108_205500&x=34&y=46&z=7 - - /** - * Load the features at the date index specified - * @param {number} i the index of the features to be loaded by date - * @param {boolean} [setAsSource=true] set to false to trigger cache load only - * @private - */ - - }, { - key: '_loadAtTimeIndex', - value: function _loadAtTimeIndex(i, setAsSource) { - var _this3 = this; - - setAsSource = typeof setAsSource == 'boolean' ? setAsSource : true; - if (this._dataCache[i] != null) { - this.source.clear(); - this._loadFeatures(this._dataCache[i]); - } else { - (function () { - var _this = _this3; - $.get('http://realearth.ssec.wisc.edu:80/api/shapes', { products: _this3._products + '_' + _this3._rawDateStrings[i] }, function (d) { - _this._dataCache[i] = d; - _this._rawTimesLookup[_this._rawDateStrings[i]] = d; - if (setAsSource) { - _this.source.clear(); - _this._loadFeatures.call(_this, _this._dataCache[i]); - } - }, 'json'); - })(); - } - } - - /** - * helper to load the features at the index specified - * @param {object} geojObj - the geojson object - * @private - */ - - }, { - key: '_loadFeatures', - value: function _loadFeatures(geojObj) { - this.source.addFeatures(this._geoJsonFormat.readFeatures(geojObj, this._transform)); - } - }, { - key: 'setLayerTime', - value: function setLayerTime(theTime) { - if (_get(Object.getPrototypeOf(RealEarthAnimateVector.prototype), 'setLayerTime', this).call(this, theTime)) { - this._loadAtTimeIndex(this._currentIndex); - } else { - this.source.clear(); - } - } - }]); - - return RealEarthAnimateVector; -}(_RealEarthAnimate3.default); - -nm.RealEarthAnimateVector = RealEarthAnimateVector; -exports.default = RealEarthAnimateVector; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/ol/ol-build.js b/_lib/ol/ol-build.js deleted file mode 100644 index a7280d86053c612d07ede905dc79b1760667a729..0000000000000000000000000000000000000000 --- a/_lib/ol/ol-build.js +++ /dev/null @@ -1,408 +0,0 @@ -// OpenLayers 3. See http://openlayers.org/ -// License: https://raw.githubusercontent.com/openlayers/ol3/master/LICENSE.md -(function (root, factory) { - if (typeof exports === "object") { - module.exports = factory(); - } else if (typeof define === "function" && define.amd) { - define([], factory); - } else { - root.ol = factory(); - } -}(this, function () { - var OPENLAYERS = {}; - var n,x=this;function E(b,c,d){b=b.split(".");d=d||x;b[0]in d||!d.execScript||d.execScript("var "+b[0]);for(var e;b.length&&(e=b.shift());)b.length||void 0===c?d[e]?d=d[e]:d=d[e]={}:d[e]=c}function aa(b){b.qa=function(){return b.rc?b.rc:b.rc=new b}} -function ba(b){var c=typeof b;if("object"==c)if(b){if(b instanceof Array)return"array";if(b instanceof Object)return c;var d=Object.prototype.toString.call(b);if("[object Window]"==d)return"object";if("[object Array]"==d||"number"==typeof b.length&&"undefined"!=typeof b.splice&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("splice"))return"array";if("[object Function]"==d||"undefined"!=typeof b.call&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("call"))return"function"}else return"null"; -else if("function"==c&&"undefined"==typeof b.call)return"object";return c}function ca(b){var c=ba(b);return"array"==c||"object"==c&&"number"==typeof b.length}function da(b){return"string"==typeof b}function ea(b){return"number"==typeof b}function ga(b){return"function"==ba(b)}function ha(b){var c=typeof b;return"object"==c&&null!=b||"function"==c}function I(b){return b[ia]||(b[ia]=++ja)}var ia="closure_uid_"+(1E9*Math.random()>>>0),ja=0;function ka(b,c,d){return b.call.apply(b.bind,arguments)} -function la(b,c,d){if(!b)throw Error();if(2<arguments.length){var e=Array.prototype.slice.call(arguments,2);return function(){var d=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(d,e);return b.apply(c,d)}}return function(){return b.apply(c,arguments)}}function ma(b,c,d){ma=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ka:la;return ma.apply(null,arguments)} -function na(b,c){var d=Array.prototype.slice.call(arguments,1);return function(){var c=d.slice();c.push.apply(c,arguments);return b.apply(this,c)}}function M(b,c){function d(){}d.prototype=c.prototype;b.Y=c.prototype;b.prototype=new d;b.prototype.constructor=b;b.Me=function(b,d,g){for(var h=Array(arguments.length-2),k=2;k<arguments.length;k++)h[k-2]=arguments[k];return c.prototype[d].apply(b,h)}};var oa;function N(){};var pa;var qa=String.prototype.trim?function(b){return b.trim()}:function(b){return b.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};function sa(b){if(!ta.test(b))return b;-1!=b.indexOf("&")&&(b=b.replace(ua,"&"));-1!=b.indexOf("<")&&(b=b.replace(va,"<"));-1!=b.indexOf(">")&&(b=b.replace(wa,">"));-1!=b.indexOf('"')&&(b=b.replace(xa,"""));-1!=b.indexOf("'")&&(b=b.replace(ya,"'"));-1!=b.indexOf("\x00")&&(b=b.replace(za,"�"));return b}var ua=/&/g,va=/</g,wa=/>/g,xa=/"/g,ya=/'/g,za=/\x00/g,ta=/[\x00&<>"']/; -function Aa(b,c){return b<c?-1:b>c?1:0};function Ba(b,c,d){return Math.min(Math.max(b,c),d)}var Ca=function(){var b;"cosh"in Math?b=Math.cosh:b=function(b){b=Math.exp(b);return(b+1/b)/2};return b}();function Da(b,c){var d=b%c;return 0>d*c?d+c:d};function Ea(b){return function(c){if(c)return[Ba(c[0],b[0],b[2]),Ba(c[1],b[1],b[3])]}}function Fa(b){return b};function Ga(b,c){return b>c?1:b<c?-1:0}function Ha(b,c,d){var e=b.length;if(b[0]<=c)return 0;if(!(c<=b[e-1]))if(0<d)for(d=1;d<e;++d){if(b[d]<c)return d-1}else if(0>d)for(d=1;d<e;++d){if(b[d]<=c)return d}else for(d=1;d<e;++d){if(b[d]==c)return d;if(b[d]<c)return b[d-1]-c<c-b[d]?d-1:d}return e-1}function Ia(b){return b.reduce(function(b,d){return Array.isArray(d)?b.concat(Ia(d)):b.concat(d)},[])}function Ja(b,c){var d,e=ca(c)?c:[c],f=e.length;for(d=0;d<f;d++)b[b.length]=e[d]} -function Ka(b,c){var d=b.indexOf(c),e=-1<d;e&&b.splice(d,1);return e}function La(b,c){var d=b.length;if(d!==c.length)return!1;for(var e=0;e<d;e++)if(b[e]!==c[e])return!1;return!0}function Ma(b){var c=Na,d=b.length,e=Array(b.length),f;for(f=0;f<d;f++)e[f]={index:f,value:b[f]};e.sort(function(b,d){return c(b.value,d.value)||b.index-d.index});for(f=0;f<b.length;f++)b[f]=e[f].value};function Oa(b){return function(c,d,e){if(void 0!==c)return c=Ha(b,c,e),c=Ba(c+d,0,b.length-1),b[c]}}function Pa(b,c,d){return function(e,f,g){if(void 0!==e)return e=Math.max(Math.floor(Math.log(c/e)/Math.log(b)+(0<g?0:0>g?1:.5))+f,0),void 0!==d&&(e=Math.min(e,d)),c/Math.pow(b,e)}};function Qa(b){if(void 0!==b)return 0}function Ra(b,c){if(void 0!==b)return b+c}function Sa(b){var c=2*Math.PI/b;return function(b,e){if(void 0!==b)return b=Math.floor((b+e)/c+.5)*c}}function Ta(){var b=5*Math.PI/180;return function(c,d){if(void 0!==c)return Math.abs(c+d)<=b?0:c+d}};function Ua(b,c,d){this.center=b;this.resolution=c;this.rotation=d};var Va="function"===typeof Object.assign?Object.assign:function(b,c){if(void 0===b||null===b)throw new TypeError("Cannot convert undefined or null to object");for(var d=Object(b),e=1,f=arguments.length;e<f;++e){var g=arguments[e];if(void 0!==g&&null!==g)for(var h in g)g.hasOwnProperty(h)&&(d[h]=g[h])}return d};function Wa(b){for(var c in b)delete b[c]}function Xa(b){var c=[],d;for(d in b)c.push(b[d]);return c}function Za(b){for(var c in b)return!1;return!c};var $a="olm_"+(1E4*Math.random()|0);function ab(b){function c(c){var e=b.listener,f=b.bc||b.target;b.ec&&P(b);return e.call(f,c)}return b.cc=c}function bb(b,c,d,e){for(var f,g=0,h=b.length;g<h;++g)if(f=b[g],f.listener===c&&f.bc===d)return e&&(f.deleteIndex=g),f}function cb(b,c){var d=b[$a];return d?d[c]:void 0}function db(b){var c=b[$a];c||(c=b[$a]={});return c} -function eb(b,c){var d=cb(b,c);if(d){for(var e=0,f=d.length;e<f;++e)b.removeEventListener(c,d[e].cc),Wa(d[e]);d.length=0;if(d=b[$a])delete d[c],0===Object.keys(d).length&&delete b[$a]}}function R(b,c,d,e,f){var g=db(b),h=g[c];h||(h=g[c]=[]);(g=bb(h,d,e,!1))?f||(g.ec=!1):(g={bc:e,ec:!!f,listener:d,target:b,type:c},b.addEventListener(c,ab(g)),h.push(g));return g}function fb(b,c,d,e){(b=cb(b,c))&&(d=bb(b,d,e,!0))&&P(d)} -function P(b){if(b&&b.target){b.target.removeEventListener(b.type,b.cc);var c=cb(b.target,b.type);if(c){var d="deleteIndex"in b?b.deleteIndex:c.indexOf(b);-1!==d&&c.splice(d,1);0===c.length&&eb(b.target,b.type)}Wa(b)}}function gb(b){var c=db(b),d;for(d in c)eb(b,d)};function hb(){}hb.prototype.ha=!1;function ib(b){b.ha||(b.ha=!0,b.K())}hb.prototype.K=N;function S(b,c){this.type=b;this.target=c||null}S.prototype.preventDefault=S.prototype.stopPropagation=function(){this.me=!0};function jb(b){b.stopPropagation()}function kb(b){b.preventDefault()};function lb(){this.H={};this.B={}}M(lb,hb);lb.prototype.addEventListener=function(b,c){var d=this.B[b];d||(d=this.B[b]=[]);-1===d.indexOf(c)&&d.push(c)};function T(b,c){var d="string"===typeof c?new S(c):c,e=d.type;d.target=b;var f=b.B[e],g;if(f){e in b.H||(b.H[e]=0);for(var h=0,k=f.length;h<k;++h)if(!1===f[h].call(b,d)||d.me){g=!1;break}d=b.H[e];for(delete b.H[e];d--;)b.removeEventListener(e,N);return g}}lb.prototype.K=function(){gb(this)}; -function mb(b,c){return c?c in b.B:0<Object.keys(b.B).length}lb.prototype.removeEventListener=function(b,c){var d=this.B[b];if(d){var e=d.indexOf(c);b in this.H?(d[e]=N,++this.H[b]):(d.splice(e,1),0===d.length&&delete this.B[b])}};function nb(){lb.call(this);this.f=0}M(nb,lb);nb.prototype.w=function(){++this.f;T(this,"change")};nb.prototype.V=function(b,c,d){if(Array.isArray(b)){for(var e=b.length,f=Array(e),g=0;g<e;++g)f[g]=R(this,b[g],c,d);return f}return R(this,b,c,d)};nb.prototype.Rc=function(b,c,d){if(Array.isArray(b)){for(var e=b.length,f=Array(e),g=0;g<e;++g)f[g]=R(this,b[g],c,d,!0);return f}return R(this,b,c,d,!0)};function ob(b,c,d){S.call(this,b);this.key=c;this.oldValue=d}M(ob,S);function U(b){nb.call(this);I(this);this.I={};void 0!==b&&this.l(b)}M(U,nb);var pb={};function qb(b){return pb.hasOwnProperty(b)?pb[b]:pb[b]="change:"+b}U.prototype.get=function(b){var c;this.I.hasOwnProperty(b)&&(c=this.I[b]);return c};U.prototype.ua=function(){return Va({},this.I)};U.prototype.set=function(b,c,d){d?this.I[b]=c:(d=this.I[b],this.I[b]=c,d!==c&&(c=qb(b),T(this,new ob(c,b,d)),T(this,new ob("propertychange",b,d))))}; -U.prototype.l=function(b,c){for(var d in b)this.set(d,b[d],c)};function rb(b,c,d){void 0===d&&(d=[0,0]);d[0]=b[0]*c+.5|0;d[1]=b[1]*c+.5|0;return d}function sb(b,c){if(Array.isArray(b))return b;void 0===c?c=[b,b]:(c[0]=b,c[1]=b);return c};function tb(b,c){b[0]+=c[0];b[1]+=c[1]}function ub(b,c){var d=Math.cos(c),e=Math.sin(c),f=b[1]*d+b[0]*e;b[0]=b[0]*d-b[1]*e;b[1]=f};function vb(b){this.length=b.length||b;for(var c=0;c<this.length;c++)this[c]=b[c]||0}vb.prototype.BYTES_PER_ELEMENT=4;vb.prototype.set=function(b,c){c=c||0;for(var d=0;d<b.length&&c+d<this.length;d++)this[c+d]=b[d]};vb.prototype.toString=Array.prototype.join;"undefined"==typeof Float32Array&&(vb.BYTES_PER_ELEMENT=4,vb.prototype.BYTES_PER_ELEMENT=vb.prototype.BYTES_PER_ELEMENT,vb.prototype.set=vb.prototype.set,vb.prototype.toString=vb.prototype.toString,E("Float32Array",vb,void 0));function wb(b){this.length=b.length||b;for(var c=0;c<this.length;c++)this[c]=b[c]||0}wb.prototype.BYTES_PER_ELEMENT=8;wb.prototype.set=function(b,c){c=c||0;for(var d=0;d<b.length&&c+d<this.length;d++)this[c+d]=b[d]};wb.prototype.toString=Array.prototype.join;if("undefined"==typeof Float64Array){try{wb.BYTES_PER_ELEMENT=8}catch(b){}wb.prototype.BYTES_PER_ELEMENT=wb.prototype.BYTES_PER_ELEMENT;wb.prototype.set=wb.prototype.set;wb.prototype.toString=wb.prototype.toString;E("Float64Array",wb,void 0)};function xb(b,c,d,e,f){b[0]=c;b[1]=d;b[2]=e;b[3]=f};function yb(){var b=Array(16);zb(b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return b}function Ab(){var b=Array(16);zb(b,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return b}function zb(b,c,d,e,f,g,h,k,l,m,p,q,r,u,w,y,z){b[0]=c;b[1]=d;b[2]=e;b[3]=f;b[4]=g;b[5]=h;b[6]=k;b[7]=l;b[8]=m;b[9]=p;b[10]=q;b[11]=r;b[12]=u;b[13]=w;b[14]=y;b[15]=z} -function Bb(b,c){b[0]=c[0];b[1]=c[1];b[2]=c[2];b[3]=c[3];b[4]=c[4];b[5]=c[5];b[6]=c[6];b[7]=c[7];b[8]=c[8];b[9]=c[9];b[10]=c[10];b[11]=c[11];b[12]=c[12];b[13]=c[13];b[14]=c[14];b[15]=c[15]}function Cb(b){b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1} -function Db(b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],k=b[5],l=b[6],m=b[7],p=b[8],q=b[9],r=b[10],u=b[11],w=b[12],y=b[13],z=b[14],D=b[15],t=d*k-e*h,v=d*l-f*h,B=d*m-g*h,F=e*l-f*k,C=e*m-g*k,G=f*m-g*l,J=p*y-q*w,A=p*z-r*w,H=p*D-u*w,O=q*z-r*y,Q=q*D-u*y,L=r*D-u*z,K=t*L-v*Q+B*O+F*H-C*A+G*J;0!=K&&(K=1/K,c[0]=(k*L-l*Q+m*O)*K,c[1]=(-e*L+f*Q-g*O)*K,c[2]=(y*G-z*C+D*F)*K,c[3]=(-q*G+r*C-u*F)*K,c[4]=(-h*L+l*H-m*A)*K,c[5]=(d*L-f*H+g*A)*K,c[6]=(-w*G+z*B-D*v)*K,c[7]=(p*G-r*B+u*v)*K,c[8]=(h*Q-k*H+m*J)*K,c[9]=(-d*Q+ -e*H-g*J)*K,c[10]=(w*C-y*B+D*t)*K,c[11]=(-p*C+q*B-u*t)*K,c[12]=(-h*O+k*A-l*J)*K,c[13]=(d*O-e*A+f*J)*K,c[14]=(-w*F+y*v-z*t)*K,c[15]=(p*F-q*v+r*t)*K)}function Eb(b,c,d){var e=b[1]*c+b[5]*d+0*b[9]+b[13],f=b[2]*c+b[6]*d+0*b[10]+b[14],g=b[3]*c+b[7]*d+0*b[11]+b[15];b[12]=b[0]*c+b[4]*d+0*b[8]+b[12];b[13]=e;b[14]=f;b[15]=g}function Fb(b,c,d){zb(b,b[0]*c,b[1]*c,b[2]*c,b[3]*c,b[4]*d,b[5]*d,b[6]*d,b[7]*d,1*b[8],1*b[9],1*b[10],1*b[11],b[12],b[13],b[14],b[15])} -function Gb(b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],k=b[5],l=b[6],m=b[7],p=Math.cos(c),q=Math.sin(c);b[0]=d*p+h*q;b[1]=e*p+k*q;b[2]=f*p+l*q;b[3]=g*p+m*q;b[4]=d*-q+h*p;b[5]=e*-q+k*p;b[6]=f*-q+l*p;b[7]=g*-q+m*p}new Float64Array(3);new Float64Array(3);new Float64Array(4);new Float64Array(4);new Float64Array(4);new Float64Array(16);function Hb(b){for(var c=Ib(),d=0,e=b.length;d<e;++d)Jb(c,b[d]);return c}function Kb(b,c,d){return d?(d[0]=b[0]-c,d[1]=b[1]-c,d[2]=b[2]+c,d[3]=b[3]+c,d):[b[0]-c,b[1]-c,b[2]+c,b[3]+c]}function Lb(b,c){return c?(c[0]=b[0],c[1]=b[1],c[2]=b[2],c[3]=b[3],c):b.slice()}function Mb(b,c){return b[0]<=c[0]&&c[2]<=b[2]&&b[1]<=c[1]&&c[3]<=b[3]}function Ib(){return[Infinity,Infinity,-Infinity,-Infinity]}function Nb(b,c,d,e,f){return f?(f[0]=b,f[1]=c,f[2]=d,f[3]=e,f):[b,c,d,e]} -function Ob(b){return Nb(Infinity,Infinity,-Infinity,-Infinity,b)}function Pb(b,c){var d=b[0],e=b[1];return Nb(d,e,d,e,c)}function Qb(b,c){return b[0]==c[0]&&b[2]==c[2]&&b[1]==c[1]&&b[3]==c[3]}function Rb(b,c){c[0]<b[0]&&(b[0]=c[0]);c[2]>b[2]&&(b[2]=c[2]);c[1]<b[1]&&(b[1]=c[1]);c[3]>b[3]&&(b[3]=c[3])}function Jb(b,c){c[0]<b[0]&&(b[0]=c[0]);c[0]>b[2]&&(b[2]=c[0]);c[1]<b[1]&&(b[1]=c[1]);c[1]>b[3]&&(b[3]=c[1])} -function Sb(b,c,d,e,f){for(;d<e;d+=f){var g=b,h=c[d],k=c[d+1];g[0]=Math.min(g[0],h);g[1]=Math.min(g[1],k);g[2]=Math.max(g[2],h);g[3]=Math.max(g[3],k)}return b}function Tb(b){var c=0;b[2]<b[0]||b[3]<b[1]||(c=Ub(b)*Vb(b));return c}function Wb(b){return[b[0],b[1]]}function Xb(b){return[(b[0]+b[2])/2,(b[1]+b[3])/2]} -function Yb(b,c,d,e){var f=c*e[0]/2;e=c*e[1]/2;c=Math.cos(d);var g=Math.sin(d);d=f*c;f*=g;c*=e;var h=e*g,k=b[0],l=b[1];b=k-d+h;e=k-d-h;g=k+d-h;d=k+d+h;var h=l-f-c,k=l-f+c,m=l+f+c,f=l+f-c;return Nb(Math.min(b,e,g,d),Math.min(h,k,m,f),Math.max(b,e,g,d),Math.max(h,k,m,f),void 0)}function Vb(b){return b[3]-b[1]}function Zb(b,c){var d=Ib();$b(b,c)&&(d[0]=b[0]>c[0]?b[0]:c[0],d[1]=b[1]>c[1]?b[1]:c[1],d[2]=b[2]<c[2]?b[2]:c[2],d[3]=b[3]<c[3]?b[3]:c[3]);return d}function ac(b){return[b[0],b[3]]} -function Ub(b){return b[2]-b[0]}function $b(b,c){return b[0]<=c[2]&&b[2]>=c[0]&&b[1]<=c[3]&&b[3]>=c[1]};function bc(){return!0}function cc(){return!1};/* - - Latitude/longitude spherical geodesy formulae taken from - http://www.movable-type.co.uk/scripts/latlong.html - Licensed under CC-BY-3.0. -*/ -function dc(b){this.radius=b}function ec(b,c){var d=b[1]*Math.PI/180,e=c[1]*Math.PI/180,f=(e-d)/2,g=(c[0]-b[0])*Math.PI/180/2,d=Math.sin(f)*Math.sin(f)+Math.sin(g)*Math.sin(g)*Math.cos(d)*Math.cos(e);return 2*fc.radius*Math.atan2(Math.sqrt(d),Math.sqrt(1-d))} -dc.prototype.offset=function(b,c,d){var e=b[1]*Math.PI/180;c/=this.radius;var f=Math.asin(Math.sin(e)*Math.cos(c)+Math.cos(e)*Math.sin(c)*Math.cos(d));return[180*(b[0]*Math.PI/180+Math.atan2(Math.sin(d)*Math.sin(c)*Math.cos(e),Math.cos(c)-Math.sin(e)*Math.sin(f)))/Math.PI,180*f/Math.PI]};var fc=new dc(6370997);var gc={};gc.degrees=2*Math.PI*fc.radius/360;gc.ft=.3048;gc.m=1;gc["us-ft"]=1200/3937; -function hc(b){this.na=b.code;this.b=b.units;this.h=void 0!==b.extent?b.extent:null;this.f=void 0!==b.global?b.global:!1;this.a=!(!this.f||!this.h);this.i=void 0!==b.getPointResolution?b.getPointResolution:this.j;this.c=null;this.g=b.metersPerUnit;var c=ic,d=b.code,e=jc||x.proj4;if("function"==typeof e&&void 0===c[d]){var f=e.defs(d);if(void 0!==f){void 0===b.metersPerUnit&&(this.g=f.to_meter);void 0===b.units&&(this.b=f.units);var g,h;for(g in c)if(b=e.defs(g),void 0!==b)if(c=kc(g),b===f)lc([c,this]); -else{h=e(g,d);b=h.forward;h=h.inverse;var c=kc(c),k=kc(this);mc(c,k,nc(b));mc(k,c,nc(h))}}}}hc.prototype.l=function(){return this.na};hc.prototype.C=function(){return this.h};function oc(b){return b.g||gc[b.b]}hc.prototype.j=function(b,c){if("degrees"==this.b)return b;var d=pc(this,kc("EPSG:4326")),e=[c[0]-b/2,c[1],c[0]+b/2,c[1],c[0],c[1]-b/2,c[0],c[1]+b/2],e=d(e,e,2),d=(ec(e.slice(0,2),e.slice(2,4))+ec(e.slice(4,6),e.slice(6,8)))/2,e=oc(this);void 0!==e&&(d/=e);return d}; -hc.prototype.getPointResolution=function(b,c){return this.i(b,c)};var ic={},qc={},jc=null;function lc(b){rc(b);b.forEach(function(c){b.forEach(function(b){c!==b&&mc(c,b,sc)})})}function tc(b){ic[b.na]=b;mc(b,b,sc)}function rc(b){var c=[];b.forEach(function(b){c.push(tc(b))})}function uc(b){return b?"string"===typeof b?kc(b):b:kc("EPSG:3857")}function mc(b,c,d){b=b.na;c=c.na;b in qc||(qc[b]={});qc[b][c]=d} -function nc(b){return function(c,d,e){var f=c.length;e=void 0!==e?e:2;d=void 0!==d?d:Array(f);var g,h;for(h=0;h<f;h+=e)for(g=b([c[h],c[h+1]]),d[h]=g[0],d[h+1]=g[1],g=e-1;2<=g;--g)d[h+g]=c[h+g];return d}}function kc(b){var c;if(b instanceof hc)c=b;else if("string"===typeof b){c=ic[b];var d=jc||x.proj4;void 0===c&&"function"==typeof d&&void 0!==d.defs(b)&&(c=new hc({code:b}),tc(c))}else c=null;return c}function vc(b,c){if(b===c)return!0;var d=b.b===c.b;return b.na===c.na?d:pc(b,c)===sc&&d} -function wc(b,c){var d=kc(b),e=kc(c);return pc(d,e)}function pc(b,c){var d=b.na,e=c.na,f;d in qc&&e in qc[d]&&(f=qc[d][e]);void 0===f&&(f=xc);return f}function xc(b,c){if(void 0!==c&&b!==c){for(var d=0,e=b.length;d<e;++d)c[d]=b[d];b=c}return b}function sc(b,c){var d;if(void 0!==c){d=0;for(var e=b.length;d<e;++d)c[d]=b[d];d=c}else d=b.slice();return d};function yc(){U.call(this);this.u=Ib();this.v=-1;this.h={};this.s=this.i=0}M(yc,U);yc.prototype.C=function(b){this.v!=this.f&&(this.u=this.ab(this.u),this.v=this.f);var c=this.u;b?(b[0]=c[0],b[1]=c[1],b[2]=c[2],b[3]=c[3]):b=c;return b};yc.prototype.o=function(b,c){this.wb(wc(b,c));return this};function zc(b,c,d,e,f,g){var h=f[0],k=f[1],l=f[4],m=f[5],p=f[12];f=f[13];for(var q=g?g:[],r=0;c<d;c+=e){var u=b[c],w=b[c+1];q[r++]=h*u+l*w+p;q[r++]=k*u+m*w+f}g&&q.length!=r&&(q.length=r);return q};function Ac(){yc.call(this);this.g="XY";this.b=2;this.a=null}M(Ac,yc);function Bc(b){if("XY"==b)return 2;if("XYZ"==b||"XYM"==b)return 3;if("XYZM"==b)return 4}n=Ac.prototype;n.ab=function(b){var c=this.a,d=this.a.length,e=this.b;b=Ob(b);return Sb(b,c,0,d,e)}; -n.Hb=function(b){this.s!=this.f&&(Wa(this.h),this.i=0,this.s=this.f);if(0>b||0!==this.i&&b<=this.i)return this;var c=b.toString();if(this.h.hasOwnProperty(c))return this.h[c];var d=this.Ea(b);if(d.a.length<this.a.length)return this.h[c]=d;this.i=b;return this};n.Ea=function(){return this};function V(b,c,d){b.b=Bc(c);b.g=c;b.a=d}function Cc(b,c,d,e){if(c)d=Bc(c);else{for(c=0;c<e;++c){if(0===d.length){b.g="XY";b.b=2;return}d=d[0]}d=d.length;c=2==d?"XY":3==d?"XYZ":4==d?"XYZM":void 0}b.g=c;b.b=d} -n.wb=function(b){this.a&&(b(this.a,this.a,this.b),this.w())};n.rotate=function(b,c){var d=this.a;if(d){for(var e=d.length,f=this.b,g=d?d:[],h=Math.cos(b),k=Math.sin(b),l=c[0],m=c[1],p=0,q=0;q<e;q+=f){var r=d[q]-l,u=d[q+1]-m;g[p++]=l+r*h-u*k;g[p++]=m+r*k+u*h;for(r=q+2;r<q+f;++r)g[p++]=d[r]}d&&g.length!=p&&(g.length=p);this.w()}};function Dc(b,c){var d=0,e,f;e=0;for(f=c.length;e<f;++e)b[d++]=c[e];return d}function Ec(b,c,d,e){var f,g;f=0;for(g=d.length;f<g;++f){var h=d[f],k;for(k=0;k<e;++k)b[c++]=h[k]}return c}function Fc(b,c,d,e,f){f=f?f:[];var g=0,h,k;h=0;for(k=d.length;h<k;++h)c=Ec(b,c,d[h],e),f[g++]=c;f.length=g;return f};function Gc(b,c,d,e,f){f=void 0!==f?f:[];for(var g=0;c<d;c+=e)f[g++]=b.slice(c,c+e);f.length=g;return f}function Hc(b,c,d,e,f){f=void 0!==f?f:[];var g=0,h,k;h=0;for(k=d.length;h<k;++h){var l=d[h];f[g++]=Gc(b,c,l,e,f[g]);c=l}f.length=g;return f};function Ic(b,c,d,e,f,g,h){var k=(d-c)/e;if(3>k){for(;c<d;c+=e)g[h++]=b[c],g[h++]=b[c+1];return h}var l=Array(k);l[0]=1;l[k-1]=1;d=[c,d-e];for(var m=0,p;0<d.length;){var q=d.pop(),r=d.pop(),u=0,w=b[r],y=b[r+1],z=b[q],D=b[q+1];for(p=r+e;p<q;p+=e){var t,v=b[p];t=b[p+1];var B=w,F=y,C=z-B,G=D-F;if(0!==C||0!==G){var J=((v-B)*C+(t-F)*G)/(C*C+G*G);1<J?(B=z,F=D):0<J&&(B+=C*J,F+=G*J)}v=B-v;t=F-t;t=v*v+t*t;t>u&&(m=p,u=t)}u>f&&(l[(m-c)/e]=1,r+e<m&&d.push(r,m),m+e<q&&d.push(m,q))}for(p=0;p<k;++p)l[p]&&(g[h++]= -b[c+p*e],g[h++]=b[c+p*e+1]);return h} -function Jc(b,c,d,e,f,g,h,k){var l,m;l=0;for(m=d.length;l<m;++l){var p=d[l];a:{var q=b,r=p,u=e,w=f,y=g;if(c!=r){var z=w*Math.round(q[c]/w),D=w*Math.round(q[c+1]/w);c+=u;y[h++]=z;y[h++]=D;var t=void 0,v=void 0;do if(t=w*Math.round(q[c]/w),v=w*Math.round(q[c+1]/w),c+=u,c==r){y[h++]=t;y[h++]=v;break a}while(t==z&&v==D);for(;c<r;){var B,F;B=w*Math.round(q[c]/w);F=w*Math.round(q[c+1]/w);c+=u;if(B!=t||F!=v){var C=t-z,G=v-D,J=B-z,A=F-D;C*A==G*J&&(0>C&&J<C||C==J||0<C&&J>C)&&(0>G&&A<G||G==A||0<G&&A>G)||(y[h++]= -t,y[h++]=v,z=t,D=v);t=B;v=F}}y[h++]=t;y[h++]=v}}k.push(h);c=p}return h};function Kc(b,c){Ac.call(this);this.X(b,c)}M(Kc,Ac);n=Kc.prototype;n.clone=function(){var b=new Kc(null);V(b,this.g,this.a.slice());b.w();return b};n.oa=function(){return Gc(this.a,0,this.a.length,this.b)};n.Ea=function(b){var c=[];c.length=Ic(this.a,0,this.a.length,this.b,b,c,0);b=new Kc(null);V(b,"XY",c);b.w();return b};n.U=function(){return"LinearRing"};n.X=function(b,c){b?(Cc(this,c,b,1),this.a||(this.a=[]),this.a.length=Ec(this.a,0,b,this.b)):V(this,"XY",null);this.w()};function Lc(b,c){Ac.call(this);this.X(b,c)}M(Lc,Ac);n=Lc.prototype;n.clone=function(){var b=new Lc(null);V(b,this.g,this.a.slice());b.w();return b};n.oa=function(){return this.a?this.a.slice():[]};n.ab=function(b){return Pb(this.a,b)};n.U=function(){return"Point"};n.X=function(b,c){b?(Cc(this,c,b,0),this.a||(this.a=[]),this.a.length=Dc(this.a,b)):V(this,"XY",null);this.w()};function Mc(b,c,d,e,f,g){for(var h=!1,k=b[d-e],l=b[d-e+1];c<d;c+=e){var m=b[c],p=b[c+1];l>g!=p>g&&f<(m-k)*(g-l)/(p-l)+k&&(h=!h);k=m;l=p}return h};function Nc(b,c,d,e,f,g,h){var k,l,m,p,q,r=f[g+1],u=[],w=d[0];m=b[w-e];q=b[w-e+1];for(k=c;k<w;k+=e){p=b[k];l=b[k+1];if(r<=q&&l<=r||q<=r&&r<=l)m=(r-q)/(l-q)*(p-m)+m,u.push(m);m=p;q=l}w=NaN;q=-Infinity;u.sort(Ga);m=u[0];k=1;for(l=u.length;k<l;++k){p=u[k];var y=Math.abs(p-m);if(y>q){m=(m+p)/2;var z;a:if(0!==d.length&&Mc(b,c,d[0],e,m,r)){var D=z=void 0;z=1;for(D=d.length;z<D;++z)if(Mc(b,d[z-1],d[z],e,m,r)){z=!1;break a}z=!0}else z=!1;z&&(w=m,q=y)}m=p}isNaN(w)&&(w=f[g]);return h?(h.push(w,r),h):[w,r]} -;function Oc(b,c,d,e){for(var f=0,g=b[d-e],h=b[d-e+1];c<d;c+=e)var k=b[c],l=b[c+1],f=f+(k-g)*(l+h),g=k,h=l;return 0<f}function Pc(b,c,d,e){var f=0;e=void 0!==e?e:!1;var g,h;g=0;for(h=c.length;g<h;++g){var k=c[g],f=Oc(b,f,k,d);if(0===g){if(e&&f||!e&&!f)return!1}else if(e&&!f||!e&&f)return!1;f=k}return!0} -function Qc(b,c,d,e,f){f=void 0!==f?f:!1;var g,h;g=0;for(h=d.length;g<h;++g){var k=d[g],l=Oc(b,c,k,e);if(0===g?f&&l||!f&&!l:f&&!l||!f&&l)for(var l=b,m=k,p=e;c<m-p;){var q;for(q=0;q<p;++q){var r=l[c+q];l[c+q]=l[m-p+q];l[m-p+q]=r}c+=p;m-=p}c=k}return c}function Rc(b,c,d,e){var f=0,g,h;g=0;for(h=c.length;g<h;++g)f=Qc(b,f,c[g],d,e);return f};function Sc(b,c){Ac.call(this);this.c=[];this.A=-1;this.D=null;this.G=-1;this.j=null;this.X(b,c)}M(Sc,Ac);n=Sc.prototype;n.clone=function(){var b=new Sc(null);Tc(b,this.g,this.a.slice(),this.c.slice());return b};n.oa=function(b){var c;void 0!==b?(c=Uc(this).slice(),Qc(c,0,this.c,this.b,b)):c=this.a;return Hc(c,0,this.c,this.b)};n.Ta=function(){return this.c};function Vc(b){if(b.A!=b.f){var c=Xb(b.C());b.D=Nc(Uc(b),0,b.c,b.b,c,0);b.A=b.f}return b.D} -function Uc(b){if(b.G!=b.f){var c=b.a;Pc(c,b.c,b.b)?b.j=c:(b.j=c.slice(),b.j.length=Qc(b.j,0,b.c,b.b));b.G=b.f}return b.j}n.Ea=function(b){var c=[],d=[];c.length=Jc(this.a,0,this.c,this.b,Math.sqrt(b),c,0,d);b=new Sc(null);Tc(b,"XY",c,d);return b};n.U=function(){return"Polygon"};n.X=function(b,c){if(b){Cc(this,c,b,2);this.a||(this.a=[]);var d=Fc(this.a,0,b,this.b,this.c);this.a.length=0===d.length?0:d[d.length-1];this.w()}else Tc(this,"XY",null,this.c)};function Tc(b,c,d,e){V(b,c,d);b.c=e;b.w()};function Wc(b){U.call(this);b=b||{};this.g=[0,0];var c={};c.center=void 0!==b.center?b.center:null;this.h=uc(b.projection);var d,e,f,g=void 0!==b.minZoom?b.minZoom:0;d=void 0!==b.maxZoom?b.maxZoom:28;var h=void 0!==b.zoomFactor?b.zoomFactor:2;if(void 0!==b.resolutions)d=b.resolutions,e=d[0],f=d[d.length-1],d=Oa(d);else{e=uc(b.projection);f=e.C();var k=(f?Math.max(Ub(f),Vb(f)):360*gc.degrees/oc(e))/256/Math.pow(2,0),l=k/Math.pow(2,28);e=b.maxResolution;void 0!==e?g=0:e=k/Math.pow(h,g);f=b.minResolution; -void 0===f&&(f=void 0!==b.maxZoom?void 0!==b.maxResolution?e/Math.pow(h,d):k/Math.pow(h,d):l);d=g+Math.floor(Math.log(e/f)/Math.log(h));f=e/Math.pow(h,d-g);d=Pa(h,e,d-g)}this.b=e;this.i=f;this.c=g;g=void 0!==b.extent?Ea(b.extent):Fa;(void 0!==b.enableRotation?b.enableRotation:1)?(e=b.constrainRotation,e=void 0===e||!0===e?Ta():!1===e?Ra:ea(e)?Sa(e):Ra):e=Qa;this.a=new Ua(g,d,e);void 0!==b.resolution?c.resolution=b.resolution:void 0!==b.zoom&&(c.resolution=this.constrainResolution(this.b,b.zoom-this.c)); -c.rotation=void 0!==b.rotation?b.rotation:0;this.l(c)}M(Wc,U);n=Wc.prototype;n.constrainResolution=function(b,c,d){return this.a.resolution(b,c||0,d||0)};n.constrainRotation=function(b,c){return this.a.rotation(b,c||0)};n.ga=function(){return this.get("center")};n.dc=function(b){var c=this.ga(),d=this.J(),e=Xc(this);return Yb(c,d,e,b)};n.ae=function(){return this.h};n.J=function(){return this.get("resolution")};function Yc(b,c){return Math.max(Ub(b)/c[0],Vb(b)/c[1])} -function Xc(b){return b.get("rotation")}n.N=function(){var b=this.ga(),c=this.h,d=this.J(),e=Xc(this);return{center:[Math.round(b[0]/d)*d,Math.round(b[1]/d)*d],projection:void 0!==c?c:null,resolution:d,rotation:e}};n.kd=function(){var b,c=this.J();if(void 0!==c){var d,e=0;do{d=this.constrainResolution(this.b,e);if(d==c){b=e;break}++e}while(d>this.i)}return void 0!==b?this.c+b:b}; -n.fd=function(b,c,d){if(!(b instanceof Ac)){var e=b[0],f=b[1],g=b[2],h=b[3],e=[e,f,e,h,g,h,g,f,e,f],f=new Sc(null);Tc(f,"XY",e,[e.length]);b=f}e=d||{};d=void 0!==e.padding?e.padding:[0,0,0,0];var h=void 0!==e.constrainResolution?e.constrainResolution:!0,f=void 0!==e.nearest?e.nearest:!1,k;void 0!==e.minResolution?k=e.minResolution:void 0!==e.maxZoom?k=this.constrainResolution(this.b,e.maxZoom-this.c,0):k=0;var l=b.a,g=Xc(this),e=Math.cos(-g),g=Math.sin(-g),m=Infinity,p=Infinity,q=-Infinity,r=-Infinity; -b=b.b;for(var u=0,w=l.length;u<w;u+=b)var y=l[u]*e-l[u+1]*g,z=l[u]*g+l[u+1]*e,m=Math.min(m,y),p=Math.min(p,z),q=Math.max(q,y),r=Math.max(r,z);c=Yc([m,p,q,r],[c[0]-d[1]-d[3],c[1]-d[0]-d[2]]);c=isNaN(c)?k:Math.max(c,k);h&&(k=this.constrainResolution(c,0,0),!f&&k<c&&(k=this.constrainResolution(k,-1,0)),c=k);Zc(this,c);g=-g;k=(m+q)/2+(d[1]-d[3])/2*c;c=(p+r)/2+(d[0]-d[2])/2*c;this.ma([k*e-c*g,c*e+k*g])}; -n.rotate=function(b,c){if(void 0!==c){var d,e=this.ga();void 0!==e&&(d=[e[0]-c[0],e[1]-c[1]],ub(d,b-Xc(this)),tb(d,c));this.ma(d)}this.set("rotation",b)};n.ma=function(b){this.set("center",b)};function $c(b,c){b.g[1]+=c}function Zc(b,c){b.set("resolution",c)}n.ue=function(b){b=this.constrainResolution(this.b,b-this.c,0);Zc(this,b)};function ad(b){return 1-Math.pow(1-b,3)}function bd(b){return 3*b*b-2*b*b*b}function cd(b){return b};function dd(b){var c=b.source,d=b.start?b.start:Date.now(),e=c[0],f=c[1],g=void 0!==b.duration?b.duration:1E3,h=b.easing?b.easing:bd;return function(b,c){if(c.time<d)return c.animate=!0,c.viewHints[0]+=1,!0;if(c.time<d+g){var m=1-h((c.time-d)/g),p=e-c.viewState.center[0],q=f-c.viewState.center[1];c.animate=!0;c.viewState.center[0]+=m*p;c.viewState.center[1]+=m*q;c.viewHints[0]+=1;return!0}return!1}} -function ed(b){var c=b.rotation?b.rotation:0,d=b.start?b.start:Date.now(),e=void 0!==b.duration?b.duration:1E3,f=b.easing?b.easing:bd,g=b.anchor?b.anchor:null;return function(b,k){if(k.time<d)return k.animate=!0,k.viewHints[0]+=1,!0;if(k.time<d+e){var l=1-f((k.time-d)/e),l=(c-k.viewState.rotation)*l;k.animate=!0;k.viewState.rotation+=l;if(g){var m=k.viewState.center;m[0]-=g[0];m[1]-=g[1];ub(m,l);tb(m,g)}k.viewHints[0]+=1;return!0}return!1}} -function fd(b){var c=b.resolution,d=b.start?b.start:Date.now(),e=void 0!==b.duration?b.duration:1E3,f=b.easing?b.easing:bd;return function(b,h){if(h.time<d)return h.animate=!0,h.viewHints[0]+=1,!0;if(h.time<d+e){var k=1-f((h.time-d)/e),l=c-h.viewState.resolution;h.animate=!0;h.viewState.resolution+=k*l;h.viewHints[0]+=1;return!0}return!1}};function gd(b,c,d,e){this.a=b;this.b=c;this.f=d;this.c=e}function hd(b,c,d){return b.a<=c&&c<=b.b&&b.f<=d&&d<=b.c}function id(b,c){return b.a==c.a&&b.f==c.f&&b.b==c.b&&b.c==c.c}function jd(b,c){return b.a<=c.b&&b.b>=c.a&&b.f<=c.c&&b.c>=c.f};function kd(b){this.b=b.html;this.a=b.tileRanges?b.tileRanges:null};function ld(b,c,d){S.call(this,b,d);this.element=c}M(ld,S);function md(b){U.call(this);this.a=b?b:[];nd(this)}M(md,U);n=md.prototype;n.clear=function(){for(;0<this.get("length");)this.pop()};function od(b,c,d){b.a.forEach(c,d)}n.item=function(b){return this.a[b]};n.pop=function(){return pd(this,this.get("length")-1)};n.push=function(b){var c=this.a.length;this.a.splice(c,0,b);nd(this);T(this,new ld("add",b,this));return c}; -n.remove=function(b){var c=this.a,d,e;d=0;for(e=c.length;d<e;++d)if(c[d]===b)return pd(this,d)};function pd(b,c){var d=b.a[c];b.a.splice(c,1);nd(b);T(b,new ld("remove",d,b));return d}function nd(b){b.set("length",b.a.length)};function qd(b,c){Array.prototype.forEach.call(b,c,void 0)}function rd(b){var c=b.length;if(0<c){for(var d=Array(c),e=0;e<c;e++)d[e]=b[e];return d}return[]}function sd(b,c,d){return 2>=arguments.length?Array.prototype.slice.call(b,c):Array.prototype.slice.call(b,c,d)};var td=/^#(?:[0-9a-f]{3}){1,2}$/i,ud=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i,vd=/^(?:rgba)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|1|0\.\d{0,10})\)$/i;function wd(b){if("string"!==typeof b){var c=b[0];c!=(c|0)&&(c=c+.5|0);var d=b[1];d!=(d|0)&&(d=d+.5|0);var e=b[2];e!=(e|0)&&(e=e+.5|0);b="rgba("+c+","+d+","+e+","+(void 0===b[3]?1:b[3])+")"}return b} -var yd=function(){var b={},c=0;return function(d){var e;if(b.hasOwnProperty(d))e=b[d];else{if(1024<=c){e=0;for(var f in b)0===(e++&3)&&(delete b[f],--c)}var g,h;td.exec(d)?(h=3==d.length-1?1:2,e=parseInt(d.substr(1+0*h,h),16),f=parseInt(d.substr(1+1*h,h),16),g=parseInt(d.substr(1+2*h,h),16),1==h&&(e=(e<<4)+e,f=(f<<4)+f,g=(g<<4)+g),e=[e,f,g,1]):(h=vd.exec(d))?(e=Number(h[1]),f=Number(h[2]),g=Number(h[3]),h=Number(h[4]),e=[e,f,g,h],e=xd(e,e)):(h=ud.exec(d))?(e=Number(h[1]),f=Number(h[2]),g=Number(h[3]), -e=[e,f,g,1],e=xd(e,e)):e=void 0;b[d]=e;++c}return e}}();function xd(b,c){var d=c||[];d[0]=Ba(b[0]+.5|0,0,255);d[1]=Ba(b[1]+.5|0,0,255);d[2]=Ba(b[2]+.5|0,0,255);d[3]=Ba(b[3],0,1);return d};function zd(b){return"string"===typeof b||b instanceof CanvasPattern||b instanceof CanvasGradient?b:wd(b)};var Ad;a:{var Bd=x.navigator;if(Bd){var Cd=Bd.userAgent;if(Cd){Ad=Cd;break a}}Ad=""}function W(b){return-1!=Ad.indexOf(b)};function Dd(b,c){for(var d in b)c.call(void 0,b[d],d,b)}var Ed="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function Fd(b,c){for(var d,e,f=1;f<arguments.length;f++){e=arguments[f];for(d in e)b[d]=e[d];for(var g=0;g<Ed.length;g++)d=Ed[g],Object.prototype.hasOwnProperty.call(e,d)&&(b[d]=e[d])}};var Gd=W("Opera")||W("OPR"),Hd=W("Trident")||W("MSIE"),Id=W("Edge"),Jd=W("Gecko")&&!(-1!=Ad.toLowerCase().indexOf("webkit")&&!W("Edge"))&&!(W("Trident")||W("MSIE"))&&!W("Edge"),Kd=-1!=Ad.toLowerCase().indexOf("webkit")&&!W("Edge");function Ld(){var b=x.document;return b?b.documentMode:void 0}var Md; -a:{var Nd="",Od=function(){var b=Ad;if(Jd)return/rv\:([^\);]+)(\)|;)/.exec(b);if(Id)return/Edge\/([\d\.]+)/.exec(b);if(Hd)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(b);if(Kd)return/WebKit\/(\S+)/.exec(b);if(Gd)return/(?:Version)[ \/]?(\S+)/.exec(b)}();Od&&(Nd=Od?Od[1]:"");if(Hd){var Pd=Ld();if(null!=Pd&&Pd>parseFloat(Nd)){Md=String(Pd);break a}}Md=Nd}var Qd={}; -function Rd(b){var c;if(!(c=Qd[b])){c=0;for(var d=qa(String(Md)).split("."),e=qa(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",l=RegExp("(\\d*)(\\D*)","g"),m=RegExp("(\\d*)(\\D*)","g");do{var p=l.exec(h)||["","",""],q=m.exec(k)||["","",""];if(0==p[0].length&&0==q[0].length)break;c=Aa(0==p[1].length?0:parseInt(p[1],10),0==q[1].length?0:parseInt(q[1],10))||Aa(0==p[2].length,0==q[2].length)||Aa(p[2],q[2])}while(0==c)}c=Qd[b]=0<=c}return c} -var Sd=x.document,Td=Sd&&Hd?Ld()||("CSS1Compat"==Sd.compatMode?parseInt(Md,10):5):void 0;var Ud=!Hd||9<=Number(Td);!Jd&&!Hd||Hd&&9<=Number(Td)||Jd&&Rd("1.9.1");Hd&&Rd("9");function Vd(b,c){this.x=void 0!==b?b:0;this.y=void 0!==c?c:0}n=Vd.prototype;n.clone=function(){return new Vd(this.x,this.y)};n.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};n.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};n.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};n.scale=function(b,c){var d=ea(c)?c:b;this.x*=b;this.y*=d;return this};function Wd(b,c){this.width=b;this.height=c}n=Wd.prototype;n.clone=function(){return new Wd(this.width,this.height)};n.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};n.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};n.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};n.scale=function(b,c){var d=ea(c)?c:b;this.width*=b;this.height*=d;return this};function Xd(b){return b?new Yd(Zd(b)):pa||(pa=new Yd)}function $d(b){var c=document;return da(b)?c.getElementById(b):b}function ae(b,c){Dd(c,function(c,e){"style"==e?b.style.cssText=c:"class"==e?b.className=c:"for"==e?b.htmlFor=c:be.hasOwnProperty(e)?b.setAttribute(be[e],c):0==e.lastIndexOf("aria-",0)||0==e.lastIndexOf("data-",0)?b.setAttribute(e,c):b[e]=c})} -var be={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"}; -function ce(b,c,d){var e=arguments,f=document,g=e[0],h=e[1];if(!Ud&&h&&(h.name||h.type)){g=["<",g];h.name&&g.push(' name="',sa(h.name),'"');if(h.type){g.push(' type="',sa(h.type),'"');var k={};Fd(k,h);delete k.type;h=k}g.push(">");g=g.join("")}g=f.createElement(g);h&&(da(h)?g.className=h:"array"==ba(h)?g.className=h.join(" "):ae(g,h));2<e.length&&de(f,g,e);return g} -function de(b,c,d){function e(d){d&&c.appendChild(da(d)?b.createTextNode(d):d)}for(var f=2;f<d.length;f++){var g=d[f];!ca(g)||ha(g)&&0<g.nodeType?e(g):qd(ee(g)?rd(g):g,e)}}function fe(b){for(var c;c=b.firstChild;)b.removeChild(c)}function ge(b,c,d){b.insertBefore(c,b.childNodes[d]||null)}function he(b){b&&b.parentNode&&b.parentNode.removeChild(b)}function ie(b,c){var d=c.parentNode;d&&d.replaceChild(b,c)} -function je(b,c){if(!b||!c)return!1;if(b.contains&&1==c.nodeType)return b==c||b.contains(c);if("undefined"!=typeof b.compareDocumentPosition)return b==c||!!(b.compareDocumentPosition(c)&16);for(;c&&b!=c;)c=c.parentNode;return c==b}function Zd(b){return 9==b.nodeType?b:b.ownerDocument||b.document}function ee(b){if(b&&"number"==typeof b.length){if(ha(b))return"function"==typeof b.item||"string"==typeof b.item;if(ga(b))return"function"==typeof b.item}return!1} -function Yd(b){this.a=b||x.document||document}Yd.prototype.appendChild=function(b,c){b.appendChild(c)};function ke(b,c,d,e){this.top=b;this.right=c;this.bottom=d;this.left=e}n=ke.prototype;n.clone=function(){return new ke(this.top,this.right,this.bottom,this.left)};n.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};n.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this}; -n.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this};n.scale=function(b,c){var d=ea(c)?c:b;this.left*=b;this.right*=b;this.top*=d;this.bottom*=d;return this};function le(b,c){var d=Zd(b);return d.defaultView&&d.defaultView.getComputedStyle&&(d=d.defaultView.getComputedStyle(b,null))?d[c]||d.getPropertyValue(c)||"":""}function me(b){var c;try{c=b.getBoundingClientRect()}catch(d){return{left:0,top:0,right:0,bottom:0}}Hd&&b.ownerDocument.body&&(b=b.ownerDocument,c.left-=b.documentElement.clientLeft+b.body.clientLeft,c.top-=b.documentElement.clientTop+b.body.clientTop);return c} -function ne(b){var c=oe;if("none"!=(le(b,"display")||(b.currentStyle?b.currentStyle.display:null)||b.style&&b.style.display))return c(b);var d=b.style,e=d.display,f=d.visibility,g=d.position;d.visibility="hidden";d.position="absolute";d.display="inline";b=c(b);d.display=e;d.position=g;d.visibility=f;return b}function oe(b){var c=b.offsetWidth,d=b.offsetHeight,e=Kd&&!c&&!d;return(void 0===c||e)&&b.getBoundingClientRect?(b=me(b),new Wd(b.right-b.left,b.bottom-b.top)):new Wd(c,d)} -function pe(b,c){b.style.display=c?"":"none"}function qe(b,c,d,e){if(/^\d+px?$/.test(c))return parseInt(c,10);var f=b.style[d],g=b.runtimeStyle[d];b.runtimeStyle[d]=b.currentStyle[d];b.style[d]=c;c=b.style[e];b.style[d]=f;b.runtimeStyle[d]=g;return c}function re(b,c){var d=b.currentStyle?b.currentStyle[c]:null;return d?qe(b,d,"left","pixelLeft"):0}var se={thin:2,medium:4,thick:6}; -function te(b,c){if("none"==(b.currentStyle?b.currentStyle[c+"Style"]:null))return 0;var d=b.currentStyle?b.currentStyle[c+"Width"]:null;return d in se?se[d]:qe(b,d,"left","pixelLeft")};function ue(b,c,d){S.call(this,b);this.map=c;this.frameState=void 0!==d?d:null}M(ue,S);function ve(b){U.call(this);this.element=b.element?b.element:null;this.c=this.A=null;this.h=[];this.render=b.render?b.render:N;b.target&&(this.A=$d(b.target))}M(ve,U);ve.prototype.K=function(){he(this.element);ve.Y.K.call(this)};ve.prototype.setMap=function(b){this.c&&he(this.element);for(var c=0,d=this.h.length;c<d;++c)P(this.h[c]);this.h.length=0;if(this.c=b)(this.A?this.A:b.j).appendChild(this.element),this.render!==N&&this.h.push(R(b,"postrender",this.render,this)),b.render()};function we(){this.f=0;this.c={};this.b=this.a=null}n=we.prototype;n.clear=function(){this.f=0;this.c={};this.b=this.a=null};function xe(b,c){return b.c.hasOwnProperty(c)}function ye(b,c){for(var d=b.a;d;)c.call(void 0,d.Ba,d.Kb,b),d=d.ja}n.get=function(b){b=this.c[b];if(b===this.b)return b.Ba;b===this.a?(this.a=this.a.ja,this.a.Ia=null):(b.ja.Ia=b.Ia,b.Ia.ja=b.ja);b.ja=null;b.Ia=this.b;this.b=this.b.ja=b;return b.Ba}; -n.pop=function(){var b=this.a;delete this.c[b.Kb];b.ja&&(b.ja.Ia=null);this.a=b.ja;this.a||(this.b=null);--this.f;return b.Ba};n.replace=function(b,c){this.get(b);this.c[b].Ba=c};n.set=function(b,c){var d={Kb:b,ja:null,Ia:this.b,Ba:c};this.b?this.b.ja=d:this.a=d;this.b=d;this.c[b]=d;++this.f};function ze(b){we.call(this);this.g=void 0!==b?b:2048}M(ze,we);function Ae(b){return b.f>b.g}function Be(b,c){for(var d,e;Ae(b);){d=b.a.Ba;e=d.L[0].toString();var f;if(f=e in c)d=d.L,f=hd(c[e],d[1],d[2]);if(f)break;else ib(b.pop())}};function Ce(b,c){lb.call(this);this.L=b;this.state=c;this.a=null;this.key=""}M(Ce,lb);function De(b){T(b,"change")}Ce.prototype.getKey=function(){return I(this).toString()};Ce.prototype.N=function(){return this.state};function Ee(b){U.call(this);this.c=kc(b.projection);this.i=Fe(b.attributions);this.v=b.logo;this.A=void 0!==b.state?b.state:"ready";this.j=void 0!==b.wrapX?b.wrapX:!1}M(Ee,U);function Fe(b){if("string"===typeof b)return[new kd({html:b})];if(b instanceof kd)return[b];if(Array.isArray(b)){for(var c=b.length,d=Array(c),e=0;e<c;e++){var f=b[e];d[e]="string"===typeof f?new kd({html:f}):f}return d}return null}Ee.prototype.N=function(){return this.A};Ee.prototype.ra=function(){this.w()};function Ge(b){this.minZoom=void 0!==b.minZoom?b.minZoom:0;this.b=b.resolutions;this.maxZoom=this.b.length-1;this.f=void 0!==b.origin?b.origin:null;this.g=null;void 0!==b.origins&&(this.g=b.origins);var c=b.extent;void 0===c||this.f||this.g||(this.f=ac(c));this.h=null;void 0!==b.tileSizes&&(this.h=b.tileSizes);this.l=void 0!==b.tileSize?b.tileSize:this.h?null:256;this.i=void 0!==c?c:null;this.a=null;void 0!==b.sizes?this.a=b.sizes.map(function(b){return new gd(Math.min(0,b[0]),Math.max(b[0]-1,-1), -Math.min(0,b[1]),Math.max(b[1]-1,-1))},this):c&&He(this,c);this.c=[0,0]}var Ie=[0,0,0];function Je(b,c,d,e,f){f=Ke(b,c,f);for(c=c[0]-1;c>=b.minZoom;){if(d.call(null,c,Le(b,f,c,e)))return!0;--c}return!1}Ge.prototype.C=function(){return this.i};Ge.prototype.fa=function(b){return this.f?this.f:this.g[b]};Ge.prototype.J=function(b){return this.b[b]};Ge.prototype.Gb=function(){return this.b};function Me(b,c,d,e){return c[0]<b.maxZoom?(e=Ke(b,c,e),Le(b,e,c[0]+1,d)):null} -function Ne(b,c,d,e){Oe(b,c[0],c[1],d,!1,Ie);var f=Ie[1],g=Ie[2];Oe(b,c[2],c[3],d,!0,Ie);b=Ie[1];c=Ie[2];void 0!==e?(e.a=f,e.b=b,e.f=g,e.c=c):e=new gd(f,b,g,c);return e}function Le(b,c,d,e){d=b.J(d);return Ne(b,c,d,e)}function Pe(b,c){var d=b.fa(c[0]),e=b.J(c[0]),f=sb(Qe(b,c[0]),b.c);return[d[0]+(c[1]+.5)*f[0]*e,d[1]+(c[2]+.5)*f[1]*e]}function Ke(b,c,d){var e=b.fa(c[0]),f=b.J(c[0]);b=sb(Qe(b,c[0]),b.c);var g=e[0]+c[1]*b[0]*f;c=e[1]+c[2]*b[1]*f;return Nb(g,c,g+b[0]*f,c+b[1]*f,d)} -function Oe(b,c,d,e,f,g){var h=Re(b,e),k=e/b.J(h),l=b.fa(h);b=sb(Qe(b,h),b.c);c=k*Math.floor((c-l[0])/e+(f?.5:0))/b[0];d=k*Math.floor((d-l[1])/e+(f?0:.5))/b[1];f?(c=Math.ceil(c)-1,d=Math.ceil(d)-1):(c=Math.floor(c),d=Math.floor(d));f=c;void 0!==g?(g[0]=h,g[1]=f,g[2]=d):g=[h,f,d];return g}function Se(b,c,d){d=b.J(d);return Oe(b,c[0],c[1],d,!1,void 0)}function Qe(b,c){return b.l?b.l:b.h[c]}function Re(b,c){var d=Ha(b.b,c,0);return Ba(d,b.minZoom,b.maxZoom)} -function He(b,c){for(var d=b.b.length,e=Array(d),f=b.minZoom;f<d;++f)e[f]=Le(b,c,f);b.a=e}function Te(b){var c=b.c;if(!c){var c=Ue(b),d=Ve(c,void 0,void 0),c=new Ge({extent:c,origin:ac(c),resolutions:d,tileSize:void 0});b.c=c}return c}function Ve(b,c,d){c=void 0!==c?c:42;var e=Vb(b);b=Ub(b);d=sb(void 0!==d?d:256);d=Math.max(b/d[0],e/d[1]);c+=1;e=Array(c);for(b=0;b<c;++b)e[b]=d/Math.pow(2,b);return e}function Ue(b){b=kc(b);var c=b.C();c||(b=180*gc.degrees/oc(b),c=Nb(-b,-b,b,b));return c};function We(b){Ee.call(this,{attributions:b.attributions,extent:b.extent,logo:b.logo,projection:b.projection,state:b.state,wrapX:b.wrapX});this.G=void 0!==b.opaque?b.opaque:!1;this.Z=void 0!==b.tilePixelRatio?b.tilePixelRatio:1;this.tileGrid=void 0!==b.tileGrid?b.tileGrid:null;this.a=new ze(b.cacheSize);this.h=[0,0]}M(We,Ee);n=We.prototype;n.Gc=function(){return Ae(this.a)};n.Hc=function(b,c){var d=this.Ua(b);d&&Be(d,c)}; -function Xe(b,c,d,e,f){c=b.Ua(c);if(!c)return!1;for(var g=!0,h,k,l=e.a;l<=e.b;++l)for(var m=e.f;m<=e.c;++m)h=b.cb(d,l,m),k=!1,xe(c,h)&&(h=c.get(h),(k=2===h.N())&&(k=!1!==f(h))),k||(g=!1);return g}n.bb=function(){return 0};n.cb=function(b,c,d){return b+"/"+c+"/"+d};n.Fb=function(){return this.G};n.Gb=function(){return this.tileGrid.Gb()};n.ia=function(b){return this.tileGrid?this.tileGrid:Te(b)};n.Ua=function(b){var c=this.c;return c&&!vc(c,b)?null:this.a};n.eb=function(){return this.Z}; -function Ye(b,c,d,e){e=b.ia(e);d=b.eb(d);c=sb(Qe(e,c),b.h);return 1==d?c:rb(c,d,b.h)}function Ze(b,c,d){var e=void 0!==d?d:b.c;d=b.ia(e);if(b.j&&e.f){var f=c;c=f[0];b=Pe(d,f);var e=Ue(e),g=b[0],h=b[1];e[0]<=g&&g<=e[2]&&e[1]<=h&&h<=e[3]?c=f:(f=Ub(e),b[0]+=f*Math.ceil((e[0]-b[0])/f),c=Se(d,b,c))}e=c[0];b=c[1];f=c[2];d=d.minZoom>e||e>d.maxZoom?!1:(d=(g=d.C())?Le(d,g,e):d.a?d.a[e]:null)?hd(d,b,f):!0;return d?c:null}n.ra=function(){this.a.clear();this.w()};n.Qc=N; -function $e(b,c){S.call(this,b);this.tile=c}M($e,S);function af(b){b=b?b:{};this.s=document.createElement("UL");this.j=document.createElement("LI");this.s.appendChild(this.j);pe(this.j,!1);this.g=void 0!==b.collapsed?b.collapsed:!0;this.i=void 0!==b.collapsible?b.collapsible:!0;this.i||(this.g=!1);var c=void 0!==b.className?b.className:"ol-attribution",d=void 0!==b.tipLabel?b.tipLabel:"Attributions",e=void 0!==b.collapseLabel?b.collapseLabel:"\u00bb";this.u="string"===typeof e?ce("SPAN",{},e):e;e=void 0!==b.label?b.label:"i";this.v="string"===typeof e? -ce("SPAN",{},e):e;d=ce("BUTTON",{type:"button",title:d},this.i&&!this.g?this.u:this.v);R(d,"click",this.G,this);c=ce("DIV",c+" ol-unselectable ol-control"+(this.g&&this.i?" ol-collapsed":"")+(this.i?"":" ol-uncollapsible"),this.s,d);ve.call(this,{element:c,render:b.render?b.render:bf,target:b.target});this.o=!0;this.b={};this.a={};this.D={}}M(af,ve); -function bf(b){if(b=b.frameState){var c,d,e,f,g,h,k,l,m,p,q,r=b.layerStatesArray,u=Va({},b.attributions),w={},y=b.viewState.projection;d=0;for(c=r.length;d<c;d++)if(h=r[d].layer.W())if(p=I(h).toString(),m=h.i)for(e=0,f=m.length;e<f;e++)if(k=m[e],l=I(k).toString(),!(l in u)){if(g=b.usedTiles[p]){var z=h.ia(y);a:{q=k;var D=y;if(q.a){var t=void 0,v=void 0,B=void 0,F=void 0;for(F in g)if(F in q.a)for(var B=g[F],C,t=0,v=q.a[F].length;t<v;++t){C=q.a[F][t];if(jd(C,B)){q=!0;break a}var G=Le(z,Ue(D),parseInt(F, -10)),J=G.b-G.a+1;if(B.a<G.a||B.b>G.b)if(jd(C,new gd(Da(B.a,J),Da(B.b,J),B.f,B.c))||B.b-B.a+1>J&&jd(C,G)){q=!0;break a}}q=!1}else q=!0}}else q=!1;q?(l in w&&delete w[l],u[l]=k):w[l]=k}c=[u,w];d=c[0];c=c[1];for(var A in this.b)A in d?(this.a[A]||(pe(this.b[A],!0),this.a[A]=!0),delete d[A]):A in c?(this.a[A]&&(pe(this.b[A],!1),delete this.a[A]),delete c[A]):(he(this.b[A]),delete this.b[A],delete this.a[A]);for(A in d)e=document.createElement("LI"),e.innerHTML=d[A].b,this.s.appendChild(e),this.b[A]=e, -this.a[A]=!0;for(A in c)e=document.createElement("LI"),e.innerHTML=c[A].b,pe(e,!1),this.s.appendChild(e),this.b[A]=e;A=!Za(this.a)||!Za(b.logos);this.o!=A&&(pe(this.element,A),this.o=A);A&&Za(this.a)?this.element.classList.add("ol-logo-only"):this.element.classList.remove("ol-logo-only");var H;b=b.logos;A=this.D;for(H in A)H in b||(he(A[H]),delete A[H]);for(var O in b)O in A||(H=new Image,H.src=O,d=b[O],""===d?d=H:(d=ce("A",{href:d}),d.appendChild(H)),this.j.appendChild(d),A[O]=d);pe(this.j,!Za(b))}else this.o&& -(pe(this.element,!1),this.o=!1)}af.prototype.G=function(b){b.preventDefault();this.element.classList.toggle("ol-collapsed");this.g?ie(this.u,this.v):ie(this.v,this.u);this.g=!this.g};function cf(b){b=b?b:{};var c=void 0!==b.className?b.className:"ol-rotate",d=void 0!==b.label?b.label:"\u21e7";this.a=null;"string"===typeof d?this.a=ce("SPAN","ol-compass",d):(this.a=d,this.a.classList.add(this.a,"ol-compass"));d=ce("BUTTON",{"class":c+"-reset",type:"button",title:b.tipLabel?b.tipLabel:"Reset rotation"},this.a);R(d,"click",cf.prototype.o,this);c=ce("DIV",c+" ol-unselectable ol-control",d);d=b.render?b.render:df;this.g=b.resetNorth?b.resetNorth:void 0;ve.call(this,{element:c,render:d, -target:b.target});this.i=void 0!==b.duration?b.duration:250;this.b=void 0!==b.autoHide?b.autoHide:!0;this.j=void 0;this.b&&this.element.classList.add("ol-hidden")}M(cf,ve);cf.prototype.o=function(b){b.preventDefault();if(void 0!==this.g)this.g();else{b=this.c;var c=b.O();if(c){var d=Xc(c);void 0!==d&&(0<this.i&&(d%=2*Math.PI,d<-Math.PI&&(d+=2*Math.PI),d>Math.PI&&(d-=2*Math.PI),b.ea(ed({rotation:d,duration:this.i,easing:ad}))),c.set("rotation",0))}}}; -function df(b){if(b=b.frameState){b=b.viewState.rotation;if(b!=this.j){var c="rotate("+b+"rad)";if(this.b){var d=this.element.classList.contains("ol-hidden");d||0!==b?d&&0!==b&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.a.style.msTransform=c;this.a.style.webkitTransform=c;this.a.style.transform=c}this.j=b}};function ef(b){b=b?b:{};var c=void 0!==b.className?b.className:"ol-zoom",d=void 0!==b.delta?b.delta:1,e=void 0!==b.zoomOutLabel?b.zoomOutLabel:"\u2212",f=void 0!==b.zoomOutTipLabel?b.zoomOutTipLabel:"Zoom out",g=ce("BUTTON",{"class":c+"-in",type:"button",title:void 0!==b.zoomInTipLabel?b.zoomInTipLabel:"Zoom in"},void 0!==b.zoomInLabel?b.zoomInLabel:"+");R(g,"click",na(ef.prototype.b,d),this);e=ce("BUTTON",{"class":c+"-out",type:"button",title:f},e);R(e,"click",na(ef.prototype.b,-d),this);c=ce("DIV", -c+" ol-unselectable ol-control",g,e);ve.call(this,{element:c,target:b.target});this.a=void 0!==b.duration?b.duration:250}M(ef,ve);ef.prototype.b=function(b,c){c.preventDefault();var d=this.c,e=d.O();if(e){var f=e.J();f&&(0<this.a&&d.ea(fd({resolution:f,duration:this.a,easing:ad})),d=e.constrainResolution(f,b),Zc(e,d))}};function ff(b){b=b?b:{};var c=new md;(void 0!==b.zoom?b.zoom:1)&&c.push(new ef(b.zoomOptions));(void 0!==b.rotate?b.rotate:1)&&c.push(new cf(b.rotateOptions));(void 0!==b.attribution?b.attribution:1)&&c.push(new af(b.attributionOptions));return c};var gf=Kd?"webkitfullscreenchange":Jd?"mozfullscreenchange":Hd?"MSFullscreenChange":"fullscreenchange";function hf(){var b=Xd().a,c=b.body;return!!(c.webkitRequestFullscreen||c.mozRequestFullScreen&&b.mozFullScreenEnabled||c.msRequestFullscreen&&b.msFullscreenEnabled||c.requestFullscreen&&b.fullscreenEnabled)} -function jf(b){b.webkitRequestFullscreen?b.webkitRequestFullscreen():b.mozRequestFullScreen?b.mozRequestFullScreen():b.msRequestFullscreen?b.msRequestFullscreen():b.requestFullscreen&&b.requestFullscreen()}function kf(){var b=Xd().a;return!!(b.webkitIsFullScreen||b.mozFullScreen||b.msFullscreenElement||b.fullscreenElement)};function lf(b){b=b?b:{};this.a=void 0!==b.className?b.className:"ol-full-screen";var c=void 0!==b.label?b.label:"\u2922";this.b="string"===typeof c?document.createTextNode(c):c;c=void 0!==b.labelActive?b.labelActive:"\u00d7";this.g="string"===typeof c?document.createTextNode(c):c;c=b.tipLabel?b.tipLabel:"Toggle full-screen";c=ce("BUTTON",{"class":this.a+"-"+kf(),type:"button",title:c},this.b);R(c,"click",this.s,this);var d=this.a+" ol-unselectable ol-control "+(hf()?"":"ol-unsupported"),c=ce("DIV", -d,c);ve.call(this,{element:c,target:b.target});this.o=void 0!==b.keys?b.keys:!1;this.i=b.source}M(lf,ve); -lf.prototype.s=function(b){b.preventDefault();hf()&&(b=this.c)&&(kf()?(b=Xd().a,b.webkitCancelFullScreen?b.webkitCancelFullScreen():b.mozCancelFullScreen?b.mozCancelFullScreen():b.msExitFullscreen?b.msExitFullscreen():b.exitFullscreen&&b.exitFullscreen()):(b=this.i?$d(this.i):b.Fa(),this.o?b.mozRequestFullScreenWithKeys?b.mozRequestFullScreenWithKeys():b.webkitRequestFullscreen?b.webkitRequestFullscreen():jf(b):jf(b)))}; -lf.prototype.j=function(){var b=this.element.firstElementChild,c=this.c;kf()?(b.className=this.a+"-true",ie(this.g,this.b)):(b.className=this.a+"-false",ie(this.b,this.g));c&&c.nb()};lf.prototype.setMap=function(b){lf.Y.setMap.call(this,b);b&&this.h.push(R(x.document,gf,this.j,this))};var mf; -function nf(){var b=x.MessageChannel;"undefined"===typeof b&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&!W("Presto")&&(b=function(){var b=document.createElement("IFRAME");b.style.display="none";b.src="";document.documentElement.appendChild(b);var c=b.contentWindow,b=c.document;b.open();b.write("");b.close();var d="callImmediate"+Math.random(),e="file:"==c.location.protocol?"*":c.location.protocol+"//"+c.location.host,b=ma(function(b){if(("*"==e||b.origin==e)&&b.data== -d)this.port1.onmessage()},this);c.addEventListener("message",b,!1);this.port1={};this.port2={postMessage:function(){c.postMessage(d,e)}}});if("undefined"!==typeof b&&!W("Trident")&&!W("MSIE")){var c=new b,d={},e=d;c.port1.onmessage=function(){if(void 0!==d.next){d=d.next;var b=d.fc;d.fc=null;b()}};return function(b){e.next={fc:b};e=e.next;c.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in document.createElement("SCRIPT")?function(b){var c=document.createElement("SCRIPT"); -c.onreadystatechange=function(){c.onreadystatechange=null;c.parentNode.removeChild(c);c=null;b();b=null};document.documentElement.appendChild(c)}:function(b){x.setTimeout(b,0)}};function of(b,c,d){S.call(this,b);this.a=c;b=d?d:{};this.buttons=pf(b);this.pressure=qf(b,this.buttons);this.bubbles="bubbles"in b?b.bubbles:!1;this.cancelable="cancelable"in b?b.cancelable:!1;this.view="view"in b?b.view:null;this.detail="detail"in b?b.detail:null;this.screenX="screenX"in b?b.screenX:0;this.screenY="screenY"in b?b.screenY:0;this.clientX="clientX"in b?b.clientX:0;this.clientY="clientY"in b?b.clientY:0;this.button="button"in b?b.button:0;this.relatedTarget="relatedTarget"in b?b.relatedTarget: -null;this.pointerId="pointerId"in b?b.pointerId:0;this.width="width"in b?b.width:0;this.height="height"in b?b.height:0;this.pointerType="pointerType"in b?b.pointerType:"";this.isPrimary="isPrimary"in b?b.isPrimary:!1;c.preventDefault&&(this.preventDefault=function(){c.preventDefault()})}M(of,S);function pf(b){if(b.buttons||rf)b=b.buttons;else switch(b.which){case 1:b=1;break;case 2:b=4;break;case 3:b=2;break;default:b=0}return b}function qf(b,c){var d=0;b.pressure?d=b.pressure:d=c?.5:0;return d} -var rf=!1;try{rf=1===(new MouseEvent("click",{buttons:1})).buttons}catch(b){};function sf(b,c){var d=document.createElement("CANVAS");b&&(d.width=b);c&&(d.height=c);return d.getContext("2d")} -var tf=function(){var b;return function(){if(void 0===b){var c=document.createElement("P"),d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate(1px,1px)",d=x.getComputedStyle(c).getPropertyValue(e[f]));document.body.removeChild(c);b=d&&"none"!==d}return b}}(),uf=function(){var b;return function(){if(void 0===b){var c=document.createElement("P"), -d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate3d(1px,1px,1px)",d=x.getComputedStyle(c).getPropertyValue(e[f]));document.body.removeChild(c);b=d&&"none"!==d}return b}}(); -function vf(b,c){var d=b.style;d.WebkitTransform=c;d.MozTransform=c;d.a=c;d.msTransform=c;d.transform=c;Hd&&Rd("9.0")&&(b.style.transformOrigin="0 0")}function wf(b,c){var d;if(uf()){var e=Array(16);for(d=0;16>d;++d)e[d]=c[d].toFixed(6);vf(b,"matrix3d("+e.join(",")+")")}else if(tf()){var e=[c[0],c[1],c[4],c[5],c[12],c[13]],f=Array(6);for(d=0;6>d;++d)f[d]=e[d].toFixed(6);vf(b,"matrix("+f.join(",")+")")}else b.style.left=Math.round(c[12])+"px",b.style.top=Math.round(c[13])+"px"};var xf=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function yf(b,c){var d,e,f=xf.length;for(e=0;e<f;++e)try{if(d=b.getContext(xf[e],c))return d}catch(g){}return null};var zf,Af="undefined"!==typeof navigator?navigator.userAgent.toLowerCase():"",Bf=-1!==Af.indexOf("firefox"),Cf=-1!==Af.indexOf("safari")&&-1===Af.indexOf("chrom"),Df=-1!==Af.indexOf("macintosh"),Ef=x.devicePixelRatio||1,Ff=!1,Gf=function(){if(!("HTMLCanvasElement"in x))return!1;try{var b=sf();return b?(void 0!==b.setLineDash&&(Ff=!0),!0):!1}catch(c){return!1}}(),Hf="ontouchstart"in x,If="PointerEvent"in x,Jf=!!x.navigator.msPointerEnabled,Kf=!1,Lf=[]; -if("WebGLRenderingContext"in x)try{var Mf=yf(document.createElement("CANVAS"),{failIfMajorPerformanceCaveat:!0});Mf&&(Kf=!0,Lf=Mf.getSupportedExtensions())}catch(b){}zf=Kf;oa=Lf;function Nf(b,c){this.a=b;this.g=c};function Of(b){Nf.call(this,b,{mousedown:this.Kd,mousemove:this.Ld,mouseup:this.Od,mouseover:this.Nd,mouseout:this.Md});this.b=b.b;this.f=[]}M(Of,Nf);function Pf(b,c){for(var d=b.f,e=c.clientX,f=c.clientY,g=0,h=d.length,k;g<h&&(k=d[g]);g++){var l=Math.abs(f-k[1]);if(25>=Math.abs(e-k[0])&&25>=l)return!0}return!1}function Qf(b){var c=Rf(b,b),d=c.preventDefault;c.preventDefault=function(){b.preventDefault();d()};c.pointerId=1;c.isPrimary=!0;c.pointerType="mouse";return c}n=Of.prototype; -n.Kd=function(b){if(!Pf(this,b)){if((1).toString()in this.b){var c=Qf(b);Sf(this.a,Tf,c,b);delete this.b[(1).toString()]}c=Qf(b);this.b[(1).toString()]=b;Sf(this.a,Uf,c,b)}};n.Ld=function(b){if(!Pf(this,b)){var c=Qf(b);Sf(this.a,Vf,c,b)}};n.Od=function(b){if(!Pf(this,b)){var c=this.b[(1).toString()];c&&c.button===b.button&&(c=Qf(b),Sf(this.a,Wf,c,b),delete this.b[(1).toString()])}};n.Nd=function(b){if(!Pf(this,b)){var c=Qf(b);Xf(this.a,c,b)}}; -n.Md=function(b){if(!Pf(this,b)){var c=Qf(b);Yf(this.a,c,b)}};function Zf(b){Nf.call(this,b,{MSPointerDown:this.Td,MSPointerMove:this.Ud,MSPointerUp:this.Xd,MSPointerOut:this.Vd,MSPointerOver:this.Wd,MSPointerCancel:this.Sd,MSGotPointerCapture:this.Qd,MSLostPointerCapture:this.Rd});this.b=b.b;this.f=["","unavailable","touch","pen","mouse"]}M(Zf,Nf);function $f(b,c){var d=c;ea(c.pointerType)&&(d=Rf(c,c),d.pointerType=b.f[c.pointerType]);return d}n=Zf.prototype;n.Td=function(b){this.b[b.pointerId.toString()]=b;var c=$f(this,b);Sf(this.a,Uf,c,b)}; -n.Ud=function(b){var c=$f(this,b);Sf(this.a,Vf,c,b)};n.Xd=function(b){var c=$f(this,b);Sf(this.a,Wf,c,b);delete this.b[b.pointerId.toString()]};n.Vd=function(b){var c=$f(this,b);Yf(this.a,c,b)};n.Wd=function(b){var c=$f(this,b);Xf(this.a,c,b)};n.Sd=function(b){var c=$f(this,b);Sf(this.a,Tf,c,b);delete this.b[b.pointerId.toString()]};n.Rd=function(b){T(this.a,new of("lostpointercapture",b,b))};n.Qd=function(b){T(this.a,new of("gotpointercapture",b,b))};function ag(b){Nf.call(this,b,{pointerdown:this.he,pointermove:this.ie,pointerup:this.le,pointerout:this.je,pointerover:this.ke,pointercancel:this.ge,gotpointercapture:this.ld,lostpointercapture:this.Jd})}M(ag,Nf);n=ag.prototype;n.he=function(b){bg(this.a,b)};n.ie=function(b){bg(this.a,b)};n.le=function(b){bg(this.a,b)};n.je=function(b){bg(this.a,b)};n.ke=function(b){bg(this.a,b)};n.ge=function(b){bg(this.a,b)};n.Jd=function(b){bg(this.a,b)};n.ld=function(b){bg(this.a,b)};function cg(b,c){Nf.call(this,b,{touchstart:this.ye,touchmove:this.xe,touchend:this.we,touchcancel:this.ve});this.b=b.b;this.l=c;this.f=void 0;this.h=0;this.c=void 0}M(cg,Nf);n=cg.prototype;n.Pc=function(){this.h=0;this.c=void 0}; -function dg(b,c,d){c=Rf(c,d);c.pointerId=d.identifier+2;c.bubbles=!0;c.cancelable=!0;c.detail=b.h;c.button=0;c.buttons=1;c.width=d.webkitRadiusX||d.radiusX||0;c.height=d.webkitRadiusY||d.radiusY||0;c.pressure=d.webkitForce||d.force||.5;c.isPrimary=b.f===d.identifier;c.pointerType="touch";c.clientX=d.clientX;c.clientY=d.clientY;c.screenX=d.screenX;c.screenY=d.screenY;return c} -function eg(b,c,d){function e(){c.preventDefault()}var f=Array.prototype.slice.call(c.changedTouches),g=f.length,h,k;for(h=0;h<g;++h)k=dg(b,c,f[h]),k.preventDefault=e,d.call(b,c,k)} -n.ye=function(b){var c=b.touches,d=Object.keys(this.b),e=d.length;if(e>=c.length){var f=[],g,h,k;for(g=0;g<e;++g){h=d[g];k=this.b[h];var l;if(!(l=1==h))a:{l=c.length;for(var m=void 0,p=0;p<l;p++)if(m=c[p],m.identifier===h-2){l=!0;break a}l=!1}l||f.push(k.out)}for(g=0;g<f.length;++g)this.xb(b,f[g])}c=b.changedTouches[0];d=Object.keys(this.b).length;if(0===d||1===d&&(1).toString()in this.b)this.f=c.identifier,void 0!==this.c&&x.clearTimeout(this.c);fg(this,b);this.h++;eg(this,b,this.fe)}; -n.fe=function(b,c){this.b[c.pointerId]={target:c.target,out:c,Mc:c.target};var d=this.a;c.bubbles=!0;Sf(d,gg,c,b);d=this.a;c.bubbles=!1;Sf(d,hg,c,b);Sf(this.a,Uf,c,b)};n.xe=function(b){b.preventDefault();eg(this,b,this.Pd)};n.Pd=function(b,c){var d=this.b[c.pointerId];if(d){var e=d.out,f=d.Mc;Sf(this.a,Vf,c,b);e&&f!==c.target&&(e.relatedTarget=c.target,c.relatedTarget=f,e.target=f,c.target?(Yf(this.a,e,b),Xf(this.a,c,b)):(c.target=f,c.relatedTarget=null,this.xb(b,c)));d.out=c;d.Mc=c.target}}; -n.we=function(b){fg(this,b);eg(this,b,this.ze)};n.ze=function(b,c){Sf(this.a,Wf,c,b);this.a.out(c,b);var d=this.a;c.bubbles=!1;Sf(d,ig,c,b);delete this.b[c.pointerId];c.isPrimary&&(this.f=void 0,this.c=x.setTimeout(this.Pc.bind(this),200))};n.ve=function(b){eg(this,b,this.xb)};n.xb=function(b,c){Sf(this.a,Tf,c,b);this.a.out(c,b);var d=this.a;c.bubbles=!1;Sf(d,ig,c,b);delete this.b[c.pointerId];c.isPrimary&&(this.f=void 0,this.c=x.setTimeout(this.Pc.bind(this),200))}; -function fg(b,c){var d=b.l.f,e=c.changedTouches[0];if(b.f===e.identifier){var f=[e.clientX,e.clientY];d.push(f);x.setTimeout(function(){Ka(d,f)},2500)}};function jg(b){lb.call(this);this.g=b;this.b={};this.c={};this.a=[];If?kg(this,new ag(this)):Jf?kg(this,new Zf(this)):(b=new Of(this),kg(this,b),Hf&&kg(this,new cg(this,b)));b=this.a.length;for(var c,d=0;d<b;d++)c=this.a[d],lg(this,Object.keys(c.g))}M(jg,lb);function kg(b,c){var d=Object.keys(c.g);d&&(d.forEach(function(b){var d=c.g[b];d&&(this.c[b]=d.bind(c))},b),b.a.push(c))}jg.prototype.f=function(b){var c=this.c[b.type];c&&c(b)}; -function lg(b,c){c.forEach(function(b){R(this.g,b,this.f,this)},b)}function mg(b,c){c.forEach(function(b){fb(this.g,b,this.f,this)},b)}function Rf(b,c){for(var d={},e,f=0,g=ng.length;f<g;f++)e=ng[f][0],d[e]=b[e]||c[e]||ng[f][1];return d}jg.prototype.out=function(b,c){b.bubbles=!0;Sf(this,og,b,c)};function Yf(b,c,d){b.out(c,d);var e=c.relatedTarget;e&&je(c.target,e)||(c.bubbles=!1,Sf(b,ig,c,d))} -function Xf(b,c,d){c.bubbles=!0;Sf(b,gg,c,d);var e=c.relatedTarget;e&&je(c.target,e)||(c.bubbles=!1,Sf(b,hg,c,d))}function Sf(b,c,d,e){T(b,new of(c,e,d))}function bg(b,c){T(b,new of(c.type,c,c))}jg.prototype.K=function(){for(var b=this.a.length,c,d=0;d<b;d++)c=this.a[d],mg(this,Object.keys(c.g));jg.Y.K.call(this)}; -var Vf="pointermove",Uf="pointerdown",Wf="pointerup",gg="pointerover",og="pointerout",hg="pointerenter",ig="pointerleave",Tf="pointercancel",ng=[["bubbles",!1],["cancelable",!1],["view",null],["detail",null],["screenX",0],["screenY",0],["clientX",0],["clientY",0],["ctrlKey",!1],["altKey",!1],["shiftKey",!1],["metaKey",!1],["button",0],["relatedTarget",null],["buttons",0],["pointerId",0],["width",0],["height",0],["pressure",0],["tiltX",0],["tiltY",0],["pointerType",""],["hwTimestamp",0],["isPrimary", -!1],["type",""],["target",null],["currentTarget",null],["which",0]];function pg(b,c,d,e,f){ue.call(this,b,c,f);this.originalEvent=d;this.pixel=c.nc(d);this.coordinate=c.pa(this.pixel);this.dragging=void 0!==e?e:!1}M(pg,ue);pg.prototype.preventDefault=function(){pg.Y.preventDefault.call(this);this.originalEvent.preventDefault()};pg.prototype.stopPropagation=function(){pg.Y.stopPropagation.call(this);this.originalEvent.stopPropagation()};function qg(b,c,d,e,f){pg.call(this,b,c,d.a,e,f);this.a=d}M(qg,pg); -function rg(b){lb.call(this);this.f=b;this.h=0;this.l=!1;this.c=[];this.b=null;b=this.f.a;this.s=0;this.o={};this.g=new jg(b);this.a=null;this.i=R(this.g,Uf,this.xd,this);this.j=R(this.g,Vf,this.ne,this)}M(rg,lb);function sg(b,c){var d;d=new qg(tg,b.f,c);T(b,d);0!==b.h?(x.clearTimeout(b.h),b.h=0,d=new qg(ug,b.f,c),T(b,d)):b.h=x.setTimeout(function(){this.h=0;var b=new qg(vg,this.f,c);T(this,b)}.bind(b),250)} -function wg(b,c){c.type==xg||c.type==yg?delete b.o[c.pointerId]:c.type==zg&&(b.o[c.pointerId]=!0);b.s=Object.keys(b.o).length}n=rg.prototype;n.qc=function(b){wg(this,b);var c=new qg(xg,this.f,b);T(this,c);!this.l&&0===b.button&&sg(this,this.b);0===this.s&&(this.c.forEach(P),this.c.length=0,this.l=!1,this.b=null,ib(this.a),this.a=null)}; -n.xd=function(b){wg(this,b);var c=new qg(zg,this.f,b);T(this,c);this.b=b;0===this.c.length&&(this.a=new jg(document),this.c.push(R(this.a,Ag,this.$d,this),R(this.a,xg,this.qc,this),R(this.g,yg,this.qc,this)))};n.$d=function(b){if(b.clientX!=this.b.clientX||b.clientY!=this.b.clientY){this.l=!0;var c=new qg(Bg,this.f,b,this.l);T(this,c)}b.preventDefault()};n.ne=function(b){T(this,new qg(b.type,this.f,b,!(!this.b||b.clientX==this.b.clientX&&b.clientY==this.b.clientY)))}; -n.K=function(){this.j&&(P(this.j),this.j=null);this.i&&(P(this.i),this.i=null);this.c.forEach(P);this.c.length=0;this.a&&(ib(this.a),this.a=null);this.g&&(ib(this.g),this.g=null);rg.Y.K.call(this)};var vg="singleclick",tg="click",ug="dblclick",Bg="pointerdrag",Ag="pointermove",zg="pointerdown",xg="pointerup",yg="pointercancel",Cg={Le:vg,Ae:tg,Be:ug,Ee:Bg,He:Ag,De:zg,Ke:xg,Je:"pointerover",Ie:"pointerout",Fe:"pointerenter",Ge:"pointerleave",Ce:yg};function Dg(b){U.call(this);var c=Va({},b);c.opacity=void 0!==b.opacity?b.opacity:1;c.visible=void 0!==b.visible?b.visible:!0;c.zIndex=void 0!==b.zIndex?b.zIndex:0;c.maxResolution=void 0!==b.maxResolution?b.maxResolution:Infinity;c.minResolution=void 0!==b.minResolution?b.minResolution:0;this.l(c)}M(Dg,U); -function Eg(b){var c=b.Ob(),d=b.Ib(),e=b.Va(),f=b.C(),g=b.Pb(),h=b.get("maxResolution"),k=b.get("minResolution");return{layer:b,opacity:Ba(c,0,1),Tb:d,visible:e,Wa:!0,extent:f,zIndex:g,maxResolution:h,minResolution:Math.max(k,0)}}n=Dg.prototype;n.C=function(){return this.get("extent")};n.Ob=function(){return this.get("opacity")};n.Va=function(){return this.get("visible")};n.Pb=function(){return this.get("zIndex")};n.vc=function(b){this.set("opacity",b)};n.wc=function(b){this.set("visible",b)}; -n.xc=function(b){this.set("zIndex",b)};function Fg(){};function Gg(b,c,d,e,f,g){S.call(this,b,c);this.vectorContext=d;this.frameState=e;this.context=f;this.glContext=g}M(Gg,S);function Hg(b){var c=Va({},b);delete c.source;Dg.call(this,c);this.h=this.c=this.b=null;b.map&&this.setMap(b.map);R(this,qb("source"),this.Cd,this);this.Sb(b.source?b.source:null)}M(Hg,Dg);function Ig(b,c){return b.visible&&c>=b.minResolution&&c<b.maxResolution}n=Hg.prototype;n.Eb=function(b){b=b?b:[];b.push(Eg(this));return b};n.W=function(){return this.get("source")||null};n.Ib=function(){var b=this.W();return b?b.N():"undefined"};n.be=function(){this.w()}; -n.Cd=function(){this.h&&(P(this.h),this.h=null);var b=this.W();b&&(this.h=R(b,"change",this.be,this));this.w()};n.setMap=function(b){this.b&&(P(this.b),this.b=null);b||this.w();this.c&&(P(this.c),this.c=null);b&&(this.b=R(b,"precompose",function(b){var d=Eg(this);d.Wa=!1;d.zIndex=Infinity;b.frameState.layerStatesArray.push(d);b.frameState.layerStates[I(this)]=d},this),this.c=R(this,"change",b.render,b),this.w())};n.Sb=function(b){this.set("source",b)};function Jg(b,c,d,e,f,g,h,k){Cb(b);0===c&&0===d||Eb(b,c,d);1==e&&1==f||Fb(b,e,f);0!==g&&Gb(b,g);0===h&&0===k||Eb(b,h,k);return b}function Kg(b,c){return b[0]==c[0]&&b[1]==c[1]&&b[4]==c[4]&&b[5]==c[5]&&b[12]==c[12]&&b[13]==c[13]}function Lg(b,c,d){var e=b[1],f=b[5],g=b[13],h=c[0];c=c[1];d[0]=b[0]*h+b[4]*c+b[12];d[1]=e*h+f*c+g;return d};function Mg(b){nb.call(this);this.a=b}M(Mg,nb);Mg.prototype.Xa=N;Mg.prototype.yc=cc;Mg.prototype.l=function(b,c,d){return function(e,f){return Xe(b,c,e,f,function(b){d[e]||(d[e]={});d[e][b.L.toString()]=b})}};function Ng(b){var c=b.a;c.Va()&&"ready"==c.Ib()&&b.w()}function Og(b,c){c.Gc()&&b.postRenderFunctions.push(na(function(b,c,f){c=I(b).toString();b.Hc(f.viewState.projection,f.usedTiles[c])},c))}function Pg(b,c){if(c){var d,e,f;e=0;for(f=c.length;e<f;++e)d=c[e],b[I(d).toString()]=d}} -function Qg(b,c){var d=c.v;void 0!==d&&("string"===typeof d?b.logos[d]="":ha(d)&&(b.logos[d.src]=d.href))}function Rg(b,c,d,e){c=I(c).toString();d=d.toString();c in b?d in b[c]?(b=b[c][d],e.a<b.a&&(b.a=e.a),e.b>b.b&&(b.b=e.b),e.f<b.f&&(b.f=e.f),e.c>b.c&&(b.c=e.c)):b[c][d]=e:(b[c]={},b[c][d]=e)}function Sg(b,c,d){return[c*(Math.round(b[0]/c)+d[0]%2/2),c*(Math.round(b[1]/c)+d[1]%2/2)]} -function Tg(b,c,d,e,f,g,h,k,l,m){var p=I(c).toString();p in b.wantedTiles||(b.wantedTiles[p]={});var q=b.wantedTiles[p];b=b.tileQueue;var r=d.minZoom,u,w,y,z,D,t;for(t=h;t>=r;--t)for(w=Le(d,g,t,w),y=d.J(t),z=w.a;z<=w.b;++z)for(D=w.f;D<=w.c;++D)h-t<=k?(u=Ug(c,t,z,D,e,f),0==u.N()&&(q[u.L.toString()]=!0,u.getKey()in b.f||b.c([u,p,Pe(d,u.L),y])),void 0!==l&&l.call(m,u)):c.Qc(t,z,D,f)};function Vg(b){this.B=b.opacity;this.o=b.rotateWithView;this.s=b.rotation;this.u=b.scale;this.v=b.snapToPixel};function Wg(b){b=b||{};this.g=void 0!==b.anchor?b.anchor:[.5,.5];this.c=null;this.b=void 0!==b.anchorOrigin?b.anchorOrigin:"top-left";this.l=void 0!==b.anchorXUnits?b.anchorXUnits:"fraction";this.i=void 0!==b.anchorYUnits?b.anchorYUnits:"fraction";var c=void 0!==b.crossOrigin?b.crossOrigin:null,d=void 0!==b.img?b.img:null,e=void 0!==b.imgSize?b.imgSize:null,f=b.src;void 0!==f&&0!==f.length||!d||(f=d.src||I(d).toString());var g=void 0!==b.src?0:2,h;void 0!==b.color?(h=b.color,h=Array.isArray(h)?h: -yd(h)):h=null;var k=Xg.qa(),l=k.get(f,c,h);l||(l=new Yg(d,f,e,c,g,h),k.set(f,c,h,l));this.a=l;this.H=void 0!==b.offset?b.offset:[0,0];this.f=void 0!==b.offsetOrigin?b.offsetOrigin:"top-left";this.h=null;this.j=void 0!==b.size?b.size:null;Vg.call(this,{opacity:void 0!==b.opacity?b.opacity:1,rotation:void 0!==b.rotation?b.rotation:0,scale:void 0!==b.scale?b.scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0,rotateWithView:void 0!==b.rotateWithView?b.rotateWithView:!1})}M(Wg,Vg);n=Wg.prototype; -n.Sa=function(){if(this.c)return this.c;var b=this.g,c=this.ya();if("fraction"==this.l||"fraction"==this.i){if(!c)return null;b=this.g.slice();"fraction"==this.l&&(b[0]*=c[0]);"fraction"==this.i&&(b[1]*=c[1])}if("top-left"!=this.b){if(!c)return null;b===this.g&&(b=this.g.slice());if("top-right"==this.b||"bottom-right"==this.b)b[0]=-b[0]+c[0];if("bottom-left"==this.b||"bottom-right"==this.b)b[1]=-b[1]+c[1]}return this.c=b};n.S=function(b){return this.a.S(b)};n.Db=function(){return this.a.b};n.Ya=function(){return this.a.f}; -n.jb=function(){var b=this.a;if(!b.l)if(b.i){var c=b.b[0],d=b.b[1],e=sf(c,d);e.fillRect(0,0,c,d);b.l=e.canvas}else b.l=b.a;return b.l};n.fa=function(){if(this.h)return this.h;var b=this.H;if("top-left"!=this.f){var c=this.ya(),d=this.a.b;if(!c||!d)return null;b=b.slice();if("top-right"==this.f||"bottom-right"==this.f)b[0]=d[0]-c[0]-b[0];if("bottom-left"==this.f||"bottom-right"==this.f)b[1]=d[1]-c[1]-b[1]}return this.h=b};n.ya=function(){return this.j?this.j:this.a.b}; -n.Mb=function(b,c){return R(this.a,"change",b,c)};n.load=function(){this.a.load()};n.Ub=function(b,c){fb(this.a,"change",b,c)};function Yg(b,c,d,e,f,g){lb.call(this);this.l=null;this.a=b?b:new Image;null!==e&&(this.a.crossOrigin=e);this.c=g?document.createElement("CANVAS"):null;this.h=g;this.g=null;this.f=f;this.b=d;this.o=c;this.i=!1;2==this.f&&Zg(this)}M(Yg,lb);function Zg(b){var c=sf(1,1);try{c.drawImage(b.a,0,0),c.getImageData(0,0,1,1)}catch(d){b.i=!0}} -Yg.prototype.j=function(){this.f=3;this.g.forEach(P);this.g=null;T(this,"change")}; -Yg.prototype.s=function(){this.f=2;this.b&&(this.a.width=this.b[0],this.a.height=this.b[1]);this.b=[this.a.width,this.a.height];this.g.forEach(P);this.g=null;Zg(this);if(!this.i&&null!==this.h){this.c.width=this.a.width;this.c.height=this.a.height;var b=this.c.getContext("2d");b.drawImage(this.a,0,0);for(var c=b.getImageData(0,0,this.a.width,this.a.height),d=c.data,e=this.h[0]/255,f=this.h[1]/255,g=this.h[2]/255,h=0,k=d.length;h<k;h+=4)d[h]*=e,d[h+1]*=f,d[h+2]*=g;b.putImageData(c,0,0)}T(this,"change")}; -Yg.prototype.S=function(){return this.c?this.c:this.a};Yg.prototype.load=function(){if(0==this.f){this.f=1;this.g=[R(this.a,"error",this.j,this,!0),R(this.a,"load",this.s,this,!0)];try{this.a.src=this.o}catch(b){this.j()}}};function Xg(){this.a={};this.b=0}aa(Xg);Xg.prototype.clear=function(){this.a={};this.b=0};Xg.prototype.get=function(b,c,d){b=c+":"+b+":"+(d?wd(d):"null");return b in this.a?this.a[b]:null};Xg.prototype.set=function(b,c,d,e){this.a[c+":"+b+":"+(d?wd(d):"null")]=e;++this.b};function $g(b,c){this.h=c;this.f={};this.B={}}M($g,hb);function ah(b){var c=b.viewState,d=b.coordinateToPixelMatrix;Jg(d,b.size[0]/2,b.size[1]/2,1/c.resolution,-1/c.resolution,-c.rotation,-c.center[0],-c.center[1]);Db(d,b.pixelToCoordinateMatrix)}n=$g.prototype;n.K=function(){for(var b in this.f)ib(this.f[b])};function bh(){var b=Xg.qa();if(32<b.b){var c=0,d,e;for(d in b.a)e=b.a[d],0!==(c++&3)||mb(e)||(delete b.a[d],--b.b)}} -n.Qb=function(b,c,d,e,f,g){function h(b,f){var g=I(b).toString(),h=c.layerStates[I(f)].Wa;if(!(g in c.skippedFeatureUids)||h)return d.call(e,b,h?f:null)}var k,l=c.viewState,m=l.resolution,p=l.projection,l=b;if(p.a){var p=p.C(),q=Ub(p),r=b[0];if(r<p[0]||r>p[2])l=[r+q*Math.ceil((p[0]-r)/q),b[1]]}p=c.layerStatesArray;for(q=p.length-1;0<=q;--q){var u=p[q],r=u.layer;if(Ig(u,m)&&f.call(g,r)&&(u=ch(this,r),r.W()&&(k=u.Xa(r.W().j?l:b,c,h,e)),k))return k}}; -n.zc=function(b,c,d,e){return void 0!==this.Qb(b,c,bc,this,d,e)};function ch(b,c){var d=I(c).toString();if(d in b.f)return b.f[d];var e=b.Bb(c);b.f[d]=e;b.B[d]=R(e,"change",b.rd,b);return e}n.rd=function(){this.h.render()};n.kb=N;n.qe=function(b,c){for(var d in this.f)if(!(c&&d in c.layerStates)){var e=d,f=this.f[e];delete this.f[e];P(this.B[e]);delete this.B[e];ib(f)}};function dh(b,c){for(var d in b.f)if(!(d in c.layerStates)){c.postRenderFunctions.push(b.qe.bind(b));break}} -function Na(b,c){return b.zIndex-c.zIndex};function eh(b,c){this.j=b;this.l=c;this.a=[];this.b=[];this.f={}}eh.prototype.clear=function(){this.a.length=0;this.b.length=0;Wa(this.f)};function fh(b){var c=b.a,d=b.b,e=c[0];1==c.length?(c.length=0,d.length=0):(c[0]=c.pop(),d[0]=d.pop(),gh(b,0));c=b.l(e);delete b.f[c];return e}eh.prototype.c=function(b){var c=this.j(b);return Infinity!=c?(this.a.push(b),this.b.push(c),this.f[this.l(b)]=!0,hh(this,0,this.a.length-1),!0):!1}; -function gh(b,c){for(var d=b.a,e=b.b,f=d.length,g=d[c],h=e[c],k=c;c<f>>1;){var l=2*c+1,m=2*c+2,l=m<f&&e[m]<e[l]?m:l;d[c]=d[l];e[c]=e[l];c=l}d[c]=g;e[c]=h;hh(b,k,c)}function hh(b,c,d){var e=b.a;b=b.b;for(var f=e[d],g=b[d];d>c;){var h=d-1>>1;if(b[h]>g)e[d]=e[h],b[d]=b[h],d=h;else break}e[d]=f;b[d]=g}function ih(b){var c=b.j,d=b.a,e=b.b,f=0,g=d.length,h,k,l;for(k=0;k<g;++k)h=d[k],l=c(h),Infinity==l?delete b.f[b.l(h)]:(e[f]=l,d[f++]=h);d.length=f;e.length=f;for(c=(b.a.length>>1)-1;0<=c;c--)gh(b,c)};function jh(b,c){eh.call(this,function(c){return b.apply(null,c)},function(b){return b[0].getKey()});this.B=c;this.h=0;this.g={}}M(jh,eh);jh.prototype.c=function(b){var c=jh.Y.c.call(this,b);c&&R(b[0],"change",this.i,this);return c};jh.prototype.i=function(b){b=b.target;var c=b.N();if(2===c||3===c||4===c||5===c)fb(b,"change",this.i,this),b=b.getKey(),b in this.g&&(delete this.g[b],--this.h),this.B()};function kh(){this.a=[];this.b=this.f=0}function lh(b,c){var d=b.b,e=.05-d,f=Math.log(.05/b.b)/-.005;return dd({source:c,duration:f,easing:function(b){return d*(Math.exp(-.005*b*f)-1)/e}})};function mh(b){U.call(this);this.T=null;this.set("active",!0);this.handleEvent=b.handleEvent}M(mh,U);mh.prototype.setMap=function(b){this.T=b};function nh(b,c,d,e,f){if(void 0!==d){var g=Xc(c),h=c.ga();void 0!==g&&h&&f&&0<f&&(b.ea(ed({rotation:g,duration:f,easing:ad})),e&&b.ea(dd({source:h,duration:f,easing:ad})));c.rotate(d,e)}}function oh(b,c,d,e,f){var g=c.J();d=c.constrainResolution(g,d,0);ph(b,c,d,e,f)} -function ph(b,c,d,e,f){if(d){var g=c.J(),h=c.ga();void 0!==g&&h&&d!==g&&f&&0<f&&(b.ea(fd({resolution:g,duration:f,easing:ad})),e&&b.ea(dd({source:h,duration:f,easing:ad})));if(e){var k;b=c.ga();f=c.J();void 0!==b&&void 0!==f&&(k=[e[0]-d*(e[0]-b[0])/f,e[1]-d*(e[1]-b[1])/f]);c.ma(k)}Zc(c,d)}};function qh(b){b=b?b:{};this.a=b.delta?b.delta:1;mh.call(this,{handleEvent:rh});this.b=void 0!==b.duration?b.duration:250}M(qh,mh);function rh(b){var c=!1,d=b.originalEvent;if(b.type==ug){var c=b.map,e=b.coordinate,d=d.shiftKey?-this.a:this.a,f=c.O();oh(c,f,d,e,this.b);b.preventDefault();c=!0}return!c};function sh(b){b=b.originalEvent;return b.altKey&&!(b.metaKey||b.ctrlKey)&&b.shiftKey}function th(b){b=b.originalEvent;return 0==b.button&&!(Kd&&Df&&b.ctrlKey)}function uh(b){b=b.originalEvent;return!b.altKey&&!(b.metaKey||b.ctrlKey)&&!b.shiftKey}function vh(b){b=b.originalEvent;return!b.altKey&&!(b.metaKey||b.ctrlKey)&&b.shiftKey}function wh(b){b=b.originalEvent.target.tagName;return"INPUT"!==b&&"SELECT"!==b&&"TEXTAREA"!==b}function xh(b){return"mouse"==b.a.pointerType};function yh(b){b=b?b:{};mh.call(this,{handleEvent:b.handleEvent?b.handleEvent:zh});this.ob=b.handleDownEvent?b.handleDownEvent:cc;this.pb=b.handleDragEvent?b.handleDragEvent:N;this.qb=b.handleMoveEvent?b.handleMoveEvent:N;this.rb=b.handleUpEvent?b.handleUpEvent:cc;this.s=!1;this.G={};this.c=[]}M(yh,mh);function Ah(b){for(var c=b.length,d=0,e=0,f=0;f<c;f++)d+=b[f].clientX,e+=b[f].clientY;return[d/c,e/c]} -function zh(b){if(!(b instanceof qg))return!0;var c=!1,d=b.type;if(d===zg||d===Bg||d===xg)d=b.a,b.type==xg?delete this.G[d.pointerId]:b.type==zg?this.G[d.pointerId]=d:d.pointerId in this.G&&(this.G[d.pointerId]=d),this.c=Xa(this.G);this.s&&(b.type==Bg?this.pb(b):b.type==xg&&(this.s=this.rb(b)));b.type==zg?(this.s=b=this.ob(b),c=this.v(b)):b.type==Ag&&this.qb(b);return!c}yh.prototype.v=function(b){return b};function Bh(b){yh.call(this,{handleDownEvent:Ch,handleDragEvent:Dh,handleUpEvent:Eh});b=b?b:{};this.a=b.kinetic;this.b=this.g=null;this.i=b.condition?b.condition:uh;this.h=!1}M(Bh,yh);function Dh(b){var c=Ah(this.c);this.a&&this.a.a.push(c[0],c[1],Date.now());if(this.b){var d=this.b[0]-c[0],e=c[1]-this.b[1];b=b.map;var f=b.O(),g=f.N(),e=d=[d,e],h=g.resolution;e[0]*=h;e[1]*=h;ub(d,g.rotation);tb(d,g.center);d=f.a.center(d);b.render();f.ma(d)}this.b=c} -function Eh(b){b=b.map;var c=b.O();if(0===this.c.length){var d;if(d=!this.h&&this.a)if(d=this.a,6>d.a.length)d=!1;else{var e=Date.now()-100,f=d.a.length-3;if(d.a[f+2]<e)d=!1;else{for(var g=f-3;0<g&&d.a[g+2]>e;)g-=3;var e=d.a[f+2]-d.a[g+2],h=d.a[f]-d.a[g],f=d.a[f+1]-d.a[g+1];d.f=Math.atan2(f,h);d.b=Math.sqrt(h*h+f*f)/e;d=.05<d.b}}d&&(d=(.05-this.a.b)/-.005,f=this.a.f,g=c.ga(),this.g=lh(this.a,g),b.ea(this.g),g=Fh(b,g),d=b.pa([g[0]-d*Math.cos(f),g[1]-d*Math.sin(f)]),d=c.a.center(d),c.ma(d));$c(c,-1); -b.render();return!1}this.b=null;return!0}function Ch(b){if(0<this.c.length&&this.i(b)){var c=b.map,d=c.O();this.b=null;this.s||$c(d,1);c.render();this.g&&Ka(c.A,this.g)&&(d.ma(b.frameState.viewState.center),this.g=null);this.a&&(b=this.a,b.a.length=0,b.f=0,b.b=0);this.h=1<this.c.length;return!0}return!1}Bh.prototype.v=cc;function Gh(b){b=b?b:{};yh.call(this,{handleDownEvent:Hh,handleDragEvent:Ih,handleUpEvent:Jh});this.b=b.condition?b.condition:sh;this.a=void 0;this.g=void 0!==b.duration?b.duration:250}M(Gh,yh);function Ih(b){if(xh(b)){var c=b.map,d=c.Ha();b=b.pixel;d=Math.atan2(d[1]/2-b[1],b[0]-d[0]/2);if(void 0!==this.a){b=d-this.a;var e=c.O(),f=Xc(e);c.render();nh(c,e,f-b)}this.a=d}} -function Jh(b){if(!xh(b))return!0;b=b.map;var c=b.O();$c(c,-1);var d=Xc(c),e=this.g,d=c.constrainRotation(d,0);nh(b,c,d,void 0,e);return!1}function Hh(b){return xh(b)&&th(b)&&this.b(b)?(b=b.map,$c(b.O(),1),b.render(),this.a=void 0,!0):!1}Gh.prototype.v=cc;function Kh(b){this.c=null;this.b=document.createElement("div");this.b.style.position="absolute";this.b.className="ol-box "+b;this.f=this.g=this.a=null}M(Kh,hb);Kh.prototype.K=function(){this.setMap(null)};function Lh(b){var c=b.g,d=b.f;b=b.b.style;b.left=Math.min(c[0],d[0])+"px";b.top=Math.min(c[1],d[1])+"px";b.width=Math.abs(d[0]-c[0])+"px";b.height=Math.abs(d[1]-c[1])+"px"} -Kh.prototype.setMap=function(b){if(this.a){this.a.o.removeChild(this.b);var c=this.b.style;c.left=c.top=c.width=c.height="inherit"}(this.a=b)&&this.a.o.appendChild(this.b)};function Mh(b){var c=b.g,d=b.f,c=[c,[c[0],d[1]],d,[d[0],c[1]]].map(b.a.pa,b.a);c[4]=c[0].slice();b.c?b.c.X([c]):b.c=new Sc([c])}Kh.prototype.M=function(){return this.c};function Nh(b,c,d){S.call(this,b);this.coordinate=c;this.mapBrowserEvent=d}M(Nh,S);function Oh(b){yh.call(this,{handleDownEvent:Ph,handleDragEvent:Qh,handleUpEvent:Rh});b=b?b:{};this.a=new Kh(b.className||"ol-dragbox");this.b=null;this.j=b.condition?b.condition:bc;this.i=b.boxEndCondition?b.boxEndCondition:Sh}M(Oh,yh);function Sh(b,c,d){b=d[0]-c[0];c=d[1]-c[1];return 64<=b*b+c*c} -function Qh(b){if(xh(b)){var c=this.a,d=b.pixel;c.g=this.b;c.f=d;Mh(c);Lh(c);T(this,new Nh("boxdrag",b.coordinate,b))}}Oh.prototype.M=function(){return this.a.M()};Oh.prototype.h=N;function Rh(b){if(!xh(b))return!0;this.a.setMap(null);this.i(b,this.b,b.pixel)&&(this.h(b),T(this,new Nh("boxend",b.coordinate,b)));return!1} -function Ph(b){if(xh(b)&&th(b)&&this.j(b)){this.b=b.pixel;this.a.setMap(b.map);var c=this.a,d=this.b;c.g=this.b;c.f=d;Mh(c);Lh(c);T(this,new Nh("boxstart",b.coordinate,b));return!0}return!1};function Th(b){b=b?b:{};var c=b.condition?b.condition:vh;this.g=void 0!==b.duration?b.duration:200;this.o=void 0!==b.out?b.out:!1;Oh.call(this,{condition:c,className:b.className||"ol-dragzoom"})}M(Th,Oh); -Th.prototype.h=function(){var b=this.T,c=b.O(),d=b.Ha(),e=this.M().C();if(this.o){var f=c.dc(d),e=[Fh(b,Wb(e)),Fh(b,[e[2],e[3]])],g=Ob(void 0),h,k;h=0;for(k=e.length;h<k;++h)Jb(g,e[h]);g=1/Yc(g,d);e=(f[2]-f[0])/2*(g-1);g=(f[3]-f[1])/2*(g-1);f[0]-=e;f[2]+=e;f[1]-=g;f[3]+=g;e=f}d=c.constrainResolution(Yc(e,d));f=c.J();g=c.ga();b.ea(fd({resolution:f,duration:this.g,easing:ad}));b.ea(dd({source:g,duration:this.g,easing:ad}));c.ma(Xb(e));Zc(c,d)};function Uh(b){mh.call(this,{handleEvent:Vh});b=b||{};this.a=function(b){return uh.call(this,b)&&wh.call(this,b)};this.b=void 0!==b.condition?b.condition:this.a;this.c=void 0!==b.duration?b.duration:100;this.g=void 0!==b.pixelDelta?b.pixelDelta:128}M(Uh,mh); -function Vh(b){var c=!1;if("keydown"==b.type){var d=b.originalEvent.keyCode;if(this.b(b)&&(40==d||37==d||39==d||38==d)){var e=b.map,c=e.O(),f=c.J()*this.g,g=0,h=0;40==d?h=-f:37==d?g=-f:39==d?g=f:h=f;d=[g,h];ub(d,Xc(c));f=this.c;if(g=c.ga())f&&0<f&&e.ea(dd({source:g,duration:f,easing:cd})),e=c.a.center([g[0]+d[0],g[1]+d[1]]),c.ma(e);b.preventDefault();c=!0}}return!c};function Wh(b){mh.call(this,{handleEvent:Xh});b=b?b:{};this.b=b.condition?b.condition:wh;this.a=b.delta?b.delta:1;this.c=void 0!==b.duration?b.duration:100}M(Wh,mh);function Xh(b){var c=!1;if("keydown"==b.type||"keypress"==b.type){var d=b.originalEvent.charCode;if(this.b(b)&&(43==d||45==d)){c=b.map;d=43==d?this.a:-this.a;c.render();var e=c.O();oh(c,e,d,void 0,this.c);b.preventDefault();c=!0}}return!c};function Yh(b){mh.call(this,{handleEvent:Zh});b=b||{};this.a=0;this.i=void 0!==b.duration?b.duration:250;this.j=void 0!==b.useAnchor?b.useAnchor:!0;this.c=null;this.g=this.b=void 0}M(Yh,mh); -function Zh(b){var c=!1;if("wheel"==b.type||"mousewheel"==b.type){var c=b.map,d=b.originalEvent;this.j&&(this.c=b.coordinate);var e;"wheel"==b.type?(e=d.deltaY,Bf&&d.deltaMode===x.WheelEvent.DOM_DELTA_PIXEL&&(e/=Ef),d.deltaMode===x.WheelEvent.DOM_DELTA_LINE&&(e*=40)):"mousewheel"==b.type&&(e=-d.wheelDeltaY,Cf&&(e/=3));this.a+=e;void 0===this.b&&(this.b=Date.now());e=Math.max(80-(Date.now()-this.b),0);x.clearTimeout(this.g);this.g=x.setTimeout(this.h.bind(this,c),e);b.preventDefault();c=!0}return!c} -Yh.prototype.h=function(b){var c=Ba(this.a,-1,1),d=b.O();b.render();oh(b,d,-c,this.c,this.i);this.a=0;this.c=null;this.g=this.b=void 0};function $h(b){yh.call(this,{handleDownEvent:ai,handleDragEvent:bi,handleUpEvent:ci});b=b||{};this.b=null;this.g=void 0;this.a=!1;this.h=0;this.j=void 0!==b.threshold?b.threshold:.3;this.i=void 0!==b.duration?b.duration:250}M($h,yh); -function bi(b){var c=0,d=this.c[0],e=this.c[1],d=Math.atan2(e.clientY-d.clientY,e.clientX-d.clientX);void 0!==this.g&&(c=d-this.g,this.h+=c,!this.a&&Math.abs(this.h)>this.j&&(this.a=!0));this.g=d;b=b.map;d=b.a.getBoundingClientRect();e=Ah(this.c);e[0]-=d.left;e[1]-=d.top;this.b=b.pa(e);this.a&&(d=b.O(),e=Xc(d),b.render(),nh(b,d,e+c,this.b))} -function ci(b){if(2>this.c.length){b=b.map;var c=b.O();$c(c,-1);if(this.a){var d=Xc(c),e=this.b,f=this.i,d=c.constrainRotation(d,0);nh(b,c,d,e,f)}return!1}return!0}function ai(b){return 2<=this.c.length?(b=b.map,this.b=null,this.g=void 0,this.a=!1,this.h=0,this.s||$c(b.O(),1),b.render(),!0):!1}$h.prototype.v=cc;function di(b){yh.call(this,{handleDownEvent:ei,handleDragEvent:fi,handleUpEvent:gi});b=b?b:{};this.b=null;this.h=void 0!==b.duration?b.duration:400;this.a=void 0;this.g=1}M(di,yh);function fi(b){var c=1,d=this.c[0],e=this.c[1],f=d.clientX-e.clientX,d=d.clientY-e.clientY,f=Math.sqrt(f*f+d*d);void 0!==this.a&&(c=this.a/f);this.a=f;1!=c&&(this.g=c);b=b.map;var f=b.O(),d=f.J(),e=b.a.getBoundingClientRect(),g=Ah(this.c);g[0]-=e.left;g[1]-=e.top;this.b=b.pa(g);b.render();ph(b,f,d*c,this.b)} -function gi(b){if(2>this.c.length){b=b.map;var c=b.O();$c(c,-1);var d=c.J(),e=this.b,f=this.h,d=c.constrainResolution(d,0,this.g-1);ph(b,c,d,e,f);return!1}return!0}function ei(b){return 2<=this.c.length?(b=b.map,this.b=null,this.a=void 0,this.g=1,this.s||$c(b.O(),1),b.render(),!0):!1}di.prototype.v=cc;function hi(b){var c=b||{};b=Va({},c);delete b.layers;c=c.layers;Dg.call(this,b);this.b=[];this.a={};R(this,qb("layers"),this.td,this);c?Array.isArray(c)&&(c=new md(c.slice())):c=new md;this.set("layers",c)}M(hi,Dg);n=hi.prototype;n.gb=function(){this.Va()&&this.w()}; -n.td=function(){this.b.forEach(P);this.b.length=0;var b=this.get("layers");this.b.push(R(b,"add",this.sd,this),R(b,"remove",this.ud,this));for(var c in this.a)this.a[c].forEach(P);Wa(this.a);var b=b.a,d,e;c=0;for(d=b.length;c<d;c++)e=b[c],this.a[I(e).toString()]=[R(e,"propertychange",this.gb,this),R(e,"change",this.gb,this)];this.w()};n.sd=function(b){b=b.element;var c=I(b).toString();this.a[c]=[R(b,"propertychange",this.gb,this),R(b,"change",this.gb,this)];this.w()}; -n.ud=function(b){b=I(b.element).toString();this.a[b].forEach(P);delete this.a[b];this.w()};n.Eb=function(b){var c=void 0!==b?b:[],d=c.length;od(this.get("layers"),function(b){b.Eb(c)});b=Eg(this);var e,f;for(e=c.length;d<e;d++)f=c[d],f.opacity*=b.opacity,f.visible=f.visible&&b.visible,f.maxResolution=Math.min(f.maxResolution,b.maxResolution),f.minResolution=Math.max(f.minResolution,b.minResolution),void 0!==b.extent&&(f.extent=void 0!==f.extent?Zb(f.extent,b.extent):b.extent);return c};n.Ib=function(){return"ready"};function ii(b){hc.call(this,{code:b,units:"m",extent:ji,global:!0,worldExtent:ki})}M(ii,hc);ii.prototype.getPointResolution=function(b,c){return b/Ca(c[1]/6378137)};var li=6378137*Math.PI,ji=[-li,-li,li,li],ki=[-180,-85,180,85],mi="EPSG:3857 EPSG:102100 EPSG:102113 EPSG:900913 urn:ogc:def:crs:EPSG:6.18:3:3857 urn:ogc:def:crs:EPSG::3857 http://www.opengis.net/gml/srs/epsg.xml#3857".split(" ").map(function(b){return new ii(b)}); -function ni(b,c,d){var e=b.length;d=1<d?d:2;void 0===c&&(2<d?c=b.slice():c=Array(e));for(var f=0;f<e;f+=d)c[f]=6378137*Math.PI*b[f]/180,c[f+1]=6378137*Math.log(Math.tan(Math.PI*(b[f+1]+90)/360));return c}function oi(b,c,d){var e=b.length;d=1<d?d:2;void 0===c&&(2<d?c=b.slice():c=Array(e));for(var f=0;f<e;f+=d)c[f]=180*b[f]/(6378137*Math.PI),c[f+1]=360*Math.atan(Math.exp(b[f+1]/6378137))/Math.PI-90;return c};var pi=new dc(6378137);function qi(b,c){hc.call(this,{code:b,units:"degrees",extent:ri,axisOrientation:c,global:!0,metersPerUnit:si,worldExtent:ri})}M(qi,hc);qi.prototype.getPointResolution=function(b){return b}; -var ri=[-180,-90,180,90],si=Math.PI*pi.radius/180,ti=[new qi("CRS:84"),new qi("EPSG:4326","neu"),new qi("urn:ogc:def:crs:EPSG::4326","neu"),new qi("urn:ogc:def:crs:EPSG:6.6:4326","neu"),new qi("urn:ogc:def:crs:OGC:1.3:CRS84"),new qi("urn:ogc:def:crs:OGC:2:84"),new qi("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new qi("urn:x-ogc:def:crs:EPSG:4326","neu")];function X(b){b=b?b:{};var c=Va({},b);delete c.preload;delete c.useInterimTilesOnError;Hg.call(this,c);this.set("preload",void 0!==b.preload?b.preload:0);this.set("useInterimTilesOnError",void 0!==b.useInterimTilesOnError?b.useInterimTilesOnError:!0)}M(X,Hg);function ui(b){return b.get("useInterimTilesOnError")};var vi=[0,0,0,1],wi=[],xi=[0,0,0,1];function yi(b,c,d,e){0!==c&&(b.translate(d,e),b.rotate(c),b.translate(-d,-e))};function zi(b){b=b||{};this.a=void 0!==b.color?b.color:null;this.b=void 0}function Ai(b){void 0===b.b&&(b.b=b.a instanceof CanvasPattern||b.a instanceof CanvasGradient?I(b.a).toString():"f"+(b.a?wd(b.a):"-"));return b.b};function Bi(){this.b=-1};function Ci(){this.b=-1;this.b=64;this.a=Array(4);this.g=Array(this.b);this.c=this.f=0;this.a[0]=1732584193;this.a[1]=4023233417;this.a[2]=2562383102;this.a[3]=271733878;this.c=this.f=0}M(Ci,Bi); -function Di(b,c,d){d||(d=0);var e=Array(16);if(da(c))for(var f=0;16>f;++f)e[f]=c.charCodeAt(d++)|c.charCodeAt(d++)<<8|c.charCodeAt(d++)<<16|c.charCodeAt(d++)<<24;else for(f=0;16>f;++f)e[f]=c[d++]|c[d++]<<8|c[d++]<<16|c[d++]<<24;c=b.a[0];d=b.a[1];var f=b.a[2],g=b.a[3],h=0,h=c+(g^d&(f^g))+e[0]+3614090360&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[1]+3905402710&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[2]+606105819&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^ -c))+e[3]+3250441966&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[4]+4118548399&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[5]+1200080426&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[6]+2821735955&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[7]+4249261313&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[8]+1770035416&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[9]+2336552879&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+ -(d^g&(c^d))+e[10]+4294925233&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[11]+2304563134&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[12]+1804603682&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[13]+4254626195&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[14]+2792965006&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[15]+1236535329&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(f^g&(d^f))+e[1]+4129170786&4294967295;c=d+(h<<5&4294967295| -h>>>27);h=g+(d^f&(c^d))+e[6]+3225465664&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[11]+643717713&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[0]+3921069994&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[5]+3593408605&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[10]+38016083&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[15]+3634488961&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[4]+3889429448&4294967295;d=f+(h<<20&4294967295| -h>>>12);h=c+(f^g&(d^f))+e[9]+568446438&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[14]+3275163606&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[3]+4107603335&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[8]+1163531501&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[13]+2850285829&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[2]+4243563512&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[7]+1735328473&4294967295;f=g+(h<<14&4294967295| -h>>>18);h=d+(g^c&(f^g))+e[12]+2368359562&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(d^f^g)+e[5]+4294588738&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[8]+2272392833&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[11]+1839030562&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[14]+4259657740&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[1]+2763975236&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[4]+1272893353&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^ -c^d)+e[7]+4139469664&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[10]+3200236656&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[13]+681279174&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[0]+3936430074&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[3]+3572445317&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[6]+76029189&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[9]+3654602809&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[12]+3873151461&4294967295; -g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[15]+530742520&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[2]+3299628645&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(f^(d|~g))+e[0]+4096336452&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[7]+1126891415&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[14]+2878612391&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[5]+4237533241&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[12]+1700485571&4294967295;c=d+ -(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[3]+2399980690&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[10]+4293915773&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[1]+2240044497&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[8]+1873313359&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[15]+4264355552&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[6]+2734768916&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[13]+1309151649&4294967295; -d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[4]+4149444226&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[11]+3174756917&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[2]+718787259&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[9]+3951481745&4294967295;b.a[0]=b.a[0]+c&4294967295;b.a[1]=b.a[1]+(f+(h<<21&4294967295|h>>>11))&4294967295;b.a[2]=b.a[2]+f&4294967295;b.a[3]=b.a[3]+g&4294967295} -function Ei(b,c){var d;void 0===d&&(d=c.length);for(var e=d-b.b,f=b.g,g=b.f,h=0;h<d;){if(0==g)for(;h<=e;)Di(b,c,h),h+=b.b;if(da(c))for(;h<d;){if(f[g++]=c.charCodeAt(h++),g==b.b){Di(b,f);g=0;break}}else for(;h<d;)if(f[g++]=c[h++],g==b.b){Di(b,f);g=0;break}}b.f=g;b.c+=d};function Fi(b){b=b||{};this.b=void 0!==b.color?b.color:null;this.c=b.lineCap;this.a=void 0!==b.lineDash?b.lineDash:null;this.g=b.lineJoin;this.h=b.miterLimit;this.f=b.width;this.l=void 0} -function Gi(b){if(void 0===b.l){var c="s"+(b.b?wd(b.b):"-")+","+(void 0!==b.c?b.c.toString():"-")+","+(b.a?b.a.toString():"-")+","+(void 0!==b.g?b.g:"-")+","+(void 0!==b.h?b.h.toString():"-")+","+(void 0!==b.f?b.f.toString():"-"),d=new Ci;Ei(d,c);var e=Array((56>d.f?d.b:2*d.b)-d.f);e[0]=128;for(c=1;c<e.length-8;++c)e[c]=0;for(var f=8*d.c,c=e.length-8;c<e.length;++c)e[c]=f&255,f/=256;Ei(d,e);e=Array(16);for(c=f=0;4>c;++c)for(var g=0;32>g;g+=8)e[f++]=d.a[c]>>>g&255;if(8192>=e.length)d=String.fromCharCode.apply(null, -e);else for(d="",c=0;c<e.length;c+=8192)d+=String.fromCharCode.apply(null,sd(e,c,c+8192));b.l=d}return b.l};function Hi(b){b=b||{};this.h=this.a=this.c=null;this.g=void 0!==b.fill?b.fill:null;this.b=void 0!==b.stroke?b.stroke:null;this.f=b.radius;this.j=[0,0];this.i=this.H=this.l=null;var c=b.atlasManager,d,e=null,f,g=0;this.b&&(f=wd(this.b.b),g=this.b.f,void 0===g&&(g=1),e=this.b.a,Ff||(e=null));var h=2*(this.f+g)+1;f={strokeStyle:f,Za:g,size:h,lineDash:e};if(void 0===c)this.a=document.createElement("CANVAS"),this.a.height=h,this.a.width=h,d=h=this.a.width,c=this.a.getContext("2d"),this.Jc(f,c,0,0),this.g? -this.h=this.a:(c=this.h=document.createElement("CANVAS"),c.height=f.size,c.width=f.size,c=c.getContext("2d"),this.Ic(f,c,0,0));else{h=Math.round(h);(e=!this.g)&&(d=this.Ic.bind(this,f));var g=this.b?Gi(this.b):"-",k=this.g?Ai(this.g):"-";this.c&&g==this.c[1]&&k==this.c[2]&&this.f==this.c[3]||(this.c=["c"+g+k+(void 0!==this.f?this.f.toString():"-"),g,k,this.f]);f=c.add(this.c[0],h,h,this.Jc.bind(this,f),d);this.a=f.image;this.j=[f.offsetX,f.offsetY];d=f.image.width;this.h=e?f.Id:this.a}this.l=[h/2, -h/2];this.H=[h,h];this.i=[d,d];Vg.call(this,{opacity:1,rotateWithView:!1,rotation:0,scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0})}M(Hi,Vg);n=Hi.prototype;n.Sa=function(){return this.l};n.jb=function(){return this.h};n.S=function(){return this.a};n.Ya=function(){return 2};n.Db=function(){return this.i};n.fa=function(){return this.j};n.ya=function(){return this.H};n.Mb=N;n.load=N;n.Ub=N; -n.Jc=function(b,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();c.arc(b.size/2,b.size/2,this.f,0,2*Math.PI,!0);this.g&&(c.fillStyle=zd(this.g.a),c.fill());this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.stroke());c.closePath()}; -n.Ic=function(b,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();c.arc(b.size/2,b.size/2,this.f,0,2*Math.PI,!0);c.fillStyle=wd(vi);c.fill();this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.stroke());c.closePath()};function Ii(b){b=b||{};this.h=null;this.f=Ji;void 0!==b.geometry&&Ki(this,b.geometry);this.g=void 0!==b.fill?b.fill:null;this.l=void 0!==b.image?b.image:null;this.c=void 0!==b.stroke?b.stroke:null;this.b=void 0!==b.text?b.text:null;this.a=b.zIndex}Ii.prototype.M=function(){return this.h};Ii.prototype.S=function(){return this.l};function Ki(b,c){ga(c)?b.f=c:"string"===typeof c?b.f=function(b){return b.get(c)}:c?void 0!==c&&(b.f=function(){return c}):b.f=Ji;b.h=c} -function Li(b){if(!ga(b)){var c;c=Array.isArray(b)?b:[b];b=function(){return c}}return b}var Mi=null;function Ni(){if(!Mi){var b=new zi({color:"rgba(255,255,255,0.4)"}),c=new Fi({color:"#3399CC",width:1.25});Mi=[new Ii({image:new Hi({fill:b,stroke:c,radius:5}),fill:b,stroke:c})]}return Mi} -function Oi(){var b={},c=[255,255,255,1],d=[0,153,255,1];b.Polygon=[new Ii({fill:new zi({color:[255,255,255,.5]})})];b.MultiPolygon=b.Polygon;b.LineString=[new Ii({stroke:new Fi({color:c,width:5})}),new Ii({stroke:new Fi({color:d,width:3})})];b.MultiLineString=b.LineString;b.Circle=b.Polygon.concat(b.LineString);b.Point=[new Ii({image:new Hi({radius:6,fill:new zi({color:d}),stroke:new Fi({color:c,width:1.5})}),zIndex:Infinity})];b.MultiPoint=b.Point;b.GeometryCollection=b.Polygon.concat(b.LineString, -b.Point);return b}function Ji(b){return b.M()};function Y(b){b=b?b:{};var c=Va({},b);delete c.style;delete c.renderBuffer;delete c.updateWhileAnimating;delete c.updateWhileInteracting;Hg.call(this,c);this.a=void 0!==b.renderBuffer?b.renderBuffer:100;this.o=null;this.g=void 0;this.s(b.style);this.i=void 0!==b.updateWhileAnimating?b.updateWhileAnimating:!1;this.j=void 0!==b.updateWhileInteracting?b.updateWhileInteracting:!1}M(Y,Hg);Y.prototype.s=function(b){this.o=void 0!==b?b:Ni;this.g=null===b?void 0:Li(this.o);this.w()};function Pi(b,c,d,e,f){this.c=b;this.u=c;this.l=d;this.v=e;this.Ca=f;this.g=this.a=this.b=this.Z=this.T=this.R=null;this.aa=this.ha=this.o=this.D=this.I=this.A=0;this.da=!1;this.h=this.ka=0;this.ua=!1;this.V=0;this.f="";this.j=this.H=this.va=this.la=0;this.G=this.B=this.i=null;this.s=[];this.wa=yb()}M(Pi,Fg); -function Qi(b,c,d){if(b.g){c=zc(c,0,d,2,b.v,b.s);d=b.c;var e=b.wa,f=d.globalAlpha;1!=b.o&&(d.globalAlpha=f*b.o);var g=b.ka;b.da&&(g+=b.Ca);var h,k;h=0;for(k=c.length;h<k;h+=2){var l=c[h]-b.A,m=c[h+1]-b.I;b.ua&&(l=Math.round(l),m=Math.round(m));if(0!==g||1!=b.h){var p=l+b.A,q=m+b.I;Jg(e,p,q,b.h,b.h,g,-p,-q);d.setTransform(e[0],e[1],e[4],e[5],e[12],e[13])}d.drawImage(b.g,b.ha,b.aa,b.V,b.D,l,m,b.V,b.D)}0===g&&1==b.h||d.setTransform(1,0,0,1,0,0);1!=b.o&&(d.globalAlpha=f)}} -function Ri(b,c,d,e){var f=0;if(b.G&&""!==b.f){b.i&&Si(b,b.i);b.B&&Ti(b,b.B);var g=b.G,h=b.c,k=b.Z;k?(k.font!=g.font&&(k.font=h.font=g.font),k.textAlign!=g.textAlign&&(k.textAlign=h.textAlign=g.textAlign),k.textBaseline!=g.textBaseline&&(k.textBaseline=h.textBaseline=g.textBaseline)):(h.font=g.font,h.textAlign=g.textAlign,h.textBaseline=g.textBaseline,b.Z={font:g.font,textAlign:g.textAlign,textBaseline:g.textBaseline});c=zc(c,f,d,e,b.v,b.s);for(g=b.c;f<d;f+=e){h=c[f]+b.la;k=c[f+1]+b.va;if(0!==b.H|| -1!=b.j){var l=Jg(b.wa,h,k,b.j,b.j,b.H,-h,-k);g.setTransform(l[0],l[1],l[4],l[5],l[12],l[13])}b.B&&g.strokeText(b.f,h,k);b.i&&g.fillText(b.f,h,k)}0===b.H&&1==b.j||g.setTransform(1,0,0,1,0,0)}}function Ui(b,c,d,e,f,g){var h=b.c;b=zc(c,d,e,f,b.v,b.s);h.moveTo(b[0],b[1]);c=b.length;g&&(c-=2);for(d=2;d<c;d+=2)h.lineTo(b[d],b[d+1]);g&&h.closePath();return e}function Vi(b,c,d,e,f){var g,h;g=0;for(h=e.length;g<h;++g)d=Ui(b,c,d,e[g],f,!0);return d}n=Pi.prototype; -n.hc=function(b){if($b(this.l,b.C())){if(this.b||this.a){this.b&&Si(this,this.b);this.a&&Ti(this,this.a);var c;c=this.v;var d=this.s,e=b.a;c=e?zc(e,0,e.length,b.b,c,d):null;d=c[2]-c[0];e=c[3]-c[1];d=Math.sqrt(d*d+e*e);e=this.c;e.beginPath();e.arc(c[0],c[1],d,0,2*Math.PI);this.b&&e.fill();this.a&&e.stroke()}""!==this.f&&Ri(this,b.a.slice(0,b.b),2,2)}};n.Ra=function(b){var c=b.a;b=b.b;this.g&&Qi(this,c,c.length);""!==this.f&&Ri(this,c,c.length,b)}; -n.Qa=function(b){var c=b.a;b=b.b;this.g&&Qi(this,c,c.length);""!==this.f&&Ri(this,c,c.length,b)};n.ic=function(b){if($b(this.l,b.C())){if(this.a){Ti(this,this.a);var c=this.c,d=b.a;c.beginPath();Ui(this,d,0,d.length,b.b,!1);c.stroke()}""!==this.f&&(b=Wi(b),Ri(this,b,2,2))}}; -n.jc=function(b){var c=b.C();if($b(this.l,c)){if(this.a){Ti(this,this.a);var c=this.c,d=b.a,e=0,f=b.Ta(),g=b.b;c.beginPath();var h,k;h=0;for(k=f.length;h<k;++h)e=Ui(this,d,e,f[h],g,!1);c.stroke()}""!==this.f&&(b=Xi(b),Ri(this,b,b.length,2))}};n.lc=function(b){if($b(this.l,b.C())){if(this.a||this.b){this.b&&Si(this,this.b);this.a&&Ti(this,this.a);var c=this.c;c.beginPath();Vi(this,Uc(b),0,b.Ta(),b.b);this.b&&c.fill();this.a&&c.stroke()}""!==this.f&&(b=Vc(b),Ri(this,b,2,2))}}; -n.kc=function(b){if($b(this.l,b.C())){if(this.a||this.b){this.b&&Si(this,this.b);this.a&&Ti(this,this.a);var c=this.c,d=Yi(b),e=0,f=b.c,g=b.b,h,k;h=0;for(k=f.length;h<k;++h){var l=f[h];c.beginPath();e=Vi(this,d,e,l,g);this.b&&c.fill();this.a&&c.stroke()}}""!==this.f&&(b=Zi(b),Ri(this,b,b.length,2))}};function Si(b,c){var d=b.c,e=b.R;e?e.fillStyle!=c.fillStyle&&(e.fillStyle=d.fillStyle=c.fillStyle):(d.fillStyle=c.fillStyle,b.R={fillStyle:c.fillStyle})} -function Ti(b,c){var d=b.c,e=b.T;e?(e.lineCap!=c.lineCap&&(e.lineCap=d.lineCap=c.lineCap),Ff&&!La(e.lineDash,c.lineDash)&&d.setLineDash(e.lineDash=c.lineDash),e.lineJoin!=c.lineJoin&&(e.lineJoin=d.lineJoin=c.lineJoin),e.lineWidth!=c.lineWidth&&(e.lineWidth=d.lineWidth=c.lineWidth),e.miterLimit!=c.miterLimit&&(e.miterLimit=d.miterLimit=c.miterLimit),e.strokeStyle!=c.strokeStyle&&(e.strokeStyle=d.strokeStyle=c.strokeStyle)):(d.lineCap=c.lineCap,Ff&&d.setLineDash(c.lineDash),d.lineJoin=c.lineJoin,d.lineWidth= -c.lineWidth,d.miterLimit=c.miterLimit,d.strokeStyle=c.strokeStyle,b.T={lineCap:c.lineCap,lineDash:c.lineDash,lineJoin:c.lineJoin,lineWidth:c.lineWidth,miterLimit:c.miterLimit,strokeStyle:c.strokeStyle})} -n.za=function(b,c){if(b){var d=b.a;this.b={fillStyle:zd(d?d:vi)}}else this.b=null;if(c){var d=c.b,e=c.c,f=c.a,g=c.g,h=c.f,k=c.h;this.a={lineCap:void 0!==e?e:"round",lineDash:f?f:wi,lineJoin:void 0!==g?g:"round",lineWidth:this.u*(void 0!==h?h:1),miterLimit:void 0!==k?k:10,strokeStyle:wd(d?d:xi)}}else this.a=null}; -n.Aa=function(b){if(b){var c=b.Sa(),d=b.S(1),e=b.fa(),f=b.ya();this.A=c[0];this.I=c[1];this.D=f[1];this.g=d;this.o=b.B;this.ha=e[0];this.aa=e[1];this.da=b.o;this.ka=b.s;this.h=b.u;this.ua=b.v;this.V=f[0]}else this.g=null}; -n.sa=function(b){if(b){var c=b.c;c?(c=c.a,this.i={fillStyle:zd(c?c:vi)}):this.i=null;var d=b.l;if(d){var c=d.b,e=d.c,f=d.a,g=d.g,h=d.f,d=d.h;this.B={lineCap:void 0!==e?e:"round",lineDash:f?f:wi,lineJoin:void 0!==g?g:"round",lineWidth:void 0!==h?h:1,miterLimit:void 0!==d?d:10,strokeStyle:wd(c?c:xi)}}else this.B=null;var c=b.a,e=b.b,f=b.f,g=b.g,h=b.h,d=b.i,k=b.j;b=b.B;this.G={font:void 0!==c?c:"10px sans-serif",textAlign:void 0!==k?k:"center",textBaseline:void 0!==b?b:"middle"};this.f=void 0!==d?d: -"";this.la=void 0!==e?this.u*e:0;this.va=void 0!==f?this.u*f:0;this.H=void 0!==g?g:0;this.j=this.u*(void 0!==h?h:1)}else this.f=""};function $i(b){Mg.call(this,b);this.I=yb()}M($i,Mg); -$i.prototype.g=function(b,c,d){aj(this,"precompose",d,b,void 0);var e=this.S();if(e){var f=c.extent,g=void 0!==f;if(g){var h=b.pixelRatio,k=b.size[0]*h,l=b.size[1]*h,m=b.viewState.rotation,p=ac(f),q=[f[2],f[3]],r=[f[2],f[1]],f=Wb(f);Lg(b.coordinateToPixelMatrix,p,p);Lg(b.coordinateToPixelMatrix,q,q);Lg(b.coordinateToPixelMatrix,r,r);Lg(b.coordinateToPixelMatrix,f,f);d.save();yi(d,-m,k/2,l/2);d.beginPath();d.moveTo(p[0]*h,p[1]*h);d.lineTo(q[0]*h,q[1]*h);d.lineTo(r[0]*h,r[1]*h);d.lineTo(f[0]*h,f[1]* -h);d.clip();yi(d,m,k/2,l/2)}h=this.D;k=d.globalAlpha;d.globalAlpha=c.opacity;d.drawImage(e,0,0,+e.width,+e.height,Math.round(h[12]),Math.round(h[13]),Math.round(e.width*h[0]),Math.round(e.height*h[5]));d.globalAlpha=k;g&&d.restore()}aj(this,"postcompose",d,b,void 0)}; -function aj(b,c,d,e,f){var g=b.a;if(mb(g,c)){var h=e.size[0]*e.pixelRatio,k=e.size[1]*e.pixelRatio,l=e.viewState.rotation;yi(d,-l,h/2,k/2);b=void 0!==f?f:bj(b,e,0);b=new Pi(d,e.pixelRatio,e.extent,b,e.viewState.rotation);T(g,new Gg(c,g,b,e,d,null));yi(d,l,h/2,k/2)}}function bj(b,c,d){var e=c.viewState,f=c.pixelRatio;return Jg(b.I,f*c.size[0]/2,f*c.size[1]/2,f/e.resolution,-f/e.resolution,-e.rotation,-e.center[0]+d,-e.center[1])};var cj=["Polygon","LineString","Image","Text"];function dj(b,c,d){this.aa=b;this.G=c;this.c=null;this.g=0;this.resolution=d;this.D=this.I=null;this.b=[];this.coordinates=[];this.T=yb();this.a=[];this.R=[];this.Z=yb();this.ha=yb()}M(dj,Fg); -function ej(b,c,d,e,f,g){var h=b.coordinates.length,k=b.Cb(),l=[c[d],c[d+1]],m=[NaN,NaN],p=!0,q,r,u;for(q=d+f;q<e;q+=f){m[0]=c[q];m[1]=c[q+1];u=k[1];var w=k[2],y=k[3],z=m[0],D=m[1],t=0;z<k[0]?t=t|16:z>w&&(t=t|4);D<u?t|=8:D>y&&(t|=2);0===t&&(t=1);u=t;u!==r?(p&&(b.coordinates[h++]=l[0],b.coordinates[h++]=l[1]),b.coordinates[h++]=m[0],b.coordinates[h++]=m[1],p=!1):1===u?(b.coordinates[h++]=m[0],b.coordinates[h++]=m[1],p=!1):p=!0;l[0]=m[0];l[1]=m[1];r=u}q===d+f&&(b.coordinates[h++]=l[0],b.coordinates[h++]= -l[1]);g&&(b.coordinates[h++]=c[d],b.coordinates[h++]=c[d+1]);return h}function fj(b,c){b.I=[0,c,0];b.b.push(b.I);b.D=[0,c,0];b.a.push(b.D)} -function gj(b,c,d,e,f,g,h,k,l){var m;Kg(e,b.T)?m=b.R:(m=zc(b.coordinates,0,b.coordinates.length,2,e,b.R),Bb(b.T,e));e=!Za(g);var p=0,q=h.length,r=0,u,w=b.Z;b=b.ha;for(var y,z,D,t;p<q;){var v=h[p],B,F,C,G;switch(v[0]){case 0:r=v[1];e&&g[I(r).toString()]||!r.M()?p=v[2]:void 0===l||$b(l,r.M().C())?++p:p=v[2];break;case 1:c.beginPath();++p;break;case 2:r=v[1];u=m[r];v=m[r+1];D=m[r+2]-u;r=m[r+3]-v;c.arc(u,v,Math.sqrt(D*D+r*r),0,2*Math.PI,!0);++p;break;case 3:c.closePath();++p;break;case 4:r=v[1];u=v[2]; -B=v[3];C=v[4]*d;var J=v[5]*d,A=v[6];F=v[7];var H=v[8],O=v[9];D=v[11];t=v[12];var Q=v[13],L=v[14];for(v[10]&&(D+=f);r<u;r+=2){v=m[r]-C;G=m[r+1]-J;Q&&(v=Math.round(v),G=Math.round(G));if(1!=t||0!==D){var K=v+C,fa=G+J;Jg(w,K,fa,t,t,D,-K,-fa);c.transform(w[0],w[1],w[4],w[5],w[12],w[13])}K=c.globalAlpha;1!=F&&(c.globalAlpha=K*F);var fa=L+H>B.width?B.width-H:L,ra=A+O>B.height?B.height-O:A;c.drawImage(B,H,O,fa,ra,v,G,fa*d,ra*d);1!=F&&(c.globalAlpha=K);if(1!=t||0!==D)Db(w,b),c.transform(b[0],b[1],b[4],b[5], -b[12],b[13])}++p;break;case 5:r=v[1];u=v[2];C=v[3];J=v[4]*d;A=v[5]*d;D=v[6];t=v[7]*d;B=v[8];for(F=v[9];r<u;r+=2){v=m[r]+J;G=m[r+1]+A;if(1!=t||0!==D)Jg(w,v,G,t,t,D,-v,-G),c.transform(w[0],w[1],w[4],w[5],w[12],w[13]);H=C.split("\n");O=H.length;1<O?(Q=Math.round(1.5*c.measureText("M").width),G-=(O-1)/2*Q):Q=0;for(L=0;L<O;L++)K=H[L],F&&c.strokeText(K,v,G),B&&c.fillText(K,v,G),G+=Q;if(1!=t||0!==D)Db(w,b),c.transform(b[0],b[1],b[4],b[5],b[12],b[13])}++p;break;case 6:if(void 0!==k&&(r=v[1],r=k(r)))return r; -++p;break;case 7:c.fill();++p;break;case 8:r=v[1];u=v[2];v=m[r];G=m[r+1];D=v+.5|0;t=G+.5|0;if(D!==y||t!==z)c.moveTo(v,G),y=D,z=t;for(r+=2;r<u;r+=2)if(v=m[r],G=m[r+1],D=v+.5|0,t=G+.5|0,D!==y||t!==z)c.lineTo(v,G),y=D,z=t;++p;break;case 9:c.fillStyle=v[1];++p;break;case 10:y=void 0!==v[7]?v[7]:!0;z=v[2];c.strokeStyle=v[1];c.lineWidth=y?z*d:z;c.lineCap=v[3];c.lineJoin=v[4];c.miterLimit=v[5];Ff&&c.setLineDash(v[6]);z=y=NaN;++p;break;case 11:c.font=v[1];c.textAlign=v[2];c.textBaseline=v[3];++p;break;case 12:c.stroke(); -++p;break;default:++p}}}function hj(b){var c=b.a;c.reverse();var d,e=c.length,f,g,h=-1;for(d=0;d<e;++d)if(f=c[d],g=f[0],6==g)h=d;else if(0==g){f[2]=d;f=b.a;for(g=d;h<g;){var k=f[h];f[h]=f[g];f[g]=k;++h;--g}h=-1}}function ij(b,c){b.I[2]=b.b.length;b.I=null;b.D[2]=b.a.length;b.D=null;var d=[6,c];b.b.push(d);b.a.push(d)}dj.prototype.ib=N;dj.prototype.Cb=function(){return this.G}; -function jj(b,c,d){dj.call(this,b,c,d);this.i=this.V=null;this.A=this.v=this.H=this.u=this.s=this.o=this.B=this.j=this.l=this.h=this.f=void 0}M(jj,dj);jj.prototype.Ra=function(b,c){if(this.i){fj(this,c);var d=b.a,e=this.coordinates.length,d=ej(this,d,0,d.length,b.b,!1);this.b.push([4,e,d,this.i,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);this.a.push([4,e,d,this.V,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);ij(this,c)}}; -jj.prototype.Qa=function(b,c){if(this.i){fj(this,c);var d=b.a,e=this.coordinates.length,d=ej(this,d,0,d.length,b.b,!1);this.b.push([4,e,d,this.i,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);this.a.push([4,e,d,this.V,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);ij(this,c)}};jj.prototype.ib=function(){hj(this);this.h=this.f=void 0;this.i=this.V=null;this.A=this.v=this.u=this.s=this.o=this.B=this.j=this.H=this.l=void 0}; -jj.prototype.Aa=function(b){var c=b.Sa(),d=b.ya(),e=b.jb(1),f=b.S(1),g=b.fa();this.f=c[0];this.h=c[1];this.V=e;this.i=f;this.l=d[1];this.j=b.B;this.B=g[0];this.o=g[1];this.s=b.o;this.u=b.s;this.H=b.u;this.v=b.v;this.A=d[0]};function kj(b,c,d){dj.call(this,b,c,d);this.f={Pa:void 0,Ka:void 0,La:null,Ma:void 0,Na:void 0,Oa:void 0,Lb:0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}M(kj,dj); -function lj(b,c,d,e,f){var g=b.coordinates.length;c=ej(b,c,d,e,f,!1);g=[8,g,c];b.b.push(g);b.a.push(g);return e}n=kj.prototype;n.Cb=function(){this.c||(this.c=Lb(this.G),0<this.g&&Kb(this.c,this.resolution*(this.g+1)/2,this.c));return this.c}; -function mj(b){var c=b.f,d=c.strokeStyle,e=c.lineCap,f=c.lineDash,g=c.lineJoin,h=c.lineWidth,k=c.miterLimit;c.Pa==d&&c.Ka==e&&La(c.La,f)&&c.Ma==g&&c.Na==h&&c.Oa==k||(c.Lb!=b.coordinates.length&&(b.b.push([12]),c.Lb=b.coordinates.length),b.b.push([10,d,h,e,g,k,f],[1]),c.Pa=d,c.Ka=e,c.La=f,c.Ma=g,c.Na=h,c.Oa=k)} -n.ic=function(b,c){var d=this.f,e=d.lineWidth;void 0!==d.strokeStyle&&void 0!==e&&(mj(this),fj(this,c),this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash],[1]),d=b.a,lj(this,d,0,d.length,b.b),this.a.push([12]),ij(this,c))}; -n.jc=function(b,c){var d=this.f,e=d.lineWidth;if(void 0!==d.strokeStyle&&void 0!==e){mj(this);fj(this,c);this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash],[1]);var d=b.Ta(),e=b.a,f=b.b,g=0,h,k;h=0;for(k=d.length;h<k;++h)g=lj(this,e,g,d[h],f);this.a.push([12]);ij(this,c)}};n.ib=function(){this.f.Lb!=this.coordinates.length&&this.b.push([12]);hj(this);this.f=null}; -n.za=function(b,c){var d=c.b;this.f.strokeStyle=wd(d?d:xi);d=c.c;this.f.lineCap=void 0!==d?d:"round";d=c.a;this.f.lineDash=d?d:wi;d=c.g;this.f.lineJoin=void 0!==d?d:"round";d=c.f;this.f.lineWidth=void 0!==d?d:1;d=c.h;this.f.miterLimit=void 0!==d?d:10;this.f.lineWidth>this.g&&(this.g=this.f.lineWidth,this.c=null)}; -function nj(b,c,d){dj.call(this,b,c,d);this.f={gc:void 0,Pa:void 0,Ka:void 0,La:null,Ma:void 0,Na:void 0,Oa:void 0,fillStyle:void 0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}M(nj,dj); -function oj(b,c,d,e,f){var g=b.f,h=[1];b.b.push(h);b.a.push(h);var k,h=0;for(k=e.length;h<k;++h){var l=e[h],m=b.coordinates.length;d=ej(b,c,d,l,f,!0);d=[8,m,d];m=[3];b.b.push(d,m);b.a.push(d,m);d=l}c=[7];b.a.push(c);void 0!==g.fillStyle&&b.b.push(c);void 0!==g.strokeStyle&&(g=[12],b.b.push(g),b.a.push(g));return d}n=nj.prototype; -n.hc=function(b,c){var d=this.f,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e){pj(this);fj(this,c);this.a.push([9,wd(vi)]);void 0!==d.strokeStyle&&this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]);var f=b.a,e=this.coordinates.length;ej(this,f,0,f.length,b.b,!1);f=[1];e=[2,e];this.b.push(f,e);this.a.push(f,e);e=[7];this.a.push(e);void 0!==d.fillStyle&&this.b.push(e);void 0!==d.strokeStyle&&(d=[12],this.b.push(d),this.a.push(d));ij(this,c)}}; -n.lc=function(b,c){var d=this.f,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e)pj(this),fj(this,c),this.a.push([9,wd(vi)]),void 0!==d.strokeStyle&&this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]),d=b.Ta(),e=Uc(b),oj(this,e,0,d,b.b),ij(this,c)}; -n.kc=function(b,c){var d=this.f,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e){pj(this);fj(this,c);this.a.push([9,wd(vi)]);void 0!==d.strokeStyle&&this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]);var d=b.c,e=Yi(b),f=b.b,g=0,h,k;h=0;for(k=d.length;h<k;++h)g=oj(this,e,g,d[h],f);ij(this,c)}};n.ib=function(){hj(this);this.f=null;var b=this.aa;if(0!==b){var c=this.coordinates,d,e;d=0;for(e=c.length;d<e;++d)c[d]=b*Math.round(c[d]/b)}}; -n.Cb=function(){this.c||(this.c=Lb(this.G),0<this.g&&Kb(this.c,this.resolution*(this.g+1)/2,this.c));return this.c}; -n.za=function(b,c){var d=this.f;if(b){var e=b.a;d.fillStyle=zd(e?e:vi)}else d.fillStyle=void 0;c?(e=c.b,d.strokeStyle=wd(e?e:xi),e=c.c,d.lineCap=void 0!==e?e:"round",e=c.a,d.lineDash=e?e.slice():wi,e=c.g,d.lineJoin=void 0!==e?e:"round",e=c.f,d.lineWidth=void 0!==e?e:1,e=c.h,d.miterLimit=void 0!==e?e:10,d.lineWidth>this.g&&(this.g=d.lineWidth,this.c=null)):(d.strokeStyle=void 0,d.lineCap=void 0,d.lineDash=null,d.lineJoin=void 0,d.lineWidth=void 0,d.miterLimit=void 0)}; -function pj(b){var c=b.f,d=c.fillStyle,e=c.strokeStyle,f=c.lineCap,g=c.lineDash,h=c.lineJoin,k=c.lineWidth,l=c.miterLimit;void 0!==d&&c.gc!=d&&(b.b.push([9,d]),c.gc=c.fillStyle);void 0===e||c.Pa==e&&c.Ka==f&&c.La==g&&c.Ma==h&&c.Na==k&&c.Oa==l||(b.b.push([10,e,k,f,h,l,g]),c.Pa=e,c.Ka=f,c.La=g,c.Ma=h,c.Na=k,c.Oa=l)}function qj(b,c,d){dj.call(this,b,c,d);this.v=this.H=this.u=null;this.i="";this.s=this.o=this.B=this.j=0;this.l=this.h=this.f=null}M(qj,dj); -function rj(b,c,d,e,f){if(""!==b.i&&b.l&&(b.f||b.h)){if(b.f){var g=b.f,h=b.u;if(!h||h.fillStyle!=g.fillStyle){var k=[9,g.fillStyle];b.b.push(k);b.a.push(k);h?h.fillStyle=g.fillStyle:b.u={fillStyle:g.fillStyle}}}b.h&&(g=b.h,h=b.H,h&&h.lineCap==g.lineCap&&h.lineDash==g.lineDash&&h.lineJoin==g.lineJoin&&h.lineWidth==g.lineWidth&&h.miterLimit==g.miterLimit&&h.strokeStyle==g.strokeStyle||(k=[10,g.strokeStyle,g.lineWidth,g.lineCap,g.lineJoin,g.miterLimit,g.lineDash,!1],b.b.push(k),b.a.push(k),h?(h.lineCap= -g.lineCap,h.lineDash=g.lineDash,h.lineJoin=g.lineJoin,h.lineWidth=g.lineWidth,h.miterLimit=g.miterLimit,h.strokeStyle=g.strokeStyle):b.H={lineCap:g.lineCap,lineDash:g.lineDash,lineJoin:g.lineJoin,lineWidth:g.lineWidth,miterLimit:g.miterLimit,strokeStyle:g.strokeStyle}));g=b.l;h=b.v;h&&h.font==g.font&&h.textAlign==g.textAlign&&h.textBaseline==g.textBaseline||(k=[11,g.font,g.textAlign,g.textBaseline],b.b.push(k),b.a.push(k),h?(h.font=g.font,h.textAlign=g.textAlign,h.textBaseline=g.textBaseline):b.v= -{font:g.font,textAlign:g.textAlign,textBaseline:g.textBaseline});fj(b,f);g=b.coordinates.length;c=ej(b,c,0,d,e,!1);c=[5,g,c,b.i,b.j,b.B,b.o,b.s,!!b.f,!!b.h];b.b.push(c);b.a.push(c);ij(b,f)}} -qj.prototype.sa=function(b){if(b){var c=b.c;c?(c=c.a,c=zd(c?c:vi),this.f?this.f.fillStyle=c:this.f={fillStyle:c}):this.f=null;var d=b.l;if(d){var c=d.b,e=d.c,f=d.a,g=d.g,h=d.f,d=d.h,e=void 0!==e?e:"round",f=f?f.slice():wi,g=void 0!==g?g:"round",h=void 0!==h?h:1,d=void 0!==d?d:10,c=wd(c?c:xi);if(this.h){var k=this.h;k.lineCap=e;k.lineDash=f;k.lineJoin=g;k.lineWidth=h;k.miterLimit=d;k.strokeStyle=c}else this.h={lineCap:e,lineDash:f,lineJoin:g,lineWidth:h,miterLimit:d,strokeStyle:c}}else this.h=null; -var l=b.a,c=b.b,e=b.f,f=b.g,h=b.h,d=b.i,g=b.j,k=b.B;b=void 0!==l?l:"10px sans-serif";g=void 0!==g?g:"center";k=void 0!==k?k:"middle";this.l?(l=this.l,l.font=b,l.textAlign=g,l.textBaseline=k):this.l={font:b,textAlign:g,textBaseline:k};this.i=void 0!==d?d:"";this.j=void 0!==c?c:0;this.B=void 0!==e?e:0;this.o=void 0!==f?f:0;this.s=void 0!==h?h:1}else this.i=""};function sj(b,c,d,e){this.o=b;this.h=c;this.B=d;this.l=e;this.b={};this.i=sf(1,1);this.j=yb()} -function tj(b){for(var c in b.b){var d=b.b[c],e;for(e in d)d[e].ib()}}sj.prototype.g=function(b,c,d,e,f){var g=this.j;Jg(g,.5,.5,1/c,-1/c,-d,-b[0],-b[1]);var h=this.i;h.clearRect(0,0,1,1);var k;void 0!==this.l&&(k=Ib(),Jb(k,b),Kb(k,c*this.l,k));return uj(this,h,g,d,e,function(b){if(0<h.getImageData(0,0,1,1).data[3]){if(b=f(b))return b;h.clearRect(0,0,1,1)}},k)}; -sj.prototype.a=function(b,c){var d=void 0!==b?b.toString():"0",e=this.b[d];void 0===e&&(e={},this.b[d]=e);d=e[c];void 0===d&&(d=new vj[c](this.o,this.h,this.B),e[c]=d);return d};sj.prototype.c=function(){return Za(this.b)}; -sj.prototype.f=function(b,c,d,e,f,g){var h=Object.keys(this.b).map(Number);h.sort(Ga);if(!1!==g){var k=this.h;g=k[0];var l=k[1],m=k[2],k=k[3];g=[g,l,g,k,m,k,m,l];zc(g,0,8,2,d,g);b.save();b.beginPath();b.moveTo(g[0],g[1]);b.lineTo(g[2],g[3]);b.lineTo(g[4],g[5]);b.lineTo(g[6],g[7]);b.closePath();b.clip()}var p,q;g=0;for(l=h.length;g<l;++g)for(p=this.b[h[g].toString()],m=0,k=cj.length;m<k;++m)q=p[cj[m]],void 0!==q&&gj(q,b,c,d,e,f,q.b,void 0);b.restore()}; -function uj(b,c,d,e,f,g,h){var k=Object.keys(b.b).map(Number);k.sort(function(b,c){return c-b});var l,m,p,q,r;l=0;for(m=k.length;l<m;++l)for(q=b.b[k[l].toString()],p=cj.length-1;0<=p;--p)if(r=q[cj[p]],void 0!==r&&(r=gj(r,c,1,d,e,f,r.a,g,h)))return r}var vj={Image:jj,LineString:kj,Polygon:nj,Text:qj};function wj(b,c){return I(b)-I(c)}function xj(b,c){var d=.5*b/c;return d*d}function yj(b,c,d,e,f,g){var h=!1,k,l;if(k=d.S())l=k.Ya(),2==l||3==l?k.Ub(f,g):(0==l&&k.load(),k.Mb(f,g),h=!0);if(f=(0,d.f)(c))e=f.Hb(e),(0,zj[e.U()])(b,e,d,c);return h} -var zj={Point:function(b,c,d,e){var f=d.S();if(f){if(2!=f.Ya())return;var g=b.a(d.a,"Image");g.Aa(f);g.Ra(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,c.a,2,2,e)},LineString:function(b,c,d,e){var f=d.c;if(f){var g=b.a(d.a,"LineString");g.za(null,f);g.ic(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,Wi(c),2,2,e)},Polygon:function(b,c,d,e){var f=d.g,g=d.c;if(f||g){var h=b.a(d.a,"Polygon");h.za(f,g);h.lc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,Vc(c),2,2,e)},MultiPoint:function(b,c,d,e){var f=d.S(); -if(f){if(2!=f.Ya())return;var g=b.a(d.a,"Image");g.Aa(f);g.Qa(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),d=c.a,rj(b,d,d.length,c.b,e)},MultiLineString:function(b,c,d,e){var f=d.c;if(f){var g=b.a(d.a,"LineString");g.za(null,f);g.jc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),c=Xi(c),rj(b,c,c.length,2,e)},MultiPolygon:function(b,c,d,e){var f=d.g,g=d.c;if(g||f){var h=b.a(d.a,"Polygon");h.za(f,g);h.kc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),c=Zi(c),rj(b,c,c.length,2,e)},GeometryCollection:function(b,c,d,e){c= -c.a;var f,g;f=0;for(g=c.length;f<g;++f)(0,zj[c[f].U()])(b,c[f],d,e)},Circle:function(b,c,d,e){var f=d.g,g=d.c;if(f||g){var h=b.a(d.a,"Polygon");h.za(f,g);h.hc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,c.a.slice(0,c.b),2,2,e)}};var Aj=!((W("Chrome")||W("CriOS"))&&!W("Opera")&&!W("OPR")&&!W("Edge"))||W("iPhone")&&!W("iPod")&&!W("iPad")||W("iPad")||W("iPod");function Bj(b,c,d,e){b=d-b;c=e-c;var f=Math.sqrt(b*b+c*c);return[Math.round(d+b/f),Math.round(e+c/f)]} -function Cj(b,c,d,e,f,g,h,k,l,m,p){var q=sf(Math.round(d*b),Math.round(d*c));if(0===l.length)return q.canvas;q.scale(d,d);var r=Ib();l.forEach(function(b){Rb(r,b.extent)});var u=sf(Math.round(d*Ub(r)/e),Math.round(d*Vb(r)/e)),w=d/e;l.forEach(function(b){u.drawImage(b.image,m,m,b.image.width-2*m,b.image.height-2*m,(b.extent[0]-r[0])*w,-(b.extent[3]-r[3])*w,Ub(b.extent)*w,Vb(b.extent)*w)});var y=ac(h);k.c.forEach(function(b){var c=b.source,f=b.target,h=c[1][0],k=c[1][1],l=c[2][0],m=c[2][1];b=(f[0][0]- -y[0])/g;var w=-(f[0][1]-y[1])/g,p=(f[1][0]-y[0])/g,A=-(f[1][1]-y[1])/g,H=(f[2][0]-y[0])/g,O=-(f[2][1]-y[1])/g,f=c[0][0],c=c[0][1],h=h-f,k=k-c,l=l-f,m=m-c;a:{h=[[h,k,0,0,p-b],[l,m,0,0,H-b],[0,0,h,k,A-w],[0,0,l,m,O-w]];k=h.length;for(l=0;l<k;l++){for(var m=l,Q=Math.abs(h[l][l]),L=l+1;L<k;L++){var K=Math.abs(h[L][l]);K>Q&&(Q=K,m=L)}if(0===Q){h=null;break a}Q=h[m];h[m]=h[l];h[l]=Q;for(m=l+1;m<k;m++)for(Q=-h[m][l]/h[l][l],L=l;L<k+1;L++)h[m][L]=l==L?0:h[m][L]+Q*h[l][L]}l=Array(k);for(m=k-1;0<=m;m--)for(l[m]= -h[m][k]/h[m][m],Q=m-1;0<=Q;Q--)h[Q][k]-=h[Q][m]*l[m];h=l}h&&(q.save(),q.beginPath(),Aj?(l=(b+p+H)/3,m=(w+A+O)/3,k=Bj(l,m,b,w),p=Bj(l,m,p,A),H=Bj(l,m,H,O),q.moveTo(k[0],k[1]),q.lineTo(p[0],p[1]),q.lineTo(H[0],H[1])):(q.moveTo(b,w),q.lineTo(p,A),q.lineTo(H,O)),q.closePath(),q.clip(),q.transform(h[0],h[2],h[1],h[3],b,w),q.translate(r[0]-f,r[3]-c),q.scale(e/d,-e/d),q.drawImage(u.canvas,0,0),q.restore())});p&&(q.save(),q.strokeStyle="black",q.lineWidth=1,k.c.forEach(function(b){var c=b.target;b=(c[0][0]- -y[0])/g;var d=-(c[0][1]-y[1])/g,e=(c[1][0]-y[0])/g,f=-(c[1][1]-y[1])/g,h=(c[2][0]-y[0])/g,c=-(c[2][1]-y[1])/g;q.beginPath();q.moveTo(b,d);q.lineTo(e,f);q.lineTo(h,c);q.closePath();q.stroke()}),q.restore());return q.canvas};function Dj(b,c,d,e,f){this.f=b;this.g=c;var g={},h=wc(this.g,this.f);this.b=function(b){var c=b[0]+"/"+b[1];g[c]||(g[c]=h(b));return g[c]};this.h=e;this.B=f*f;this.c=[];this.i=!1;this.j=this.f.a&&!!e&&!!this.f.C()&&Ub(e)==Ub(this.f.C());this.a=this.f.C()?Ub(this.f.C()):null;this.l=this.g.C()?Ub(this.g.C()):null;b=ac(d);c=[d[2],d[3]];e=[d[2],d[1]];d=Wb(d);f=this.b(b);var k=this.b(c),l=this.b(e),m=this.b(d);Ej(this,b,c,e,d,f,k,l,m,10);if(this.i){var p=Infinity;this.c.forEach(function(b){p=Math.min(p, -b.source[0][0],b.source[1][0],b.source[2][0])});this.c.forEach(function(b){if(Math.max(b.source[0][0],b.source[1][0],b.source[2][0])-p>this.a/2){var c=[[b.source[0][0],b.source[0][1]],[b.source[1][0],b.source[1][1]],[b.source[2][0],b.source[2][1]]];c[0][0]-p>this.a/2&&(c[0][0]-=this.a);c[1][0]-p>this.a/2&&(c[1][0]-=this.a);c[2][0]-p>this.a/2&&(c[2][0]-=this.a);Math.max(c[0][0],c[1][0],c[2][0])-Math.min(c[0][0],c[1][0],c[2][0])<this.a/2&&(b.source=c)}},this)}g={}} -function Ej(b,c,d,e,f,g,h,k,l,m){var p=Hb([g,h,k,l]),q=b.a?Ub(p)/b.a:null,r=b.f.a&&.5<q&&1>q,u=!1;if(0<m){if(b.g.f&&b.l)var w=Hb([c,d,e,f]),u=u|.25<Ub(w)/b.l;!r&&b.f.f&&q&&(u|=.25<q)}if(u||!b.h||$b(p,b.h)){if(!(u||isFinite(g[0])&&isFinite(g[1])&&isFinite(h[0])&&isFinite(h[1])&&isFinite(k[0])&&isFinite(k[1])&&isFinite(l[0])&&isFinite(l[1])))if(0<m)u=!0;else return;if(0<m&&(u||(q=b.b([(c[0]+e[0])/2,(c[1]+e[1])/2]),p=r?(Da(g[0],b.a)+Da(k[0],b.a))/2-Da(q[0],b.a):(g[0]+k[0])/2-q[0],q=(g[1]+k[1])/2-q[1], -u=p*p+q*q>b.B),u)){Math.abs(c[0]-e[0])<=Math.abs(c[1]-e[1])?(r=[(d[0]+e[0])/2,(d[1]+e[1])/2],p=b.b(r),q=[(f[0]+c[0])/2,(f[1]+c[1])/2],u=b.b(q),Ej(b,c,d,r,q,g,h,p,u,m-1),Ej(b,q,r,e,f,u,p,k,l,m-1)):(r=[(c[0]+d[0])/2,(c[1]+d[1])/2],p=b.b(r),q=[(e[0]+f[0])/2,(e[1]+f[1])/2],u=b.b(q),Ej(b,c,r,q,f,g,p,u,l,m-1),Ej(b,r,d,e,q,p,h,k,u,m-1));return}if(r){if(!b.j)return;b.i=!0}b.c.push({source:[g,k,l],target:[c,e,f]});b.c.push({source:[g,h,k],target:[c,d,e]})}} -function Fj(b){var c=Ib();b.c.forEach(function(b){b=b.source;Jb(c,b[0]);Jb(c,b[1]);Jb(c,b[2])});return c};function Gj(b){U.call(this);this.g=void 0;this.a="geometry";this.h=null;this.c=void 0;this.b=null;R(this,qb(this.a),this.fb,this);void 0!==b&&(b instanceof yc||!b?Hj(this,b):this.l(b))}M(Gj,U);n=Gj.prototype;n.clone=function(){var b=new Gj(this.ua());Ij(b,this.a);var c=this.M();c&&Hj(b,c.clone());if(c=this.h)b.h=c,b.c=c?Jj(c):void 0,b.w();return b};n.M=function(){return this.get(this.a)};n.Da=function(){return this.g};n.nd=function(){this.w()}; -n.fb=function(){this.b&&(P(this.b),this.b=null);var b=this.M();b&&(this.b=R(b,"change",this.nd,this));this.w()};function Hj(b,c){b.set(b.a,c)}function Ij(b,c){fb(b,qb(b.a),b.fb,b);b.a=c;R(b,qb(b.a),b.fb,b);b.fb()}function Jj(b){if(!ga(b)){var c;c=Array.isArray(b)?b:[b];b=function(){return c}}return b};function Kj(b,c,d){return function(e,f,g){var h=new XMLHttpRequest;h.open("GET",ga(b)?b(e,f,g):b,!0);"arraybuffer"==c.U()&&(h.responseType="arraybuffer");h.onload=function(){if(200<=h.status&&300>h.status){var b=c.U(),e;"json"==b||"text"==b?e=h.responseText:"xml"==b?(e=h.responseXML,e||(b=h.responseText,e=(new DOMParser).parseFromString(b,"application/xml"))):"arraybuffer"==b&&(e=h.response);e&&d.call(this,c.b(e,{featureProjection:g}),c.f(Lj(e)))}}.bind(this);h.send()}} -function Mj(b,c){return Kj(b,c,function(b){this.vb(b)})};function Nj(){return[[-Infinity,-Infinity,Infinity,Infinity]]};var Oj; -(function(){var b={mc:{}};(function(){function c(b,d){if(!(this instanceof c))return new c(b,d);this.tb=Math.max(4,b||9);this.Zb=Math.max(2,Math.ceil(.4*this.tb));d&&this.Xc(d);this.clear()}function d(b,c){b.bbox=e(b,0,b.children.length,c)}function e(b,c,d,e){for(var g=[Infinity,Infinity,-Infinity,-Infinity],h;c<d;c++)h=b.children[c],f(g,b.$?e(h):h.bbox);return g}function f(b,c){b[0]=Math.min(b[0],c[0]);b[1]=Math.min(b[1],c[1]);b[2]=Math.max(b[2],c[2]);b[3]=Math.max(b[3],c[3])}function g(b,c){return b.bbox[0]- -c.bbox[0]}function h(b,c){return b.bbox[1]-c.bbox[1]}function k(b){return(b[2]-b[0])*(b[3]-b[1])}function l(b){return b[2]-b[0]+(b[3]-b[1])}function m(b,c){return b[0]<=c[0]&&b[1]<=c[1]&&c[2]<=b[2]&&c[3]<=b[3]}function p(b,c){return c[0]<=b[2]&&c[1]<=b[3]&&c[2]>=b[0]&&c[3]>=b[1]}function q(b,c,d,e,f){for(var g=[c,d],h;g.length;)d=g.pop(),c=g.pop(),d-c<=e||(h=c+Math.ceil((d-c)/e/2)*e,r(b,c,d,h,f),g.push(c,h,h,d))}function r(b,c,d,e,f){for(var g,h,k,l,m;d>c;){600<d-c&&(g=d-c+1,h=e-c+1,k=Math.log(g), -l=.5*Math.exp(2*k/3),m=.5*Math.sqrt(k*l*(g-l)/g)*(0>h-g/2?-1:1),k=Math.max(c,Math.floor(e-h*l/g+m)),h=Math.min(d,Math.floor(e+(g-h)*l/g+m)),r(b,k,h,e,f));g=b[e];h=c;l=d;u(b,c,e);for(0<f(b[d],g)&&u(b,c,d);h<l;){u(b,h,l);h++;for(l--;0>f(b[h],g);)h++;for(;0<f(b[l],g);)l--}0===f(b[c],g)?u(b,c,l):(l++,u(b,l,d));l<=e&&(c=l+1);e<=l&&(d=l-1)}}function u(b,c,d){var e=b[c];b[c]=b[d];b[d]=e}c.prototype={all:function(){return this.Vb(this.data,[])},search:function(b){var c=this.data,d=[],e=this.ca;if(!p(b,c.bbox))return d; -for(var f=[],g,h,k,l;c;){g=0;for(h=c.children.length;g<h;g++)k=c.children[g],l=c.$?e(k):k.bbox,p(b,l)&&(c.$?d.push(k):m(b,l)?this.Vb(k,d):f.push(k));c=f.pop()}return d},load:function(b){if(!b||!b.length)return this;if(b.length<this.Zb){for(var c=0,d=b.length;c<d;c++)this.xa(b[c]);return this}b=this.Xb(b.slice(),0,b.length-1,0);this.data.children.length?this.data.height===b.height?this.$b(this.data,b):(this.data.height<b.height&&(c=this.data,this.data=b,b=c),this.Yb(b,this.data.height-b.height-1,!0)): -this.data=b;return this},xa:function(b){b&&this.Yb(b,this.data.height-1);return this},clear:function(){this.data={children:[],height:1,bbox:[Infinity,Infinity,-Infinity,-Infinity],$:!0};return this},remove:function(b){if(!b)return this;for(var c=this.data,d=this.ca(b),e=[],f=[],g,h,k,l;c||e.length;){c||(c=e.pop(),h=e[e.length-1],g=f.pop(),l=!0);if(c.$&&(k=c.children.indexOf(b),-1!==k)){c.children.splice(k,1);e.push(c);this.Wc(e);break}l||c.$||!m(c.bbox,d)?h?(g++,c=h.children[g],l=!1):c=null:(e.push(c), -f.push(g),g=0,h=c,c=c.children[0])}return this},ca:function(b){return b},zb:function(b,c){return b[0]-c[0]},Ab:function(b,c){return b[1]-c[1]},toJSON:function(){return this.data},Vb:function(b,c){for(var d=[];b;)b.$?c.push.apply(c,b.children):d.push.apply(d,b.children),b=d.pop();return c},Xb:function(b,c,e,f){var g=e-c+1,h=this.tb,k;if(g<=h)return k={children:b.slice(c,e+1),height:1,bbox:null,$:!0},d(k,this.ca),k;f||(f=Math.ceil(Math.log(g)/Math.log(h)),h=Math.ceil(g/Math.pow(h,f-1)));k={children:[], -height:f,bbox:null,$:!1};var g=Math.ceil(g/h),h=g*Math.ceil(Math.sqrt(h)),l,m,p;for(q(b,c,e,h,this.zb);c<=e;c+=h)for(m=Math.min(c+h-1,e),q(b,c,m,g,this.Ab),l=c;l<=m;l+=g)p=Math.min(l+g-1,m),k.children.push(this.Xb(b,l,p,f-1));d(k,this.ca);return k},Vc:function(b,c,d,e){for(var f,g,h,l,m,p,q,r;;){e.push(c);if(c.$||e.length-1===d)break;q=r=Infinity;f=0;for(g=c.children.length;f<g;f++)h=c.children[f],m=k(h.bbox),p=h.bbox,p=(Math.max(p[2],b[2])-Math.min(p[0],b[0]))*(Math.max(p[3],b[3])-Math.min(p[1], -b[1]))-m,p<r?(r=p,q=m<q?m:q,l=h):p===r&&m<q&&(q=m,l=h);c=l}return c},Yb:function(b,c,d){var e=this.ca;d=d?b.bbox:e(b);var e=[],g=this.Vc(d,this.data,c,e);g.children.push(b);for(f(g.bbox,d);0<=c;)if(e[c].children.length>this.tb)this.Yc(e,c),c--;else break;this.Sc(d,e,c)},Yc:function(b,c){var e=b[c],f=e.children.length,g=this.Zb;this.Tc(e,g,f);f=this.Uc(e,g,f);f={children:e.children.splice(f,e.children.length-f),height:e.height,bbox:null,$:!1};e.$&&(f.$=!0);d(e,this.ca);d(f,this.ca);c?b[c-1].children.push(f): -this.$b(e,f)},$b:function(b,c){this.data={children:[b,c],height:b.height+1,bbox:null,$:!1};d(this.data,this.ca)},Uc:function(b,c,d){var f,g,h,l,m,p,q;m=p=Infinity;for(f=c;f<=d-c;f++)g=e(b,0,f,this.ca),h=e(b,f,d,this.ca),l=Math.max(0,Math.min(g[2],h[2])-Math.max(g[0],h[0]))*Math.max(0,Math.min(g[3],h[3])-Math.max(g[1],h[1])),g=k(g)+k(h),l<m?(m=l,q=f,p=g<p?g:p):l===m&&g<p&&(p=g,q=f);return q},Tc:function(b,c,d){var e=b.$?this.zb:g,f=b.$?this.Ab:h,k=this.Wb(b,c,d,e);c=this.Wb(b,c,d,f);k<c&&b.children.sort(e)}, -Wb:function(b,c,d,g){b.children.sort(g);g=this.ca;var h=e(b,0,c,g),k=e(b,d-c,d,g),m=l(h)+l(k),p,q;for(p=c;p<d-c;p++)q=b.children[p],f(h,b.$?g(q):q.bbox),m+=l(h);for(p=d-c-1;p>=c;p--)q=b.children[p],f(k,b.$?g(q):q.bbox),m+=l(k);return m},Sc:function(b,c,d){for(;0<=d;d--)f(c[d].bbox,b)},Wc:function(b){for(var c=b.length-1,e;0<=c;c--)0===b[c].children.length?0<c?(e=b[c-1].children,e.splice(e.indexOf(b[c]),1)):this.clear():d(b[c],this.ca)},Xc:function(b){var c=["return a"," - b",";"];this.zb=new Function("a", -"b",c.join(b[0]));this.Ab=new Function("a","b",c.join(b[1]));this.ca=new Function("a","return [a"+b.join(", a")+"];")}};"undefined"!==typeof b?b.mc=c:"undefined"!==typeof self?self.a=c:window.a=c})();Oj=b.mc})();function Pj(b){this.a=Oj(b);this.b={}}n=Pj.prototype;n.xa=function(b,c){var d=[b[0],b[1],b[2],b[3],c];this.a.xa(d);this.b[I(c)]=d};n.load=function(b,c){for(var d=Array(c.length),e=0,f=c.length;e<f;e++){var g=b[e],h=c[e],g=[g[0],g[1],g[2],g[3],h];d[e]=g;this.b[I(h)]=g}this.a.load(d)};n.remove=function(b){b=I(b);var c=this.b[b];delete this.b[b];return null!==this.a.remove(c)};function Qj(b){return b.a.all().map(function(b){return b[4]})} -function Rj(b,c){return b.a.search(c).map(function(b){return b[4]})}function Sj(b,c,d,e){return Tj(Rj(b,c),d,e)}function Tj(b,c,d){for(var e,f=0,g=b.length;f<g&&!(e=c.call(d,b[f]));f++);return e}n.clear=function(){this.a.clear();this.b={}};n.C=function(){return this.a.data.bbox};function Uj(b){b=b||{};Ee.call(this,{attributions:b.attributions,logo:b.logo,projection:void 0,state:"ready",wrapX:void 0!==b.wrapX?b.wrapX:!0});this.o=N;this.D=b.format;this.u=b.url;void 0!==b.loader?this.o=b.loader:void 0!==this.u&&(this.o=Mj(this.u,this.D));this.G=void 0!==b.strategy?b.strategy:Nj;var c=void 0!==b.useSpatialIndex?b.useSpatialIndex:!0;this.P=c?new Pj:null;this.s=new Pj;this.ba={};this.b={};this.g={};this.h={};this.a=null;var d,e;b.features instanceof md?(d=b.features,e=d.a):Array.isArray(b.features)&& -(e=b.features);c||void 0!==d||(d=new md(e));void 0!==e&&Vj(this,e);void 0!==d&&Wj(this,d)}M(Uj,Ee);n=Uj.prototype;n.ub=function(b){var c=I(b).toString();if(Xj(this,c,b)){Yj(this,c,b);var d=b.M();d?(c=d.C(),this.P&&this.P.xa(c,b)):this.ba[c]=b;T(this,new Zj("addfeature",b))}this.w()};function Yj(b,c,d){b.h[c]=[R(d,"change",b.oc,b),R(d,"propertychange",b.oc,b)]}function Xj(b,c,d){var e=!0,f=d.Da();void 0!==f?f.toString()in b.b?e=!1:b.b[f.toString()]=d:b.g[c]=d;return e}n.vb=function(b){Vj(this,b);this.w()}; -function Vj(b,c){var d,e,f,g,h=[],k=[],l=[];e=0;for(f=c.length;e<f;e++)g=c[e],d=I(g).toString(),Xj(b,d,g)&&k.push(g);e=0;for(f=k.length;e<f;e++){g=k[e];d=I(g).toString();Yj(b,d,g);var m=g.M();m?(d=m.C(),h.push(d),l.push(g)):b.ba[d]=g}b.P&&b.P.load(h,l);e=0;for(f=k.length;e<f;e++)T(b,new Zj("addfeature",k[e]))} -function Wj(b,c){var d=!1;R(b,"addfeature",function(b){d||(d=!0,c.push(b.feature),d=!1)});R(b,"removefeature",function(b){d||(d=!0,c.remove(b.feature),d=!1)});R(c,"add",function(b){d||(b=b.element,d=!0,this.ub(b),d=!1)},b);R(c,"remove",function(b){if(!d){b=b.element;d=!0;var c=I(b).toString();c in this.ba?delete this.ba[c]:this.P&&this.P.remove(b);this.Rb(b);this.w();d=!1}},b);b.a=c} -n.clear=function(b){if(b){for(var c in this.h)this.h[c].forEach(P);this.a||(this.h={},this.b={},this.g={})}else if(this.P){b=this.Rb;Tj(Qj(this.P),b,this);for(var d in this.ba)this.Rb(this.ba[d])}this.a&&this.a.clear();this.P&&this.P.clear();this.s.clear();this.ba={};T(this,new Zj("clear"));this.w()};n.gd=function(b,c){if(this.P)return Tj(Qj(this.P),b,c);if(this.a)return od(this.a,b,c)};function ak(b,c,d,e){b.P?Sj(b.P,c,d,e):b.a&&od(b.a,d,e)} -n.ee=function(){var b;this.a?b=this.a.a:this.P&&(b=Qj(this.P),Za(this.ba)||Ja(b,Xa(this.ba)));return b};n.C=function(){return this.P.C()}; -n.oc=function(b){b=b.target;var c=I(b).toString(),d=b.M();if(d)if(d=d.C(),c in this.ba)delete this.ba[c],this.P&&this.P.xa(d,b);else{if(this.P){var e=this.P,f=I(b);Qb(e.b[f].slice(0,4),d)||(e.remove(b),e.xa(d,b))}}else c in this.ba||(this.P&&this.P.remove(b),this.ba[c]=b);d=b.Da();void 0!==d?(d=d.toString(),c in this.g?(delete this.g[c],this.b[d]=b):this.b[d]!==b&&(bk(this,b),this.b[d]=b)):c in this.g||(bk(this,b),this.g[c]=b);this.w();T(this,new Zj("changefeature",b))}; -function ck(b,c,d,e){var f=b.s;c=b.G(c,d);var g,h;g=0;for(h=c.length;g<h;++g){var k=c[g];Sj(f,k,function(b){return Mb(b.extent,k)})||(b.o.call(b,k,d,e),f.xa(k,{extent:k.slice()}))}}n.Rb=function(b){var c=I(b).toString();this.h[c].forEach(P);delete this.h[c];var d=b.Da();void 0!==d?delete this.b[d.toString()]:delete this.g[c];T(this,new Zj("removefeature",b))};function bk(b,c){for(var d in b.b)if(b.b[d]===c){delete b.b[d];break}}function Zj(b,c){S.call(this,b);this.feature=c}M(Zj,S);function dk(b){$i.call(this,b);this.c=sf();this.b=null;this.j=Ib();this.h=yb()}M(dk,$i); -dk.prototype.g=function(b,c,d){var e=b.pixelRatio,f=b.viewState,g=f.center,h=f.projection,k=f.rotation,l=b.size,m=Math.round(e*l[0]/2),p=Math.round(e*l[1]/2),q=e/f.resolution,r=this.a,u=r.W(),w=u.bb(h),f=bj(this,b,0);aj(this,"precompose",d,b,f);var l=d,r=mb(r,"render"),y,z,D,t;if(k||r){l=this.c;y=l.canvas;D=u.eb(e)/e;var v=d.canvas.width*D;z=d.canvas.height*D;t=Math.round(Math.sqrt(v*v+z*z));y.width!=t?y.width=y.height=t:l.clearRect(0,0,t,t);y=(t-v)/2/D;z=(t-z)/2/D;q*=D;m=Math.round(D*(m+y));p=Math.round(D* -(p+z))}v=l.globalAlpha;l.globalAlpha=c.opacity;var B=u.ia(h),F=this.b,C;c=u.Fb(h)&&1==c.opacity;c||(F.reverse(),C=[]);for(var G=0,J=F.length;G<J;++G){var A=F[G],H=A.L,O=Ke(B,H,this.j),Q=H[0],L=Wb(Ke(B,Se(B,g,Q))),H=Math.round(Ub(O)*q),K=Math.round(Vb(O)*q),fa=Math.round((O[0]-L[0])*q/H)*H+m+Math.round((L[0]-g[0])*q),O=Math.round((L[1]-O[3])*q/K)*K+p+Math.round((g[1]-L[1])*q);if(!c){L=[fa,O,fa+H,O+K];l.save();for(var ra=0,$l=C.length;ra<$l;++ra){var Ya=C[ra];$b(L,Ya)&&(l.beginPath(),l.moveTo(L[0], -L[1]),l.lineTo(L[0],L[3]),l.lineTo(L[2],L[3]),l.lineTo(L[2],L[1]),l.moveTo(Ya[0],Ya[1]),l.lineTo(Ya[2],Ya[1]),l.lineTo(Ya[2],Ya[3]),l.lineTo(Ya[0],Ya[3]),l.closePath(),l.clip())}C.push(L)}Q=Ye(u,Q,e,h);l.drawImage(A.S(),w,w,Q[0],Q[1],fa,O,H,K);c||l.restore()}r&&(e=y-m/D+m,h=z-p/D+p,g=Jg(this.h,t/2-e,t/2-h,q,-q,-k,-g[0]+e/q,-g[1]-h/q),aj(this,"render",l,b,g));(k||r)&&d.drawImage(l.canvas,-Math.round(y),-Math.round(z),t/D,t/D);l.globalAlpha=v;aj(this,"postcompose",d,b,f)}; -dk.prototype.i=function(b,c){function d(b){b=b.N();return 2==b||4==b||3==b&&!u}var e=b.pixelRatio,f=b.viewState,g=f.projection,h=this.a,k=h.W(),l=k.ia(g),m=Re(l,f.resolution),p=l.J(m),q=f.center;p==f.resolution?(q=Sg(q,p,b.size),f=Yb(q,p,f.rotation,b.size)):f=b.extent;void 0!==c.extent&&(f=Zb(f,c.extent));if(f[2]<f[0]||f[3]<f[1])return!1;p=Ne(l,f,p);q={};q[m]={};var r=this.l(k,g,q),u=ui(h),w=Ib(),y=new gd(0,0,0,0),z,D,t,v;for(t=p.a;t<=p.b;++t)for(v=p.f;v<=p.c;++v)z=Ug(k,m,t,v,e,g),!d(z)&&z.a&&(z= -z.a),d(z)?q[m][z.L.toString()]=z:(D=Je(l,z.L,r,y,w),D||(z=Me(l,z.L,y,w))&&r(m+1,z));r=Object.keys(q).map(Number);r.sort(Ga);var w=[],B,y=0;for(t=r.length;y<t;++y)for(B in z=r[y],v=q[z],v)z=v[B],2==z.N()&&w.push(z);this.b=w;Rg(b.usedTiles,k,m,p);Tg(b,k,l,e,g,f,m,h.get("preload"));Og(b,k);Qg(b,k);return!0};function ek(b){$i.call(this,b);this.b=!1;this.v=-1;this.u=NaN;this.j=Ib();this.c=this.o=null;this.h=sf()}M(ek,$i); -ek.prototype.g=function(b,c,d){var e=b.extent,f=b.pixelRatio,g=c.Wa?b.skippedFeatureUids:{},h=b.viewState,k=h.projection,h=h.rotation,l=k.C(),m=this.a.W(),p=bj(this,b,0);aj(this,"precompose",d,b,p);var q=this.c;if(q&&!q.c()){var r;mb(this.a,"render")?(this.h.canvas.width=d.canvas.width,this.h.canvas.height=d.canvas.height,r=this.h):r=d;var u=r.globalAlpha;r.globalAlpha=c.opacity;c=b.size[0]*f;var w=b.size[1]*f;yi(r,-h,c/2,w/2);q.f(r,f,p,h,g);if(m.j&&k.a&&!Mb(l,e)){for(var k=e[0],m=Ub(l),y=0;k<l[0];)--y, -p=m*y,p=bj(this,b,p),q.f(r,f,p,h,g),k+=m;y=0;for(k=e[2];k>l[2];)++y,p=m*y,p=bj(this,b,p),q.f(r,f,p,h,g),k-=m;p=bj(this,b,0)}yi(r,h,c/2,w/2);r!=d&&(aj(this,"render",r,b,p),d.drawImage(r.canvas,0,0));r.globalAlpha=u}aj(this,"postcompose",d,b,p)};ek.prototype.Xa=function(b,c,d,e){if(this.c){var f=this.a,g={};return this.c.g(b,c.viewState.resolution,c.viewState.rotation,{},function(b){var c=I(b).toString();if(!(c in g))return g[c]=!0,d.call(e,b,f)})}};ek.prototype.A=function(){Ng(this)}; -ek.prototype.i=function(b){function c(b){var c,e=b.c;e?c=e.call(b,m):(e=d.g)&&(c=e(b,m));if(c){if(c){e=!1;if(Array.isArray(c))for(var f=0,g=c.length;f<g;++f)e=yj(r,b,c[f],xj(m,p),this.A,this)||e;else e=yj(r,b,c,xj(m,p),this.A,this)||e;b=e}else b=!1;this.b=this.b||b}}var d=this.a,e=d.W();Pg(b.attributions,e.i);Qg(b,e);var f=b.viewHints[0],g=b.viewHints[1],h=d.i,k=d.j;if(!this.b&&!h&&f||!k&&g)return!0;var l=b.extent,k=b.viewState,f=k.projection,m=k.resolution,p=b.pixelRatio,g=d.f,q=d.a,h=d.get("renderOrder"); -void 0===h&&(h=wj);l=Kb(l,q*m);q=k.projection.C();e.j&&k.projection.a&&!Mb(q,b.extent)&&(b=Math.max(Ub(l)/2,Ub(q)),l[0]=q[0]-b,l[2]=q[2]+b);if(!this.b&&this.u==m&&this.v==g&&this.o==h&&Mb(this.j,l))return!0;this.c=null;this.b=!1;var r=new sj(.5*m/p,l,m,d.a);ck(e,l,m,f);if(h){var u=[];ak(e,l,function(b){u.push(b)},this);u.sort(h);u.forEach(c,this)}else ak(e,l,c,this);tj(r);this.u=m;this.v=g;this.o=h;this.j=l;this.c=r;return!0};function fk(b,c){var d=/\{z\}/g,e=/\{x\}/g,f=/\{y\}/g,g=/\{-y\}/g;return function(h){if(h)return b.replace(d,h[0].toString()).replace(e,h[1].toString()).replace(f,function(){return(-h[2]-1).toString()}).replace(g,function(){var b=c.a?c.a[h[0]]:null;return(b.c-b.f+1+h[2]).toString()})}}function gk(b,c){for(var d=b.length,e=Array(d),f=0;f<d;++f)e[f]=fk(b[f],c);return hk(e)}function hk(b){return 1===b.length?b[0]:function(c,d,e){if(c)return b[Da((c[1]<<c[0])+c[2],b.length)](c,d,e)}}function ik(){};function jk(b){We.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,extent:b.extent,logo:b.logo,opaque:b.opaque,projection:b.projection,state:b.state,tileGrid:b.tileGrid,tilePixelRatio:b.tilePixelRatio,wrapX:b.wrapX});this.tileLoadFunction=b.tileLoadFunction;this.tileUrlFunction=this.g?this.g.bind(this):ik;this.urls=null;if(b.urls){var c=b.urls;this.urls=c;kk(this,this.g?this.g.bind(this):gk(c,this.tileGrid))}else b.url&&this.s(b.url);b.tileUrlFunction&&kk(this,b.tileUrlFunction)} -M(jk,We);jk.prototype.D=function(b){b=b.target;switch(b.N()){case 1:T(this,new $e("tileloadstart",b));break;case 2:T(this,new $e("tileloadend",b));break;case 3:T(this,new $e("tileloaderror",b))}};function kk(b,c){b.a.clear();b.tileUrlFunction=c;b.w()} -jk.prototype.s=function(b){var c=[],d=/\{(\d)-(\d)\}/.exec(b)||/\{([a-z])-([a-z])\}/.exec(b);if(d){var e=d[2].charCodeAt(0),f;for(f=d[1].charCodeAt(0);f<=e;++f)c.push(b.replace(d[0],String.fromCharCode(f)))}else c.push(b);b=this.urls=c;kk(this,this.g?this.g.bind(this):gk(b,this.tileGrid))};jk.prototype.Qc=function(b,c,d){b=this.cb(b,c,d);xe(this.a,b)&&this.a.get(b)};function lk(b,c){$g.call(this,0,c);this.c=sf();sf();this.a=this.c.canvas;this.a.style.width="100%";this.a.style.height="100%";this.a.className="ol-unselectable";ge(b,this.a,0);this.b=!0;this.g=yb()}M(lk,$g);lk.prototype.Bb=function(b){return b instanceof X?new dk(b):b instanceof Y?new ek(b):null}; -function mk(b,c,d){var e=b.h,f=b.c;if(mb(e,c)){var g=d.extent,h=d.pixelRatio,k=d.viewState.rotation,l=d.pixelRatio,m=d.viewState,p=m.resolution;b=Jg(b.g,b.a.width/2,b.a.height/2,l/p,-l/p,-m.rotation,-m.center[0],-m.center[1]);g=new Pi(f,h,g,b,k);T(e,new Gg(c,e,g,d,f,null))}}lk.prototype.U=function(){return"canvas"}; -lk.prototype.kb=function(b){if(b){var c=this.c,d=b.pixelRatio,e=Math.round(b.size[0]*d),d=Math.round(b.size[1]*d);this.a.width!=e||this.a.height!=d?(this.a.width=e,this.a.height=d):c.clearRect(0,0,e,d);var f=b.viewState.rotation;ah(b);mk(this,"precompose",b);var g=b.layerStatesArray;Ma(g);yi(c,f,e/2,d/2);var h=b.viewState.resolution,k,l,m,p;k=0;for(l=g.length;k<l;++k)p=g[k],m=p.layer,m=ch(this,m),Ig(p,h)&&"ready"==p.Tb&&m.i(b,p)&&m.g(b,p,c);yi(c,-f,e/2,d/2);mk(this,"postcompose",b);this.b||(pe(this.a, -!0),this.b=!0);dh(this,b);b.postRenderFunctions.push(bh)}else this.b&&(pe(this.a,!1),this.b=!1)};function nk(b,c){Mg.call(this,b);this.target=c}M(nk,Mg);nk.prototype.yb=N;nk.prototype.Ac=N;function ok(b){var c=document.createElement("DIV");c.style.position="absolute";nk.call(this,b,c);this.c=!0;this.h=1;this.g=0;this.b={}}M(ok,nk);ok.prototype.yb=function(){fe(this.target);this.g=0}; -ok.prototype.Bc=function(b,c){if(!c.visible)return this.c&&(pe(this.target,!1),this.c=!1),!0;var d=b.pixelRatio,e=b.viewState,f=e.projection,g=this.a,h=g.W(),k=h.ia(f),l=h.bb(f),m=Re(k,e.resolution),p=k.J(m),q=e.center,r;p==e.resolution?(q=Sg(q,p,b.size),r=Yb(q,p,e.rotation,b.size)):r=b.extent;void 0!==c.extent&&(r=Zb(r,c.extent));var p=Ne(k,r,p),u={};u[m]={};var w=this.l(h,f,u),y=ui(g),z=Ib(),D=new gd(0,0,0,0),t,v,B,F;for(B=p.a;B<=p.b;++B)for(F=p.f;F<=p.c;++F)t=Ug(h,m,B,F,d,f),v=t.N(),v=2==v||4== -v||3==v&&!y,!v&&t.a&&(t=t.a),v=t.N(),2==v?u[m][t.L.toString()]=t:4==v||3==v&&!y||(v=Je(k,t.L,w,D,z),v||(t=Me(k,t.L,D,z))&&w(m+1,t));var C;if(this.g!=h.f){for(C in this.b)y=this.b[+C],he(y.target);this.b={};this.g=h.f}z=Object.keys(u).map(Number);z.sort(Ga);var w={},G;B=0;for(F=z.length;B<F;++B){C=z[B];C in this.b?y=this.b[C]:(y=Se(k,q,C),y=new pk(k,y),w[C]=!0,this.b[C]=y);C=u[C];for(G in C){t=y;v=C[G];var J=l,A=v.L,H=A[0],O=A[1],Q=A[2],A=A.toString();if(!(A in t.b)){var H=sb(Qe(t.g,H),t.i),L=v.S(t), -K=L.style;K.maxWidth="none";var fa=void 0,ra=void 0;0<J?(fa=document.createElement("DIV"),ra=fa.style,ra.overflow="hidden",ra.width=H[0]+"px",ra.height=H[1]+"px",K.position="absolute",K.left=-J+"px",K.top=-J+"px",K.width=H[0]+2*J+"px",K.height=H[1]+2*J+"px",fa.appendChild(L)):(K.width=H[0]+"px",K.height=H[1]+"px",fa=L,ra=K);ra.position="absolute";ra.left=(O-t.f[1])*H[0]+"px";ra.top=(t.f[2]-Q)*H[1]+"px";t.a||(t.a=document.createDocumentFragment());t.a.appendChild(fa);t.b[A]=v}}y.a&&(y.target.appendChild(y.a), -y.a=null)}l=Object.keys(this.b).map(Number);l.sort(Ga);B=yb();G=0;for(z=l.length;G<z;++G)if(C=l[G],y=this.b[C],C in u)if(t=y.J(),F=y.fa(),Jg(B,b.size[0]/2,b.size[1]/2,t/e.resolution,t/e.resolution,e.rotation,(F[0]-q[0])/t,(q[1]-F[1])/t),y.setTransform(B),C in w){for(--C;0<=C;--C)if(C in this.b){F=this.b[C].target;F.parentNode&&F.parentNode.insertBefore(y.target,F.nextSibling);break}0>C&&ge(this.target,y.target,0)}else{if(!b.viewHints[0]&&!b.viewHints[1]){v=Le(y.g,r,y.f[0],D);C=[];t=F=void 0;for(t in y.b)F= -y.b[t],J=F.L,hd(v,J[1],J[2])||C.push(F);J=v=void 0;v=0;for(J=C.length;v<J;++v)F=C[v],t=F.L.toString(),he(F.S(y)),delete y.b[t]}}else he(y.target),delete this.b[C];c.opacity!=this.h&&(this.h=this.target.style.opacity=c.opacity);c.visible&&!this.c&&(pe(this.target,!0),this.c=!0);Rg(b.usedTiles,h,m,p);Tg(b,h,k,d,f,r,m,g.get("preload"));Og(b,h);Qg(b,h);return!0}; -function pk(b,c){this.target=document.createElement("DIV");this.target.style.position="absolute";this.target.style.width="100%";this.target.style.height="100%";this.g=b;this.f=c;this.h=ac(Ke(b,c));this.l=b.J(c[0]);this.b={};this.a=null;this.c=Ab();this.i=[0,0]}pk.prototype.fa=function(){return this.h};pk.prototype.J=function(){return this.l};pk.prototype.setTransform=function(b){Kg(b,this.c)||(wf(this.target,b),Bb(this.c,b))};function qk(b){this.g=sf();var c=this.g.canvas;c.style.maxWidth="none";c.style.position="absolute";nk.call(this,b,c);this.b=!1;this.h=-1;this.o=NaN;this.i=Ib();this.c=this.j=null;this.v=yb();this.u=yb()}M(qk,nk);n=qk.prototype;n.yb=function(){var b=this.g.canvas;b.width=b.width;this.h=0}; -n.Ac=function(b,c){var d=b.viewState,e=d.center,f=d.rotation,g=d.resolution,d=b.pixelRatio,h=b.size[0],k=b.size[1],l=h*d,m=k*d,e=Jg(this.v,d*h/2,d*k/2,d/g,-d/g,-f,-e[0],-e[1]),g=this.g;g.canvas.width=l;g.canvas.height=m;h=Jg(this.u,0,0,1/d,1/d,0,-(l-h)/2*d,-(m-k)/2*d);wf(g.canvas,h);rk(this,"precompose",b,e);(h=this.c)&&!h.c()&&(g.globalAlpha=c.opacity,h.f(g,d,e,f,c.Wa?b.skippedFeatureUids:{}),rk(this,"render",b,e));rk(this,"postcompose",b,e)}; -function rk(b,c,d,e){var f=b.g;b=b.a;mb(b,c)&&(e=new Pi(f,d.pixelRatio,d.extent,e,d.viewState.rotation),T(b,new Gg(c,b,e,d,f,null)))}n.Xa=function(b,c,d,e){if(this.c){var f=this.a,g={};return this.c.g(b,c.viewState.resolution,c.viewState.rotation,{},function(b){var c=I(b).toString();if(!(c in g))return g[c]=!0,d.call(e,b,f)})}};n.Cc=function(){Ng(this)}; -n.Bc=function(b){function c(b){var c,e=b.c;e?c=e.call(b,l):(e=d.g)&&(c=e(b,l));if(c){if(c){e=!1;if(Array.isArray(c))for(var f=0,g=c.length;f<g;++f)e=yj(p,b,c[f],xj(l,m),this.Cc,this)||e;else e=yj(p,b,c,xj(l,m),this.Cc,this)||e;b=e}else b=!1;this.b=this.b||b}}var d=this.a,e=d.W();Pg(b.attributions,e.i);Qg(b,e);var f=b.viewHints[0],g=b.viewHints[1],h=d.i,k=d.j;if(!this.b&&!h&&f||!k&&g)return!0;var g=b.extent,h=b.viewState,f=h.projection,l=h.resolution,m=b.pixelRatio;b=d.f;k=d.a;h=d.get("renderOrder"); -void 0===h&&(h=wj);g=Kb(g,k*l);if(!this.b&&this.o==l&&this.h==b&&this.j==h&&Mb(this.i,g))return!0;this.c=null;this.b=!1;var p=new sj(.5*l/m,g,l,d.a);ck(e,g,l,f);if(h){var q=[];ak(e,g,function(b){q.push(b)},this);q.sort(h);q.forEach(c,this)}else ak(e,g,c,this);tj(p);this.o=l;this.h=b;this.j=h;this.i=g;this.c=p;return!0};function sk(b,c){$g.call(this,0,c);this.c=sf();var d=this.c.canvas;d.style.position="absolute";d.style.width="100%";d.style.height="100%";d.className="ol-unselectable";ge(b,d,0);this.g=yb();this.a=document.createElement("DIV");this.a.className="ol-unselectable";d=this.a.style;d.position="absolute";d.width="100%";d.height="100%";R(this.a,"touchstart",kb);ge(b,this.a,0);this.b=!0}M(sk,$g);sk.prototype.K=function(){he(this.a);sk.Y.K.call(this)}; -sk.prototype.Bb=function(b){if(b instanceof X)b=new ok(b);else if(b instanceof Y)b=new qk(b);else return null;return b};function tk(b,c,d){var e=b.h;if(mb(e,c)){var f=d.extent,g=d.pixelRatio,h=d.viewState,k=h.rotation,l=b.c,m=l.canvas;Jg(b.g,m.width/2,m.height/2,g/h.resolution,-g/h.resolution,-h.rotation,-h.center[0],-h.center[1]);b=new Pi(l,g,f,b.g,k);T(e,new Gg(c,e,b,d,l,null))}}sk.prototype.U=function(){return"dom"}; -sk.prototype.kb=function(b){if(b){var c=this.h;if(mb(c,"precompose")||mb(c,"postcompose")){var c=this.c.canvas,d=b.pixelRatio;c.width=b.size[0]*d;c.height=b.size[1]*d}tk(this,"precompose",b);c=b.layerStatesArray;Ma(c);var d=b.viewState.resolution,e,f,g,h;e=0;for(f=c.length;e<f;++e)h=c[e],g=h.layer,g=ch(this,g),ge(this.a,g.target,e),Ig(h,d)&&"ready"==h.Tb?g.Bc(b,h)&&g.Ac(b,h):g.yb();var c=b.layerStates,k;for(k in this.f)k in c||(g=this.f[k],he(g.target));this.b||(pe(this.a,!0),this.b=!0);ah(b);dh(this, -b);b.postRenderFunctions.push(bh);tk(this,"postcompose",b)}else this.b&&(pe(this.a,!1),this.b=!1)};function uk(b){this.a=b}function vk(b){this.a=b}M(vk,uk);vk.prototype.U=function(){return 35632};function wk(b){this.a=b}M(wk,uk);wk.prototype.U=function(){return 35633};function xk(){this.a="precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}"}M(xk,vk);aa(xk); -function yk(){this.a="varying vec2 a;varying float b;attribute vec2 c;attribute vec2 d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;void main(void){mat4 offsetMatrix=i;if(g==1.0){offsetMatrix=i*j;}vec4 offsets=offsetMatrix*vec4(e,0.,0.);gl_Position=h*vec4(c,0.,1.)+offsets;a=d;b=f;}"}M(yk,wk);aa(yk); -function zk(b,c){this.i=b.getUniformLocation(c,"j");this.j=b.getUniformLocation(c,"i");this.h=b.getUniformLocation(c,"k");this.l=b.getUniformLocation(c,"h");this.a=b.getAttribLocation(c,"e");this.b=b.getAttribLocation(c,"f");this.c=b.getAttribLocation(c,"c");this.f=b.getAttribLocation(c,"g");this.g=b.getAttribLocation(c,"d")};function Ak(b){this.a=void 0!==b?b:[]};function Bk(b,c){this.B=b;this.a=c;this.b={};this.g={};this.c={};this.i=this.j=this.h=this.l=null;(this.f=0<=oa.indexOf("OES_element_index_uint"))&&c.getExtension("OES_element_index_uint");R(this.B,"webglcontextlost",this.o,this);R(this.B,"webglcontextrestored",this.s,this)}M(Bk,hb); -function Ck(b,c,d){var e=b.a,f=d.a,g=String(I(d));if(g in b.b)e.bindBuffer(c,b.b[g].buffer);else{var h=e.createBuffer();e.bindBuffer(c,h);var k;34962==c?k=new Float32Array(f):34963==c&&(k=b.f?new Uint32Array(f):new Uint16Array(f));e.bufferData(c,k,35044);b.b[g]={Ne:d,buffer:h}}}function Dk(b,c){var d=b.a,e=String(I(c)),f=b.b[e];d.isContextLost()||d.deleteBuffer(f.buffer);delete b.b[e]} -Bk.prototype.K=function(){gb(this.B);var b=this.a;if(!b.isContextLost()){for(var c in this.b)b.deleteBuffer(this.b[c].buffer);for(c in this.c)b.deleteProgram(this.c[c]);for(c in this.g)b.deleteShader(this.g[c]);b.deleteFramebuffer(this.h);b.deleteRenderbuffer(this.i);b.deleteTexture(this.j)}}; -function Ek(b){if(!b.h){var c=b.a,d=c.createFramebuffer();c.bindFramebuffer(c.FRAMEBUFFER,d);var e=Fk(c,1,1),f=c.createRenderbuffer();c.bindRenderbuffer(c.RENDERBUFFER,f);c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_COMPONENT16,1,1);c.framebufferTexture2D(c.FRAMEBUFFER,c.COLOR_ATTACHMENT0,c.TEXTURE_2D,e,0);c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,f);c.bindTexture(c.TEXTURE_2D,null);c.bindRenderbuffer(c.RENDERBUFFER,null);c.bindFramebuffer(c.FRAMEBUFFER,null);b.h=d; -b.j=e;b.i=f}return b.h}function Gk(b,c){var d=String(I(c));if(d in b.g)return b.g[d];var e=b.a,f=e.createShader(c.U());e.shaderSource(f,c.a);e.compileShader(f);return b.g[d]=f}function Hk(b,c,d){var e=I(c)+"/"+I(d);if(e in b.c)return b.c[e];var f=b.a,g=f.createProgram();f.attachShader(g,Gk(b,c));f.attachShader(g,Gk(b,d));f.linkProgram(g);return b.c[e]=g}Bk.prototype.o=function(){Wa(this.b);Wa(this.g);Wa(this.c);this.i=this.j=this.h=this.l=null};Bk.prototype.s=function(){}; -function Ik(b,c){if(c==b.l)return!1;b.a.useProgram(c);b.l=c;return!0}function Jk(b,c,d){var e=b.createTexture();b.bindTexture(b.TEXTURE_2D,e);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.LINEAR);void 0!==c&&b.texParameteri(3553,10242,c);void 0!==d&&b.texParameteri(3553,10243,d);return e}function Fk(b,c,d){var e=Jk(b,void 0,void 0);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,c,d,0,b.RGBA,b.UNSIGNED_BYTE,null);return e};function Kk(b,c){this.H=this.u=void 0;this.j=Xb(c);this.s=[];this.h=[];this.A=void 0;this.g=[];this.c=[];this.D=this.I=void 0;this.b=[];this.v=this.i=null;this.V=void 0;this.ka=Ab();this.ua=Ab();this.R=this.G=void 0;this.la=Ab();this.ha=this.Z=this.T=void 0;this.da=[];this.l=[];this.a=[];this.o=null;this.f=[];this.B=[];this.aa=void 0}M(Kk,Fg); -function Lk(b,c){var d=b.o,e=b.i,f=b.da,g=b.l,h=c.a;return function(){if(!h.isContextLost()){var b,l;b=0;for(l=f.length;b<l;++b)h.deleteTexture(f[b]);b=0;for(l=g.length;b<l;++b)h.deleteTexture(g[b])}Dk(c,d);Dk(c,e)}} -function Mk(b,c,d,e){var f=b.u,g=b.H,h=b.A,k=b.I,l=b.D,m=b.V,p=b.G,q=b.R,r=b.T?1:0,u=b.Z,w=b.ha,y=b.aa,z=Math.cos(u),u=Math.sin(u),D=b.b.length,t=b.a.length,v,B,F,C,G,J;for(v=0;v<d;v+=e)G=c[v]-b.j[0],J=c[v+1]-b.j[1],B=t/8,F=-w*f,C=-w*(h-g),b.a[t++]=G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=p/l,b.a[t++]=(q+h)/k,b.a[t++]=m,b.a[t++]=r,F=w*(y-f),C=-w*(h-g),b.a[t++]=G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=(p+y)/l,b.a[t++]=(q+h)/k,b.a[t++]=m,b.a[t++]=r,F=w*(y-f),C=w*g,b.a[t++]= -G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=(p+y)/l,b.a[t++]=q/k,b.a[t++]=m,b.a[t++]=r,F=-w*f,C=w*g,b.a[t++]=G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=p/l,b.a[t++]=q/k,b.a[t++]=m,b.a[t++]=r,b.b[D++]=B,b.b[D++]=B+1,b.b[D++]=B+2,b.b[D++]=B,b.b[D++]=B+2,b.b[D++]=B+3}Kk.prototype.Qa=function(b,c){this.f.push(this.b.length);this.B.push(c);var d=b.a;Mk(this,d,d.length,b.b)};Kk.prototype.Ra=function(b,c){this.f.push(this.b.length);this.B.push(c);var d=b.a;Mk(this,d,d.length,b.b)}; -function Nk(b,c){var d=c.a;b.s.push(b.b.length);b.h.push(b.b.length);b.o=new Ak(b.a);Ck(c,34962,b.o);b.i=new Ak(b.b);Ck(c,34963,b.i);var e={};Ok(b.da,b.g,e,d);Ok(b.l,b.c,e,d);b.u=void 0;b.H=void 0;b.A=void 0;b.g=null;b.c=null;b.I=void 0;b.D=void 0;b.b=null;b.V=void 0;b.G=void 0;b.R=void 0;b.T=void 0;b.Z=void 0;b.ha=void 0;b.a=null;b.aa=void 0} -function Ok(b,c,d,e){var f,g,h,k,l=c.length;for(k=0;k<l;++k){g=c[k];h=I(g).toString();if(h in d)f=d[h];else{f=e;var m=Jk(f,33071,33071);f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,g);f=m;d[h]=f}b[k]=f}} -function Pk(b,c,d,e,f,g,h,k,l,m,p){var q=c.a;Ck(c,34962,b.o);Ck(c,34963,b.i);var r=xk.qa(),u=yk.qa(),u=Hk(c,r,u);b.v?r=b.v:(r=new zk(q,u),b.v=r);Ik(c,u);q.enableVertexAttribArray(r.c);q.vertexAttribPointer(r.c,2,5126,!1,32,0);q.enableVertexAttribArray(r.a);q.vertexAttribPointer(r.a,2,5126,!1,32,8);q.enableVertexAttribArray(r.g);q.vertexAttribPointer(r.g,2,5126,!1,32,16);q.enableVertexAttribArray(r.b);q.vertexAttribPointer(r.b,1,5126,!1,32,24);q.enableVertexAttribArray(r.f);q.vertexAttribPointer(r.f, -1,5126,!1,32,28);u=b.la;Jg(u,0,0,2/(e*g[0]),2/(e*g[1]),-f,-(d[0]-b.j[0]),-(d[1]-b.j[1]));d=b.ua;e=2/g[0];g=2/g[1];Cb(d);d[0]=e;d[5]=g;d[10]=1;d[15]=1;g=b.ka;Cb(g);0!==f&&Gb(g,-f);q.uniformMatrix4fv(r.l,!1,u);q.uniformMatrix4fv(r.j,!1,d);q.uniformMatrix4fv(r.i,!1,g);q.uniform1f(r.h,h);var w;if(void 0===l)Qk(b,q,c,k,b.da,b.s);else{if(m)a:{f=c.f?5125:5123;c=c.f?4:2;g=b.f.length-1;for(h=b.l.length-1;0<=h;--h)for(q.bindTexture(3553,b.l[h]),m=0<h?b.h[h-1]:0,u=b.h[h];0<=g&&b.f[g]>=m;){w=b.f[g];d=b.B[g]; -e=I(d).toString();if(void 0===k[e]&&d.M()&&(void 0===p||$b(p,d.M().C()))&&(q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),q.drawElements(4,u-w,f,w*c),u=l(d))){b=u;break a}u=w;g--}b=void 0}else q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),Qk(b,q,c,k,b.l,b.h),b=(b=l(null))?b:void 0;w=b}q.disableVertexAttribArray(r.c);q.disableVertexAttribArray(r.a);q.disableVertexAttribArray(r.g);q.disableVertexAttribArray(r.b);q.disableVertexAttribArray(r.f);return w} -function Qk(b,c,d,e,f,g){var h=d.f?5125:5123;d=d.f?4:2;if(Za(e)){var k;b=0;e=f.length;for(k=0;b<e;++b){c.bindTexture(3553,f[b]);var l=g[b];c.drawElements(4,l-k,h,k*d);k=l}}else{k=0;var m,l=0;for(m=f.length;l<m;++l){c.bindTexture(3553,f[l]);for(var p=0<l?g[l-1]:0,q=g[l],r=p;k<b.f.length&&b.f[k]<=q;){var u=I(b.B[k]).toString();void 0!==e[u]?(r!==p&&c.drawElements(4,p-r,h,r*d),p=r=k===b.f.length-1?q:b.f[k+1]):p=k===b.f.length-1?q:b.f[k+1];k++}r!==p&&c.drawElements(4,p-r,h,r*d)}}} -Kk.prototype.Aa=function(b){var c=b.Sa(),d=b.S(1),e=b.Db(),f=b.jb(1),g=b.B,h=b.fa(),k=b.o,l=b.s,m=b.ya();b=b.u;var p;0===this.g.length?this.g.push(d):(p=this.g[this.g.length-1],I(p)!=I(d)&&(this.s.push(this.b.length),this.g.push(d)));0===this.c.length?this.c.push(f):(p=this.c[this.c.length-1],I(p)!=I(f)&&(this.h.push(this.b.length),this.c.push(f)));this.u=c[0];this.H=c[1];this.A=m[1];this.I=e[1];this.D=e[0];this.V=g;this.G=h[0];this.R=h[1];this.Z=l;this.T=k;this.ha=b;this.aa=m[0]}; -function Rk(b,c,d){this.l=c;this.i=b;this.h=d;this.b={}}function Sk(b,c){var d=[],e;for(e in b.b)d.push(Lk(b.b[e],c));return function(){for(var b=d.length,c,e=0;e<b;e++)c=d[e].apply(this,arguments);return c}}function Tk(b,c){for(var d in b.b)Nk(b.b[d],c)}Rk.prototype.a=function(b,c){var d=this.b[c];void 0===d&&(d=new Uk[c](this.i,this.l),this.b[c]=d);return d};Rk.prototype.c=function(){return Za(this.b)}; -Rk.prototype.f=function(b,c,d,e,f,g,h,k){var l,m;g=0;for(l=cj.length;g<l;++g)m=this.b[cj[g]],void 0!==m&&Pk(m,b,c,d,e,f,h,k,void 0,!1)};function Vk(b,c,d,e,f,g,h,k,l,m){var p=Wk,q,r;for(q=cj.length-1;0<=q;--q)if(r=b.b[cj[q]],void 0!==r&&(r=Pk(r,c,d,e,f,p,g,h,k,l,m)))return r} -Rk.prototype.g=function(b,c,d,e,f,g,h,k,l,m){var p=c.a;p.bindFramebuffer(p.FRAMEBUFFER,Ek(c));var q;void 0!==this.h&&(q=Kb(Pb(b),e*this.h));return Vk(this,c,b,e,f,k,l,function(b){var c=new Uint8Array(4);p.readPixels(0,0,1,1,p.RGBA,p.UNSIGNED_BYTE,c);if(0<c[3]&&(b=m(b)))return b},!0,q)};function Xk(b,c,d,e,f,g,h){var k=d.a;k.bindFramebuffer(k.FRAMEBUFFER,Ek(d));return void 0!==Vk(b,d,c,e,f,g,h,function(){var b=new Uint8Array(4);k.readPixels(0,0,1,1,k.RGBA,k.UNSIGNED_BYTE,b);return 0<b[3]},!1)} -var Uk={Image:Kk},Wk=[1,1];function Yk(b,c,d,e,f,g){this.a=b;this.f=c;this.c=g;this.l=f;this.h=e;this.g=d;this.b=null}M(Yk,Fg);Yk.prototype.Ra=function(b,c){var d=this.a,e=(new Rk(1,this.c)).a(0,"Image");e.Aa(this.b);e.Ra(b,c);Nk(e,d);Pk(e,this.a,this.f,this.g,this.h,this.l,1,{},void 0,!1);Lk(e,d)()};Yk.prototype.Qa=function(b,c){var d=this.a,e=(new Rk(1,this.c)).a(0,"Image");e.Aa(this.b);e.Qa(b,c);Nk(e,d);Pk(e,this.a,this.f,this.g,this.h,this.l,1,{},void 0,!1);Lk(e,d)()};Yk.prototype.Aa=function(b){this.b=b};function Zk(){this.a="precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor=texture2D(g,a);gl_FragColor.rgb=texColor.rgb;gl_FragColor.a=texColor.a*f;}"}M(Zk,vk);aa(Zk);function $k(){this.a="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position=e*vec4(b,0.,1.);a=(d*vec4(c,0.,1.)).st;}"}M($k,wk);aa($k); -function al(b,c){this.f=b.getUniformLocation(c,"f");this.c=b.getUniformLocation(c,"e");this.h=b.getUniformLocation(c,"d");this.g=b.getUniformLocation(c,"g");this.a=b.getAttribLocation(c,"b");this.b=b.getAttribLocation(c,"c")};function bl(b,c){Mg.call(this,c);this.c=b;this.G=new Ak([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]);this.i=this.ta=null;this.j=void 0;this.D=yb();this.R=Ab();this.o=null}M(bl,Mg); -function cl(b,c,d){var e=b.c.c;if(void 0===b.j||b.j!=d){c.postRenderFunctions.push(na(function(b,c,d){b.isContextLost()||(b.deleteFramebuffer(c),b.deleteTexture(d))},e,b.i,b.ta));c=Fk(e,d,d);var f=e.createFramebuffer();e.bindFramebuffer(36160,f);e.framebufferTexture2D(36160,36064,3553,c,0);b.ta=c;b.i=f;b.j=d}else e.bindFramebuffer(36160,b.i)} -bl.prototype.Dc=function(b,c,d){dl(this,"precompose",d,b);Ck(d,34962,this.G);var e=d.a,f=Zk.qa(),g=$k.qa(),f=Hk(d,f,g);this.o?g=this.o:this.o=g=new al(e,f);Ik(d,f)&&(e.enableVertexAttribArray(g.a),e.vertexAttribPointer(g.a,2,5126,!1,16,0),e.enableVertexAttribArray(g.b),e.vertexAttribPointer(g.b,2,5126,!1,16,8),e.uniform1i(g.g,0));e.uniformMatrix4fv(g.h,!1,this.D);e.uniformMatrix4fv(g.c,!1,this.R);e.uniform1f(g.f,c.opacity);e.bindTexture(3553,this.ta);e.drawArrays(5,0,4);dl(this,"postcompose",d,b)}; -function dl(b,c,d,e){b=b.a;if(mb(b,c)){var f=e.viewState;T(b,new Gg(c,b,new Yk(d,f.center,f.resolution,f.rotation,e.size,e.extent),e,null,d))}}bl.prototype.s=function(){this.i=this.ta=null;this.j=void 0};function el(){this.a="precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}"}M(el,vk);aa(el);function fl(){this.a="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform vec4 d;void main(void){gl_Position=vec4(b*d.xy+d.zw,0.,1.);a=c;}"}M(fl,wk);aa(fl);function gl(b,c){this.f=b.getUniformLocation(c,"e");this.c=b.getUniformLocation(c,"d");this.a=b.getAttribLocation(c,"b");this.b=b.getAttribLocation(c,"c")};function hl(b,c){bl.call(this,b,c);this.A=el.qa();this.T=fl.qa();this.b=null;this.v=new Ak([0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0]);this.u=this.g=null;this.h=-1;this.I=[0,0]}M(hl,bl);hl.prototype.K=function(){Dk(this.c.g,this.v);hl.Y.K.call(this)};hl.prototype.l=function(b,c,d){var e=this.c;return function(f,g){return Xe(b,c,f,g,function(b){var c=xe(e.b,b.getKey());c&&(d[f]||(d[f]={}),d[f][b.L.toString()]=b);return c})}};hl.prototype.s=function(){hl.Y.s.call(this);this.b=null}; -hl.prototype.Ec=function(b,c,d){var e=this.c,f=d.a,g=b.viewState,h=g.projection,k=this.a,l=k.W(),m=l.ia(h),p=Re(m,g.resolution),q=m.J(p),r=Ye(l,p,b.pixelRatio,h),u=r[0]/sb(Qe(m,p),this.I)[0],w=q/u,y=l.bb(h),z=g.center,D;q==g.resolution?(z=Sg(z,q,b.size),D=Yb(z,q,g.rotation,b.size)):D=b.extent;q=Ne(m,D,q);if(this.g&&id(this.g,q)&&this.h==l.f)w=this.u;else{var t=[q.b-q.a+1,q.c-q.f+1],v=Math.pow(2,Math.ceil(Math.log(Math.max(t[0]*r[0],t[1]*r[1]))/Math.LN2)),t=w*v,B=m.fa(p),F=B[0]+q.a*r[0]*w,w=B[1]+q.f* -r[1]*w,w=[F,w,F+t,w+t];cl(this,b,v);f.viewport(0,0,v,v);f.clearColor(0,0,0,0);f.clear(16384);f.disable(3042);v=Hk(d,this.A,this.T);Ik(d,v);this.b||(this.b=new gl(f,v));Ck(d,34962,this.v);f.enableVertexAttribArray(this.b.a);f.vertexAttribPointer(this.b.a,2,5126,!1,16,0);f.enableVertexAttribArray(this.b.b);f.vertexAttribPointer(this.b.b,2,5126,!1,16,8);f.uniform1i(this.b.f,0);d={};d[p]={};var C=this.l(l,h,d),G=ui(k),v=!0,F=Ib(),J=new gd(0,0,0,0),A,H,O;for(H=q.a;H<=q.b;++H)for(O=q.f;O<=q.c;++O){B=Ug(l, -p,H,O,u,h);if(void 0!==c.extent&&(A=Ke(m,B.L,F),!$b(A,c.extent)))continue;A=B.N();A=2==A||4==A||3==A&&!G;!A&&B.a&&(B=B.a);A=B.N();if(2==A){if(xe(e.b,B.getKey())){d[p][B.L.toString()]=B;continue}}else if(4==A||3==A&&!G)continue;v=!1;A=Je(m,B.L,C,J,F);A||(B=Me(m,B.L,J,F))&&C(p+1,B)}c=Object.keys(d).map(Number);c.sort(Ga);for(var C=new Float32Array(4),Q,L,K,G=0,J=c.length;G<J;++G)for(Q in L=d[c[G]],L)B=L[Q],A=Ke(m,B.L,F),H=2*(A[2]-A[0])/t,O=2*(A[3]-A[1])/t,K=2*(A[0]-w[0])/t-1,A=2*(A[1]-w[1])/t-1,xb(C, -H,O,K,A),f.uniform4fv(this.b.c,C),il(e,B,r,y*u),f.drawArrays(5,0,4);v?(this.g=q,this.u=w,this.h=l.f):(this.u=this.g=null,this.h=-1,b.animate=!0)}Rg(b.usedTiles,l,p,q);var fa=e.i;Tg(b,l,m,u,h,D,p,k.get("preload"),function(b){var c;(c=2!=b.N()||xe(e.b,b.getKey()))||(c=b.getKey()in fa.f);c||fa.c([b,Pe(m,b.L),m.J(b.L[0]),r,y*u])},this);Og(b,l);Qg(b,l);f=this.D;Cb(f);Eb(f,(z[0]-w[0])/(w[2]-w[0]),(z[1]-w[1])/(w[3]-w[1]));0!==g.rotation&&Gb(f,g.rotation);Fb(f,b.size[0]*g.resolution/(w[2]-w[0]),b.size[1]* -g.resolution/(w[3]-w[1]));Eb(f,-.5,-.5);return!0};function jl(b,c){bl.call(this,b,c);this.h=!1;this.I=-1;this.A=NaN;this.u=Ib();this.g=this.b=this.v=null}M(jl,bl);n=jl.prototype;n.Dc=function(b,c,d){this.g=c;var e=b.viewState,f=this.b;f&&!f.c()&&f.f(d,e.center,e.resolution,e.rotation,b.size,b.pixelRatio,c.opacity,c.Wa?b.skippedFeatureUids:{})};n.K=function(){var b=this.b;b&&(Sk(b,this.c.g)(),this.b=null);jl.Y.K.call(this)}; -n.Xa=function(b,c,d,e){if(this.b&&this.g){var f=c.viewState,g=this.a,h={};return this.b.g(b,this.c.g,f.center,f.resolution,f.rotation,c.size,c.pixelRatio,this.g.opacity,{},function(b){var c=I(b).toString();if(!(c in h))return h[c]=!0,d.call(e,b,g)})}};n.yc=function(b,c){if(this.b&&this.g){var d=c.viewState;return Xk(this.b,b,this.c.g,d.resolution,d.rotation,this.g.opacity,c.skippedFeatureUids)}return!1};n.Fc=function(){Ng(this)}; -n.Ec=function(b,c,d){function e(b){var c,d=b.c;d?c=d.call(b,m):(d=f.g)&&(c=d(b,m));if(c){if(c){d=!1;if(Array.isArray(c))for(var e=0,g=c.length;e<g;++e)d=yj(r,b,c[e],xj(m,p),this.Fc,this)||d;else d=yj(r,b,c,xj(m,p),this.Fc,this)||d;b=d}else b=!1;this.h=this.h||b}}var f=this.a;c=f.W();Pg(b.attributions,c.i);Qg(b,c);var g=b.viewHints[0],h=b.viewHints[1],k=f.i,l=f.j;if(!this.h&&!k&&g||!l&&h)return!0;var h=b.extent,k=b.viewState,g=k.projection,m=k.resolution,p=b.pixelRatio,k=f.f,q=f.a,l=f.get("renderOrder"); -void 0===l&&(l=wj);h=Kb(h,q*m);if(!this.h&&this.A==m&&this.I==k&&this.v==l&&Mb(this.u,h))return!0;this.b&&b.postRenderFunctions.push(Sk(this.b,d));this.h=!1;var r=new Rk(.5*m/p,h,f.a);ck(c,h,m,g);if(l){var u=[];ak(c,h,function(b){u.push(b)},this);u.sort(l);u.forEach(e,this)}else ak(c,h,e,this);Tk(r,d);this.A=m;this.I=k;this.v=l;this.u=h;this.b=r;return!0};function kl(b,c){$g.call(this,0,c);this.a=document.createElement("CANVAS");this.a.style.width="100%";this.a.style.height="100%";this.a.className="ol-unselectable";ge(b,this.a,0);this.s=this.u=0;this.H=sf();this.j=!0;this.c=yf(this.a,{antialias:!0,depth:!1,failIfMajorPerformanceCaveat:!0,preserveDrawingBuffer:!1,stencil:!0});this.g=new Bk(this.a,this.c);R(this.a,"webglcontextlost",this.ce,this);R(this.a,"webglcontextrestored",this.de,this);this.b=new we;this.o=null;this.i=new eh(function(b){var c= -b[1];b=b[2];var f=c[0]-this.o[0],c=c[1]-this.o[1];return 65536*Math.log(b)+Math.sqrt(f*f+c*c)/b}.bind(this),function(b){return b[0].getKey()});this.v=function(){if(0!==this.i.a.length){ih(this.i);var b=fh(this.i);il(this,b[0],b[3],b[4])}return!1}.bind(this);this.l=0;ll(this)}M(kl,$g); -function il(b,c,d,e){var f=b.c,g=c.getKey();if(xe(b.b,g))b=b.b.get(g),f.bindTexture(3553,b.ta),9729!=b.sc&&(f.texParameteri(3553,10240,9729),b.sc=9729),9729!=b.tc&&(f.texParameteri(3553,10240,9729),b.tc=9729);else{var h=f.createTexture();f.bindTexture(3553,h);if(0<e){var k=b.H.canvas,l=b.H;b.u!==d[0]||b.s!==d[1]?(k.width=d[0],k.height=d[1],b.u=d[0],b.s=d[1]):l.clearRect(0,0,d[0],d[1]);l.drawImage(c.S(),e,e,d[0],d[1],0,0,d[0],d[1]);f.texImage2D(3553,0,6408,6408,5121,k)}else f.texImage2D(3553,0,6408, -6408,5121,c.S());f.texParameteri(3553,10240,9729);f.texParameteri(3553,10241,9729);f.texParameteri(3553,10242,33071);f.texParameteri(3553,10243,33071);b.b.set(g,{ta:h,sc:9729,tc:9729})}}n=kl.prototype;n.Bb=function(b){return b instanceof X?new hl(this,b):b instanceof Y?new jl(this,b):null};function ml(b,c,d){var e=b.h;if(mb(e,c)){b=b.g;var f=d.viewState;T(e,new Gg(c,e,new Yk(b,f.center,f.resolution,f.rotation,d.size,d.extent),d,null,b))}} -n.K=function(){var b=this.c;b.isContextLost()||ye(this.b,function(c){c&&b.deleteTexture(c.ta)});ib(this.g);kl.Y.K.call(this)};n.ed=function(b,c){for(var d=this.c,e;1024<this.b.f-this.l;){if(e=this.b.a.Ba)d.deleteTexture(e.ta);else if(+this.b.a.Kb==c.index)break;else--this.l;this.b.pop()}};n.U=function(){return"webgl"};n.ce=function(b){b.preventDefault();this.b.clear();this.l=0;b=this.f;for(var c in b)b[c].s()};n.de=function(){ll(this);this.h.render()}; -function ll(b){b=b.c;b.activeTexture(33984);b.blendFuncSeparate(770,771,1,771);b.disable(2884);b.disable(2929);b.disable(3089);b.disable(2960)} -n.kb=function(b){var c=this.g,d=this.c;if(d.isContextLost())return!1;if(!b)return this.j&&(pe(this.a,!1),this.j=!1),!1;this.o=b.focus;this.b.set((-b.index).toString(),null);++this.l;ml(this,"precompose",b);var e=[],f=b.layerStatesArray;Ma(f);var g=b.viewState.resolution,h,k,l,m;h=0;for(k=f.length;h<k;++h)m=f[h],Ig(m,g)&&"ready"==m.Tb&&(l=ch(this,m.layer),l.Ec(b,m,c)&&e.push(m));f=b.size[0]*b.pixelRatio;g=b.size[1]*b.pixelRatio;if(this.a.width!=f||this.a.height!=g)this.a.width=f,this.a.height=g;d.bindFramebuffer(36160, -null);d.clearColor(0,0,0,0);d.clear(16384);d.enable(3042);d.viewport(0,0,this.a.width,this.a.height);h=0;for(k=e.length;h<k;++h)m=e[h],l=ch(this,m.layer),l.Dc(b,m,c);this.j||(pe(this.a,!0),this.j=!0);ah(b);1024<this.b.f-this.l&&b.postRenderFunctions.push(this.ed.bind(this));0!==this.i.a.length&&(b.postRenderFunctions.push(this.v),b.animate=!0);ml(this,"postcompose",b);dh(this,b);b.postRenderFunctions.push(bh)}; -n.Qb=function(b,c,d,e,f,g){var h;if(this.c.isContextLost())return!1;var k=c.viewState,l=c.layerStatesArray,m;for(m=l.length-1;0<=m;--m){h=l[m];var p=h.layer;if(Ig(h,k.resolution)&&f.call(g,p)&&(h=ch(this,p).Xa(b,c,d,e)))return h}};n.zc=function(b,c,d,e){var f=!1;if(this.c.isContextLost())return!1;var g=c.viewState,h=c.layerStatesArray,k;for(k=h.length-1;0<=k;--k){var l=h[k],m=l.layer;if(Ig(l,g.resolution)&&d.call(e,m)&&(f=ch(this,m).yc(b,c)))return!0}return f};var nl=["canvas","webgl","dom"]; -function Z(b){U.call(this);var c=pl(b);this.Ca=void 0!==b.loadTilesWhileAnimating?b.loadTilesWhileAnimating:!1;this.ob=void 0!==b.loadTilesWhileInteracting?b.loadTilesWhileInteracting:!1;this.qb=void 0!==b.pixelRatio?b.pixelRatio:Ef;this.pb=c.logos;this.T=function(){this.g=void 0;this.re.call(this,Date.now())}.bind(this);this.va=yb();this.rb=yb();this.wa=0;this.b=null;this.ka=Ib();this.u=this.G=null;this.a=document.createElement("DIV");this.a.className="ol-viewport"+(Hf?" ol-touch":"");this.a.style.position= -"relative";this.a.style.overflow="hidden";this.a.style.width="100%";this.a.style.height="100%";this.a.style.msTouchAction="none";this.a.style.touchAction="none";this.o=document.createElement("DIV");this.o.className="ol-overlaycontainer";this.a.appendChild(this.o);this.j=document.createElement("DIV");this.j.className="ol-overlaycontainer-stopevent";b=["click","dblclick","mousedown","touchstart","mspointerdown",zg,"mousewheel","wheel"];for(var d=0,e=b.length;d<e;++d)R(this.j,b[d],jb);this.a.appendChild(this.j); -this.aa=new rg(this);for(var f in Cg)R(this.aa,Cg[f],this.pc,this);this.Z=c.keyboardEventTarget;this.i=null;R(this.a,"wheel",this.Ga,this);R(this.a,"mousewheel",this.Ga,this);this.s=c.controls;this.h=c.interactions;this.v=c.overlays;this.Nc={};this.D=new c.te(this.a,this);this.R=null;this.A=[];this.da=[];this.la=new jh(this.jd.bind(this),this.Ed.bind(this));this.sb={};R(this,qb("layergroup"),this.od,this);R(this,qb("view"),this.Fd,this);R(this,qb("size"),this.Bd,this);R(this,qb("target"),this.Dd, -this);this.l(c.values);od(this.s,function(b){b.setMap(this)},this);R(this.s,"add",function(b){b.element.setMap(this)},this);R(this.s,"remove",function(b){b.element.setMap(null)},this);od(this.h,function(b){b.setMap(this)},this);R(this.h,"add",function(b){b.element.setMap(this)},this);R(this.h,"remove",function(b){b.element.setMap(null)},this);od(this.v,this.ac,this);R(this.v,"add",function(b){this.ac(b.element)},this);R(this.v,"remove",function(b){var c=b.element.Da();void 0!==c&&delete this.Nc[c.toString()]; -b.element.setMap(null)},this)}M(Z,U);n=Z.prototype;n.$c=function(b){this.s.push(b)};n.ad=function(b){this.h.push(b)};n.bd=function(b){ql(this).get("layers").push(b)};n.cd=function(b){this.v.push(b)};n.ac=function(b){var c=b.Da();void 0!==c&&(this.Nc[c.toString()]=b);b.setMap(this)};n.ea=function(b){this.render();Array.prototype.push.apply(this.A,arguments)}; -n.K=function(){ib(this.aa);ib(this.D);fb(this.a,"wheel",this.Ga,this);fb(this.a,"mousewheel",this.Ga,this);void 0!==this.c&&(x.removeEventListener("resize",this.c,!1),this.c=void 0);this.g&&(x.cancelAnimationFrame(this.g),this.g=void 0);this.set("target",null);Z.Y.K.call(this)};n.hd=function(b,c,d,e,f){if(this.b)return b=this.pa(b),this.D.Qb(b,this.b,c,void 0!==d?d:null,void 0!==e?e:bc,void 0!==f?f:null)}; -n.Hd=function(b,c,d){if(!this.b)return!1;b=this.pa(b);return this.D.zc(b,this.b,void 0!==c?c:bc,void 0!==d?d:null)};n.nc=function(b){var c=this.a.getBoundingClientRect();b=b.changedTouches?b.changedTouches[0]:b;return[b.clientX-c.left,b.clientY-c.top]};n.Nb=function(){return this.get("target")};n.Fa=function(){var b=this.Nb();return void 0!==b?$d(b):null};n.pa=function(b){var c=this.b;return c?(b=b.slice(),Lg(c.pixelToCoordinateMatrix,b,b)):null};function ql(b){return b.get("layergroup")} -function Fh(b,c){var d=b.b;if(d){var e=c.slice(0,2);return Lg(d.coordinateToPixelMatrix,e,e)}return null}n.Ha=function(){return this.get("size")};n.O=function(){return this.get("view")};n.jd=function(b,c,d,e){var f=this.b;if(!(f&&c in f.wantedTiles&&f.wantedTiles[c][b.L.toString()]))return Infinity;b=d[0]-f.focus[0];d=d[1]-f.focus[1];return 65536*Math.log(e)+Math.sqrt(b*b+d*d)/e};n.Ga=function(b,c){var d=new pg(c||b.type,this,b);this.pc(d)}; -n.pc=function(b){if(this.b){this.R=b.coordinate;b.frameState=this.b;var c=this.h.a,d;if(!1!==T(this,b))for(d=c.length-1;0<=d;d--){var e=c[d];if(e.get("active")&&!e.handleEvent(b))break}}}; -n.Ad=function(){var b=this.b,c=this.la;if(0!==c.a.length){var d=16,e=d;if(b){var f=b.viewHints;f[0]&&(d=this.Ca?8:0,e=2);f[1]&&(d=this.ob?8:0,e=2)}if(c.h<d){ih(c);for(var f=0,g,h;c.h<d&&f<e&&0<c.a.length;)g=fh(c)[0],h=g.getKey(),0!==g.N()||h in c.g||(c.g[h]=!0,++c.h,++f,g.load())}}c=this.da;d=0;for(e=c.length;d<e;++d)c[d](this,b);c.length=0};n.Bd=function(){this.render()}; -n.Dd=function(){var b;this.Nb()&&(b=this.Fa());if(this.i){for(var c=0,d=this.i.length;c<d;++c)P(this.i[c]);this.i=null}b?(b.appendChild(this.a),b=this.Z?this.Z:b,this.i=[R(b,"keydown",this.Ga,this),R(b,"keypress",this.Ga,this)],this.c||(this.c=this.nb.bind(this),x.addEventListener("resize",this.c,!1))):(he(this.a),void 0!==this.c&&(x.removeEventListener("resize",this.c,!1),this.c=void 0));this.nb()};n.Ed=function(){this.render()};n.Gd=function(){this.render()}; -n.Fd=function(){this.G&&(P(this.G),this.G=null);var b=this.O();b&&(this.G=R(b,"propertychange",this.Gd,this));this.render()};n.pd=function(){this.render()};n.qd=function(){this.render()};n.od=function(){this.u&&(this.u.forEach(P),this.u=null);var b=ql(this);b&&(this.u=[R(b,"propertychange",this.qd,this),R(b,"change",this.pd,this)]);this.render()};n.se=function(){this.g&&x.cancelAnimationFrame(this.g);this.T()};n.render=function(){void 0===this.g&&(this.g=x.requestAnimationFrame(this.T))};n.oe=function(b){return this.h.remove(b)}; -n.pe=function(b){return ql(this).get("layers").remove(b)}; -n.re=function(b){var c,d,e,f=this.Ha(),g=this.O(),h=null;if(c=void 0!==f&&0<f[0]&&0<f[1]&&g)c=!!g.ga()&&void 0!==g.J();if(c){var h=g.g.slice(),k=ql(this).Eb(),l={};c=0;for(d=k.length;c<d;++c)l[I(k[c].layer)]=k[c];e=g.N();h={animate:!1,attributions:{},coordinateToPixelMatrix:this.va,extent:null,focus:this.R?this.R:e.center,index:this.wa++,layerStates:l,layerStatesArray:k,logos:Va({},this.pb),pixelRatio:this.qb,pixelToCoordinateMatrix:this.rb,postRenderFunctions:[],size:f,skippedFeatureUids:this.sb, -tileQueue:this.la,time:b,usedTiles:{},viewState:e,viewHints:h,wantedTiles:{}}}if(h){b=this.A;c=f=0;for(d=b.length;c<d;++c)g=b[c],g(this,h)&&(b[f++]=g);b.length=f;h.extent=Yb(e.center,e.resolution,e.rotation,h.size)}this.b=h;this.D.kb(h);h&&(h.animate&&this.render(),Array.prototype.push.apply(this.da,h.postRenderFunctions),0!==this.A.length||h.viewHints[0]||h.viewHints[1]||Qb(h.extent,this.ka)||(T(this,new ue("moveend",this,h)),Lb(h.extent,this.ka)));T(this,new ue("postrender",this,h));c=e=this.Ad; -this&&(c=ma(e,this));!ga(x.setImmediate)||x.Window&&x.Window.prototype&&!W("Edge")&&x.Window.prototype.setImmediate==x.setImmediate?(mf||(mf=nf()),mf(c)):x.setImmediate(c)}; -n.nb=function(){var b=this.Fa();if(b){var c=Zd(b),d=Hd&&b.currentStyle,e;if(e=d)Xd(c),e=!0;if(e&&"auto"!=d.width&&"auto"!=d.height&&!d.boxSizing)c=qe(b,d.width,"width","pixelWidth"),b=qe(b,d.height,"height","pixelHeight"),b=new Wd(c,b);else{d=new Wd(b.offsetWidth,b.offsetHeight);if(Hd){c=re(b,"paddingLeft");e=re(b,"paddingRight");var f=re(b,"paddingTop"),g=re(b,"paddingBottom"),c=new ke(f,e,g,c)}else c=le(b,"paddingLeft"),e=le(b,"paddingRight"),f=le(b,"paddingTop"),g=le(b,"paddingBottom"),c=new ke(parseFloat(f), -parseFloat(e),parseFloat(g),parseFloat(c));!Hd||9<=Number(Td)?(e=le(b,"borderLeftWidth"),f=le(b,"borderRightWidth"),g=le(b,"borderTopWidth"),b=le(b,"borderBottomWidth"),b=new ke(parseFloat(g),parseFloat(f),parseFloat(b),parseFloat(e))):(e=te(b,"borderLeft"),f=te(b,"borderRight"),g=te(b,"borderTop"),b=te(b,"borderBottom"),b=new ke(g,f,b,e));b=new Wd(d.width-b.left-c.left-c.right-b.right,d.height-b.top-c.top-c.bottom-b.bottom)}this.set("size",[b.width,b.height])}else this.set("size",void 0)}; -function pl(b){var c=null;void 0!==b.keyboardEventTarget&&(c="string"===typeof b.keyboardEventTarget?document.getElementById(b.keyboardEventTarget):b.keyboardEventTarget);var d={},e={};if(void 0===b.logo||"boolean"===typeof b.logo&&b.logo)e["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAHGAAABxgEXwfpGAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAhNQTFRF////AP//AICAgP//AFVVQECA////K1VVSbbbYL/fJ05idsTYJFtbbcjbJllmZszWWMTOIFhoHlNiZszTa9DdUcHNHlNlV8XRIVdiasrUHlZjIVZjaMnVH1RlIFRkH1RkH1ZlasvYasvXVsPQH1VkacnVa8vWIVZjIFRjVMPQa8rXIVVkXsXRsNveIFVkIFZlIVVj3eDeh6GmbMvXH1ZkIFRka8rWbMvXIFVkIFVjIFVkbMvWH1VjbMvWIFVlbcvWIFVla8vVIFVkbMvWbMvVH1VkbMvWIFVlbcvWIFVkbcvVbMvWjNPbIFVkU8LPwMzNIFVkbczWIFVkbsvWbMvXIFVkRnB8bcvW2+TkW8XRIFVkIlZlJVloJlpoKlxrLl9tMmJwOWd0Omh1RXF8TneCT3iDUHiDU8LPVMLPVcLPVcPQVsPPVsPQV8PQWMTQWsTQW8TQXMXSXsXRX4SNX8bSYMfTYcfTYsfTY8jUZcfSZsnUaIqTacrVasrVa8jTa8rWbI2VbMvWbcvWdJObdcvUdszUd8vVeJaee87Yfc3WgJyjhqGnitDYjaarldPZnrK2oNbborW5o9bbo9fbpLa6q9ndrL3ArtndscDDutzfu8fJwN7gwt7gxc/QyuHhy+HizeHi0NfX0+Pj19zb1+Tj2uXk29/e3uLg3+Lh3+bl4uXj4ufl4+fl5Ofl5ufl5ujm5+jmySDnBAAAAFp0Uk5TAAECAgMEBAYHCA0NDg4UGRogIiMmKSssLzU7PkJJT1JTVFliY2hrdHZ3foSFhYeJjY2QkpugqbG1tre5w8zQ09XY3uXn6+zx8vT09vf4+Pj5+fr6/P39/f3+gz7SsAAAAVVJREFUOMtjYKA7EBDnwCPLrObS1BRiLoJLnte6CQy8FLHLCzs2QUG4FjZ5GbcmBDDjxJBXDWxCBrb8aM4zbkIDzpLYnAcE9VXlJSWlZRU13koIeW57mGx5XjoMZEUqwxWYQaQbSzLSkYGfKFSe0QMsX5WbjgY0YS4MBplemI4BdGBW+DQ11eZiymfqQuXZIjqwyadPNoSZ4L+0FVM6e+oGI6g8a9iKNT3o8kVzNkzRg5lgl7p4wyRUL9Yt2jAxVh6mQCogae6GmflI8p0r13VFWTHBQ0rWPW7ahgWVcPm+9cuLoyy4kCJDzCm6d8PSFoh0zvQNC5OjDJhQopPPJqph1doJBUD5tnkbZiUEqaCnB3bTqLTFG1bPn71kw4b+GFdpLElKIzRxxgYgWNYc5SCENVHKeUaltHdXx0dZ8uBI1hJ2UUDgq82CM2MwKeibqAvSO7MCABq0wXEPiqWEAAAAAElFTkSuQmCC"]= -"http://openlayers.org/";else{var f=b.logo;"string"===typeof f?e[f]="":ha(f)&&(e[f.src]=f.href)}f=b.layers instanceof hi?b.layers:new hi({layers:b.layers});d.layergroup=f;d.target=b.target;d.view=void 0!==b.view?b.view:new Wc;var f=$g,g;void 0!==b.renderer?Array.isArray(b.renderer)?g=b.renderer:"string"===typeof b.renderer&&(g=[b.renderer]):g=nl;var h,k;h=0;for(k=g.length;h<k;++h){var l=g[h];if("canvas"==l){if(Gf){f=lk;break}}else if("dom"==l){f=sk;break}else if("webgl"==l&&zf){f=kl;break}}var m; -void 0!==b.controls?m=Array.isArray(b.controls)?new md(b.controls.slice()):b.controls:m=ff();if(void 0!==b.interactions)g=Array.isArray(b.interactions)?new md(b.interactions.slice()):b.interactions;else{g={};h=new md;k=new kh;(void 0!==g.altShiftDragRotate?g.altShiftDragRotate:1)&&h.push(new Gh);(void 0!==g.doubleClickZoom?g.doubleClickZoom:1)&&h.push(new qh({delta:g.zoomDelta,duration:g.zoomDuration}));(void 0!==g.dragPan?g.dragPan:1)&&h.push(new Bh({kinetic:k}));(void 0!==g.pinchRotate?g.pinchRotate: -1)&&h.push(new $h);(void 0!==g.pinchZoom?g.pinchZoom:1)&&h.push(new di({duration:g.zoomDuration}));if(void 0!==g.keyboard?g.keyboard:1)h.push(new Uh),h.push(new Wh({delta:g.zoomDelta,duration:g.zoomDuration}));(void 0!==g.mouseWheelZoom?g.mouseWheelZoom:1)&&h.push(new Yh({duration:g.zoomDuration}));(void 0!==g.shiftDragZoom?g.shiftDragZoom:1)&&h.push(new Th({duration:g.zoomDuration}));g=h}b=void 0!==b.overlays?Array.isArray(b.overlays)?new md(b.overlays.slice()):b.overlays:new md;return{controls:m, -interactions:g,keyboardEventTarget:c,logos:e,overlays:b,te:f,values:d}}lc(mi);lc(ti);ti.forEach(function(b){mi.forEach(function(c){mc(b,c,ni);mc(c,b,oi)})});function rl(b){U.call(this);this.j=b.id;this.i=void 0!==b.insertFirst?b.insertFirst:!0;this.o=void 0!==b.stopEvent?b.stopEvent:!0;this.b=document.createElement("DIV");this.b.className="ol-overlay-container";this.b.style.position="absolute";this.autoPan=void 0!==b.autoPan?b.autoPan:!1;this.g=void 0!==b.autoPanAnimation?b.autoPanAnimation:{};this.h=void 0!==b.autoPanMargin?b.autoPanMargin:20;this.a={$a:"",hb:"",lb:"",mb:"",visible:!0};this.c=null;R(this,qb("element"),this.md,this);R(this,qb("map"), -this.vd,this);R(this,qb("offset"),this.wd,this);R(this,qb("position"),this.yd,this);R(this,qb("positioning"),this.zd,this);void 0!==b.element&&this.set("element",b.element);this.set("offset",void 0!==b.offset?b.offset:[0,0]);this.set("positioning",void 0!==b.positioning?b.positioning:"top-left");void 0!==b.position&&this.uc(b.position)}M(rl,U);n=rl.prototype;n.Da=function(){return this.j};n.md=function(){fe(this.b);var b=this.get("element");b&&this.b.appendChild(b)}; -n.vd=function(){this.c&&(he(this.b),P(this.c),this.c=null);var b=this.get("map");b&&(this.c=R(b,"postrender",this.render,this),sl(this),b=this.o?b.j:b.o,this.i?ge(b,this.b,0):b.appendChild(this.b))};n.render=function(){sl(this)};n.wd=function(){sl(this)}; -n.yd=function(){sl(this);if(void 0!==this.get("position")&&this.autoPan){var b=this.get("map");if(void 0!==b&&b.Fa()){var c=tl(b.Fa(),b.Ha()),d=this.get("element"),e=d.offsetWidth,f=d.currentStyle||x.getComputedStyle(d),e=e+(parseInt(f.marginLeft,10)+parseInt(f.marginRight,10)),f=d.offsetHeight,g=d.currentStyle||x.getComputedStyle(d),f=f+(parseInt(g.marginTop,10)+parseInt(g.marginBottom,10)),h=tl(d,[e,f]),d=this.h;Mb(c,h)||(e=h[0]-c[0],f=c[2]-h[2],g=h[1]-c[1],h=c[3]-h[3],c=[0,0],0>e?c[0]=e-d:0>f&& -(c[0]=Math.abs(f)+d),0>g?c[1]=g-d:0>h&&(c[1]=Math.abs(h)+d),0===c[0]&&0===c[1])||(d=b.O().ga(),e=Fh(b,d),c=[e[0]+c[0],e[1]+c[1]],this.g&&(this.g.source=d,b.ea(dd(this.g))),b.O().ma(b.pa(c)))}}};n.zd=function(){sl(this)};n.setMap=function(b){this.set("map",b)};n.uc=function(b){this.set("position",b)}; -function tl(b,c){var d=Zd(b),e=new Vd(0,0),f;f=d?Zd(d):document;var g;(g=!Hd||9<=Number(Td))||(Xd(f),g=!0);b!=(g?f.documentElement:f.body)&&(f=me(b),g=Xd(d).a,d=g.scrollingElement?g.scrollingElement:Kd?g.body||g.documentElement:g.documentElement,g=g.parentWindow||g.defaultView,d=Hd&&Rd("10")&&g.pageYOffset!=d.scrollTop?new Vd(d.scrollLeft,d.scrollTop):new Vd(g.pageXOffset||d.scrollLeft,g.pageYOffset||d.scrollTop),e.x=f.left+d.x,e.y=f.top+d.y);return[e.x,e.y,e.x+c[0],e.y+c[1]]} -function ul(b,c){b.a.visible!==c&&(pe(b.b,c),b.a.visible=c)} -function sl(b){var c=b.get("map"),d=b.get("position");if(void 0!==c&&c.b&&void 0!==d){var d=Fh(c,d),e=c.Ha(),c=b.b.style,f=b.get("offset"),g=b.get("positioning"),h=f[0],f=f[1];if("bottom-right"==g||"center-right"==g||"top-right"==g)""!==b.a.hb&&(b.a.hb=c.left=""),h=Math.round(e[0]-d[0]-h)+"px",b.a.lb!=h&&(b.a.lb=c.right=h);else{""!==b.a.lb&&(b.a.lb=c.right="");if("bottom-center"==g||"center-center"==g||"top-center"==g)h-=ne(b.b).width/2;h=Math.round(d[0]+h)+"px";b.a.hb!=h&&(b.a.hb=c.left=h)}if("bottom-left"== -g||"bottom-center"==g||"bottom-right"==g)""!==b.a.mb&&(b.a.mb=c.top=""),d=Math.round(e[1]-d[1]-f)+"px",b.a.$a!=d&&(b.a.$a=c.bottom=d);else{""!==b.a.$a&&(b.a.$a=c.bottom="");if("center-left"==g||"center-center"==g||"center-right"==g)f-=ne(b.b).height/2;d=Math.round(d[1]+f)+"px";b.a.mb!=d&&(b.a.mb=c.top=d)}ul(b,!0)}else ul(b,!1)};function vl(){this.defaultDataProjection=null}function wl(b,c,d){var e;d&&(e={dataProjection:d.dataProjection?d.dataProjection:b.f(Lj(c)),featureProjection:d.featureProjection});var f;e&&(f={featureProjection:e.featureProjection,dataProjection:e.dataProjection?e.dataProjection:b.defaultDataProjection,rightHanded:e.rightHanded},e.decimals&&(f.decimals=e.decimals));return f} -function xl(b,c){var d=c?kc(c.featureProjection):null,e=c?kc(c.dataProjection):null;if(d&&e&&!vc(d,e))if(b instanceof yc)d=b.o(e,d);else{e=wc(e,d);d=[b[0],b[1],b[0],b[3],b[2],b[1],b[2],b[3]];e(d,d,2);var f=[d[0],d[2],d[4],d[6]],g=[d[1],d[3],d[5],d[7]],d=Math.min.apply(null,f),e=Math.min.apply(null,g),f=Math.max.apply(null,f),g=Math.max.apply(null,g),d=Nb(d,e,f,g,void 0)}else d=b;return d};function yl(){this.defaultDataProjection=null}M(yl,vl);function Lj(b){return ha(b)?b:"string"===typeof b?(b=JSON.parse(b))?b:null:null}yl.prototype.U=function(){return"json"};yl.prototype.g=function(b,c){return this.a(Lj(b),wl(this,b,c))};yl.prototype.b=function(b,c){return this.h(Lj(b),wl(this,b,c))};function zl(b,c,d,e,f){var g=NaN,h=NaN,k=(d-c)/e;if(0!==k)if(1==k)g=b[c],h=b[c+1];else if(2==k)g=.5*b[c]+.5*b[c+e],h=.5*b[c+1]+.5*b[c+e+1];else{var h=b[c],k=b[c+1],l=0,g=[0],m;for(m=c+e;m<d;m+=e){var p=b[m],q=b[m+1],l=l+Math.sqrt((p-h)*(p-h)+(q-k)*(q-k));g.push(l);h=p;k=q}d=.5*l;l=0;m=g.length;for(p=!1;l<m;)h=l+(m-l>>1),k=+Ga(g[h],d),0>k?l=h+1:(m=h,p=!k);h=p?l:~l;0>h?(d=(d-g[-h-2])/(g[-h-1]-g[-h-2]),c+=(-h-2)*e,g=b[c],g=g+d*(b[c+e]-g),h=b[c+1],h=h+d*(b[c+e+1]-h)):(g=b[c+h*e],h=b[c+h*e+1])}return f? -(f[0]=g,f[1]=h,f):[g,h]};function Al(b,c){Ac.call(this);this.c=null;this.j=-1;this.X(b,c)}M(Al,Ac);n=Al.prototype;n.clone=function(){var b=new Al(null);V(b,this.g,this.a.slice());b.w();return b};n.oa=function(){return Gc(this.a,0,this.a.length,this.b)};function Wi(b){if(b.j!=b.f){var c;c=zl(b.a,0,b.a.length,b.b,b.c);b.c=c;b.j=b.f}return b.c}n.Ea=function(b){var c=[];c.length=Ic(this.a,0,this.a.length,this.b,b,c,0);b=new Al(null);V(b,"XY",c);b.w();return b};n.U=function(){return"LineString"}; -n.X=function(b,c){b?(Cc(this,c,b,1),this.a||(this.a=[]),this.a.length=Ec(this.a,0,b,this.b)):V(this,"XY",null);this.w()};function Bl(b,c){Ac.call(this);this.c=[];this.X(b,c)}M(Bl,Ac);n=Bl.prototype;n.clone=function(){var b=new Bl(null),c=this.c.slice();V(b,this.g,this.a.slice());b.c=c;b.w();return b};n.oa=function(){return Hc(this.a,0,this.c,this.b)};n.Ta=function(){return this.c};function Xi(b){var c=[],d=b.a,e=0,f=b.c;b=b.b;var g,h;g=0;for(h=f.length;g<h;++g){var k=f[g],e=zl(d,e,k,b);Ja(c,e);e=k}return c} -n.Ea=function(b){var c=[],d=[],e=this.a,f=this.c,g=this.b,h=0,k=0,l,m;l=0;for(m=f.length;l<m;++l){var p=f[l],k=Ic(e,h,p,g,b,c,k);d.push(k);h=p}c.length=k;b=new Bl(null);V(b,"XY",c);b.c=d;b.w();return b};n.U=function(){return"MultiLineString"};n.X=function(b,c){if(b){Cc(this,c,b,2);this.a||(this.a=[]);var d=Fc(this.a,0,b,this.b,this.c);this.a.length=0===d.length?0:d[d.length-1]}else d=this.c,V(this,"XY",null),this.c=d;this.w()};function Cl(b,c){Ac.call(this);this.X(b,c)}M(Cl,Ac);Cl.prototype.clone=function(){var b=new Cl(null);V(b,this.g,this.a.slice());b.w();return b};Cl.prototype.oa=function(){return Gc(this.a,0,this.a.length,this.b)};Cl.prototype.U=function(){return"MultiPoint"};Cl.prototype.X=function(b,c){b?(Cc(this,c,b,1),this.a||(this.a=[]),this.a.length=Ec(this.a,0,b,this.b)):V(this,"XY",null);this.w()};function Dl(b,c){Ac.call(this);this.c=[];this.A=-1;this.D=null;this.G=-1;this.j=null;this.X(b,c)}M(Dl,Ac);n=Dl.prototype;n.clone=function(){for(var b=new Dl(null),c=this.c.length,d=Array(c),e=0;e<c;++e)d[e]=this.c[e].slice();V(b,this.g,this.a.slice());b.c=d;b.w();return b};n.oa=function(b){var c;void 0!==b?(c=Yi(this).slice(),Rc(c,this.c,this.b,b)):c=this.a;b=c;c=this.c;var d=this.b,e=0,f=[],g=0,h,k;h=0;for(k=c.length;h<k;++h){var l=c[h];f[g++]=Hc(b,e,l,d,f[g]);e=l[l.length-1]}f.length=g;return f}; -function Zi(b){if(b.A!=b.f){var c=b.a,d=b.c,e=b.b,f=0,g=[],h,k,l=Ib();h=0;for(k=d.length;h<k;++h){var m=d[h],l=c,p=m[0],q=e,r=Ob(void 0),l=Sb(r,l,f,p,q);g.push((l[0]+l[2])/2,(l[1]+l[3])/2);f=m[m.length-1]}c=Yi(b);d=b.c;e=b.b;h=0;k=[];m=0;for(l=d.length;m<l;++m)f=d[m],k=Nc(c,h,f,e,g,2*m,k),h=f[f.length-1];b.D=k;b.A=b.f}return b.D} -function Yi(b){if(b.G!=b.f){var c=b.a,d;a:{d=b.c;var e,f;e=0;for(f=d.length;e<f;++e)if(!Pc(c,d[e],b.b,void 0)){d=!1;break a}d=!0}d?b.j=c:(b.j=c.slice(),b.j.length=Rc(b.j,b.c,b.b));b.G=b.f}return b.j}n.Ea=function(b){var c=[],d=[],e=this.a,f=this.c,g=this.b;b=Math.sqrt(b);var h=0,k=0,l,m;l=0;for(m=f.length;l<m;++l){var p=f[l],q=[],k=Jc(e,h,p,g,b,c,k,q);d.push(q);h=p[p.length-1]}c.length=k;e=new Dl(null);V(e,"XY",c);e.c=d;e.w();return e};n.U=function(){return"MultiPolygon"}; -n.X=function(b,c){if(b){Cc(this,c,b,3);this.a||(this.a=[]);var d=this.a,e=this.b,f=this.c,g=0,f=f?f:[],h=0,k,l;k=0;for(l=b.length;k<l;++k)g=Fc(d,g,b[k],e,f[h]),f[h++]=g,g=g[g.length-1];f.length=h;0===f.length?this.a.length=0:(d=f[f.length-1],this.a.length=0===d.length?0:d[d.length-1])}else d=this.c,V(this,"XY",null),this.c=d;this.w()};function El(b){b=b?b:{};this.defaultDataProjection=null;this.c=b.geometryName}M(El,yl);function Fl(b){var c="XY";!0===b.hasZ&&!0===b.hasM?c="XYZM":!0===b.hasZ?c="XYZ":!0===b.hasM&&(c="XYM");return c} -var Gl={Point:function(b){return void 0!==b.m&&void 0!==b.z?new Lc([b.x,b.y,b.z,b.m],"XYZM"):void 0!==b.z?new Lc([b.x,b.y,b.z],"XYZ"):void 0!==b.m?new Lc([b.x,b.y,b.m],"XYM"):new Lc([b.x,b.y])},LineString:function(b){return new Al(b.paths[0],Fl(b))},Polygon:function(b){return new Sc(b.rings,Fl(b))},MultiPoint:function(b){return new Cl(b.points,Fl(b))},MultiLineString:function(b){return new Bl(b.paths,Fl(b))},MultiPolygon:function(b){return new Dl(b.rings,Fl(b))}}; -El.prototype.a=function(b,c){var d;if(d=b.geometry){var e;if(ea(d.x)&&ea(d.y))e="Point";else if(d.points)e="MultiPoint";else if(d.paths)e=1===d.paths.length?"LineString":"MultiLineString";else if(d.rings){var f=d.rings,g=Fl(d),h=[];e=[];var k,l;k=0;for(l=f.length;k<l;++k){var m=Ia(f[k]);Oc(m,0,m.length,g.length)?h.push([f[k]]):e.push(f[k])}for(;e.length;){f=e.shift();g=!1;for(k=h.length-1;0<=k;k--)if(Mb((new Kc(h[k][0])).C(),(new Kc(f)).C())){h[k].push(f);g=!0;break}g||h.push([f.reverse()])}d=Va({}, -d);1===h.length?(e="Polygon",d.rings=h[0]):(e="MultiPolygon",d.rings=h)}d=xl((0,Gl[e])(d),c)}else d=null;h=new Gj;this.c&&Ij(h,this.c);Hj(h,d);c&&c.Jb&&b.attributes[c.Jb]&&(h.g=b.attributes[c.Jb],h.w());b.attributes&&h.l(b.attributes);return h};El.prototype.h=function(b,c){var d=c?c:{};if(b.features){var e=[],f=b.features,g,h;d.Jb=b.objectIdFieldName;g=0;for(h=f.length;g<h;++g)e.push(this.a(f[g],d));return e}return[this.a(b,d)]}; -El.prototype.f=function(b){return b.spatialReference&&b.spatialReference.wkid?kc("EPSG:"+b.spatialReference.wkid):null};function Hl(b){yc.call(this);this.a=b?b:null;Il(this)}M(Hl,yc);function Jl(b){var c,d;if(b.a)for(c=0,d=b.a.length;c<d;++c)fb(b.a[c],"change",b.w,b)}function Il(b){var c,d;if(b.a)for(c=0,d=b.a.length;c<d;++c)R(b.a[c],"change",b.w,b)}n=Hl.prototype;n.clone=function(){var b=new Hl(null),c=this.a,d=[],e,f;e=0;for(f=c.length;e<f;++e)d.push(c[e].clone());Jl(b);b.a=d;Il(b);b.w();return b};n.ab=function(b){Ob(b);for(var c=this.a,d=0,e=c.length;d<e;++d)Rb(b,c[d].C());return b}; -n.Hb=function(b){this.s!=this.f&&(Wa(this.h),this.i=0,this.s=this.f);if(0>b||0!==this.i&&b<this.i)return this;var c=b.toString();if(this.h.hasOwnProperty(c))return this.h[c];var d=[],e=this.a,f=!1,g,h;g=0;for(h=e.length;g<h;++g){var k=e[g],l=k.Hb(b);d.push(l);l!==k&&(f=!0)}if(f)return b=new Hl(null),Jl(b),b.a=d,Il(b),b.w(),this.h[c]=b;this.i=b;return this};n.U=function(){return"GeometryCollection"};n.rotate=function(b,c){for(var d=this.a,e=0,f=d.length;e<f;++e)d[e].rotate(b,c);this.w()}; -n.wb=function(b){var c=this.a,d,e;d=0;for(e=c.length;d<e;++d)c[d].wb(b);this.w()};n.K=function(){Jl(this);Hl.Y.K.call(this)};function Kl(b){b=b?b:{};this.defaultDataProjection=null;this.defaultDataProjection=kc(b.defaultDataProjection?b.defaultDataProjection:"EPSG:4326");this.c=b.geometryName}M(Kl,yl);function Ll(b,c){return b?xl((0,Ml[b.type])(b),c):null} -var Ml={Point:function(b){return new Lc(b.coordinates)},LineString:function(b){return new Al(b.coordinates)},Polygon:function(b){return new Sc(b.coordinates)},MultiPoint:function(b){return new Cl(b.coordinates)},MultiLineString:function(b){return new Bl(b.coordinates)},MultiPolygon:function(b){return new Dl(b.coordinates)},GeometryCollection:function(b,c){var d=b.geometries.map(function(b){return Ll(b,c)});return new Hl(d)}}; -Kl.prototype.a=function(b,c){var d=Ll(b.geometry,c),e=new Gj;this.c&&Ij(e,this.c);Hj(e,d);void 0!==b.id&&(e.g=b.id,e.w());b.properties&&e.l(b.properties);return e};Kl.prototype.h=function(b,c){if("Feature"==b.type)return[this.a(b,c)];if("FeatureCollection"==b.type){var d=[],e=b.features,f,g;f=0;for(g=e.length;f<g;++f)d.push(this.a(e[f],c));return d}return[]};Kl.prototype.f=function(b){return(b=b.crs)?"name"==b.type?kc(b.properties.name):"EPSG"==b.type?kc("EPSG:"+b.properties.code):null:this.defaultDataProjection};function Nl(b,c,d){if("array"==ba(c))for(var e=0;e<c.length;e++)Nl(b,String(c[e]),d);else null!=c&&d.push("&",b,""===c?"":"=",encodeURIComponent(String(c)))};function Ol(b,c,d){Ac.call(this);Pl(this,b,c?c:0,d)}M(Ol,Ac);Ol.prototype.clone=function(){var b=new Ol(null);V(b,this.g,this.a.slice());b.w();return b};Ol.prototype.ab=function(b){var c=this.a,d=c[this.b]-c[0];return Nb(c[0]-d,c[1]-d,c[0]+d,c[1]+d,b)};Ol.prototype.U=function(){return"Circle"};function Pl(b,c,d,e){if(c){Cc(b,e,c,0);b.a||(b.a=[]);e=b.a;c=Dc(e,c);e[c++]=e[0]+d;var f;d=1;for(f=b.b;d<f;++d)e[c++]=e[d];e.length=c}else V(b,"XY",null);b.w()};function Ql(b,c,d,e,f){Ce.call(this,b,c);this.g=d;this.b=new Image;null!==e&&(this.b.crossOrigin=e);this.f={};this.c=null;this.h=f}M(Ql,Ce);n=Ql.prototype;n.K=function(){1==this.state&&Rl(this);this.a&&ib(this.a);this.state=5;De(this);Ql.Y.K.call(this)};n.S=function(b){if(void 0!==b){var c=I(b);if(c in this.f)return this.f[c];b=Za(this.f)?this.b:this.b.cloneNode(!1);return this.f[c]=b}return this.b};n.getKey=function(){return this.g};n.Yd=function(){this.state=3;Rl(this);De(this)}; -n.Zd=function(){this.state=this.b.naturalWidth&&this.b.naturalHeight?2:4;Rl(this);De(this)};n.load=function(){0==this.state&&(this.state=1,De(this),this.c=[R(this.b,"error",this.Yd,this,!0),R(this.b,"load",this.Zd,this,!0)],this.h(this,this.g))};function Rl(b){b.c.forEach(P);b.c=null};function Sl(b,c){S.call(this,b);this.feature=c}M(Sl,S); -function Tl(b){yh.call(this,{handleDownEvent:Ul,handleEvent:Vl,handleUpEvent:Wl});this.R=null;this.o=!1;this.wa=b.source?b.source:null;this.la=b.features?b.features:null;this.Zc=b.snapTolerance?b.snapTolerance:12;this.D=b.type;this.b=Xl(this.D);this.ka=b.minPoints?b.minPoints:this.b===Yl?3:2;this.da=b.maxPoints?b.maxPoints:Infinity;var c=b.geometryFunction;if(!c)if("Circle"===this.D)c=function(b,c){var d=c?c:new Ol([NaN,NaN]),h=b[0],k=b[1],l=h[0]-k[0],h=h[1]-k[1];Pl(d,b[0],Math.sqrt(l*l+h*h));return d}; -else{var d,c=this.b;c===Zl?d=Lc:c===am?d=Al:c===Yl&&(d=Sc);c=function(b,c){var g=c;g?g.X(b):g=new d(b);return g}}this.u=c;this.A=this.i=this.a=this.j=this.g=this.h=null;this.dd=b.clickTolerance?b.clickTolerance*b.clickTolerance:36;this.Z=new Y({source:new Uj({useSpatialIndex:!1,wrapX:b.wrapX?b.wrapX:!1}),style:b.style?b.style:bm()});this.va=b.geometryName;this.sb=b.condition?b.condition:uh;this.aa=b.freehandCondition?b.freehandCondition:vh;R(this,qb("active"),this.Ca,this)}M(Tl,yh); -function bm(){var b=Oi();return function(c){return b[c.M().U()]}}Tl.prototype.setMap=function(b){Tl.Y.setMap.call(this,b);this.Ca()};function Vl(b){this.b!==am&&this.b!==Yl||!this.aa(b)||(this.o=!0);var c=!this.o;this.o&&b.type===Bg?(cm(this,b),c=!1):b.type===Ag?c=dm(this,b):b.type===ug&&(c=!1);return zh.call(this,b)&&c}function Ul(b){return this.sb(b)?(this.R=b.pixel,!0):this.o?(this.R=b.pixel,this.h||em(this,b),!0):!1} -function Wl(b){this.o=!1;var c=this.R,d=b.pixel,e=c[0]-d[0],c=c[1]-d[1],d=!0;e*e+c*c<=this.dd&&(dm(this,b),this.h?this.b===fm?gm(this):hm(this,b)?gm(this):cm(this,b):(em(this,b),this.b===Zl&&gm(this)),d=!1);return d} -function dm(b,c){if(b.h){var d=c.coordinate,e=b.g.M(),f;b.b===Zl?f=b.a:b.b===Yl?(f=b.a[0],f=f[f.length-1],hm(b,c)&&(d=b.h.slice())):(f=b.a,f=f[f.length-1]);f[0]=d[0];f[1]=d[1];b.u(b.a,e);b.j&&b.j.M().X(d);e instanceof Sc&&b.b!==Yl?(b.i||(b.i=new Gj(new Al(null))),0>=e.c.length?e=null:(d=new Kc(null),V(d,e.g,e.a.slice(0,e.c[0])),d.w(),e=d),d=b.i.M(),V(d,e.g,e.a),d.w()):b.A&&(d=b.i.M(),d.X(b.A));im(b)}else e=c.coordinate.slice(),b.j?b.j.M().X(e):(b.j=new Gj(new Lc(e)),im(b));return!0} -function hm(b,c){var d=!1;if(b.g){var e=!1,f=[b.h];b.b===am?e=b.a.length>b.ka:b.b===Yl&&(e=b.a[0].length>b.ka,f=[b.a[0][0],b.a[0][b.a[0].length-2]]);if(e)for(var e=c.map,g=0,h=f.length;g<h;g++){var k=f[g],l=Fh(e,k),m=c.pixel,d=m[0]-l[0],l=m[1]-l[1],m=b.o&&b.aa(c)?1:b.Zc;if(d=Math.sqrt(d*d+l*l)<=m){b.h=k;break}}}return d} -function em(b,c){var d=c.coordinate;b.h=d;b.b===Zl?b.a=d.slice():b.b===Yl?(b.a=[[d.slice(),d.slice()]],b.A=b.a[0]):(b.a=[d.slice(),d.slice()],b.b===fm&&(b.A=b.a));b.A&&(b.i=new Gj(new Al(b.A)));d=b.u(b.a);b.g=new Gj;b.va&&Ij(b.g,b.va);Hj(b.g,d);im(b);T(b,new Sl("drawstart",b.g))} -function cm(b,c){var d=c.coordinate,e=b.g.M(),f,g;if(b.b===am)b.h=d.slice(),g=b.a,g.push(d.slice()),f=g.length>b.da,b.u(g,e);else if(b.b===Yl){g=b.a[0];g.push(d.slice());if(f=g.length>b.da)b.h=g[0];b.u(b.a,e)}im(b);f&&gm(b)} -function gm(b){var c=jm(b),d=b.a,e=c.M();b.b===am?(d.pop(),b.u(d,e)):b.b===Yl&&(d[0].pop(),d[0].push(d[0][0]),b.u(d,e));"MultiPoint"===b.D?Hj(c,new Cl([d])):"MultiLineString"===b.D?Hj(c,new Bl([d])):"MultiPolygon"===b.D&&Hj(c,new Dl([d]));T(b,new Sl("drawend",c));b.la&&b.la.push(c);b.wa&&b.wa.ub(c)}function jm(b){b.h=null;var c=b.g;c&&(b.g=null,b.j=null,b.i=null,b.Z.W().clear(!0));return c}Tl.prototype.v=cc; -function im(b){var c=[];b.g&&c.push(b.g);b.i&&c.push(b.i);b.j&&c.push(b.j);b=b.Z.W();b.clear(!0);b.vb(c)}Tl.prototype.Ca=function(){var b=this.T,c=this.get("active");b&&c||jm(this);this.Z.setMap(c?b:null)};function Xl(b){var c;"Point"===b||"MultiPoint"===b?c=Zl:"LineString"===b||"MultiLineString"===b?c=am:"Polygon"===b||"MultiPolygon"===b?c=Yl:"Circle"===b&&(c=fm);return c}var Zl="Point",am="LineString",Yl="Polygon",fm="Circle";function km(b,c,d,e,f,g,h,k,l,m,p){Ce.call(this,f,0);this.u=void 0!==p?p:!1;this.s=h;this.o=k;this.c=null;this.f={};this.g=c;this.l=e;this.i=g?g:f;this.b=[];this.Ja=null;this.h=0;g=Ke(e,this.i);k=this.l.C();f=this.g.C();g=k?Zb(g,k):g;if(0===Tb(g))this.state=4;else if((k=b.C())&&(f?f=Zb(f,k):f=k),k=e.J(this.i[0]),p=Xb(g),e=wc(d,b)(p,void 0,p.length),k=d.getPointResolution(k,p),p=oc(d),void 0!==p&&(k*=p),p=oc(b),void 0!==p&&(k/=p),e=b.getPointResolution(k,e)/k,isFinite(e)&&0<e&&(k/=e),e=k,!isFinite(e)|| -0>=e)this.state=4;else if(this.j=new Dj(b,d,g,f,e*(void 0!==m?m:.5)),0===this.j.c.length)this.state=4;else if(this.h=Re(c,e),d=Fj(this.j),f&&(b.a?(d[1]=Ba(d[1],f[1],f[3]),d[3]=Ba(d[3],f[1],f[3])):d=Zb(d,f)),Tb(d))if(b=Le(c,d,this.h),100>(b.b-b.a+1)*(b.c-b.f+1)){for(c=b.a;c<=b.b;c++)for(d=b.f;d<=b.c;d++)(m=l(this.h,c,d,h))&&this.b.push(m);0===this.b.length&&(this.state=4)}else this.state=3;else this.state=4}M(km,Ce);km.prototype.K=function(){1==this.state&&(this.Ja.forEach(P),this.Ja=null);km.Y.K.call(this)}; -km.prototype.S=function(b){if(void 0!==b){var c=I(b);if(c in this.f)return this.f[c];b=Za(this.f)?this.c:this.c.cloneNode(!1);return this.f[c]=b}return this.c}; -km.prototype.Oc=function(){var b=[];this.b.forEach(function(c){c&&2==c.N()&&b.push({extent:Ke(this.g,c.L),image:c.S()})},this);this.b.length=0;if(0===b.length)this.state=3;else{var c=this.i[0],d=Qe(this.l,c),e=ea(d)?d:d[0],d=ea(d)?d:d[1],c=this.l.J(c),f=this.g.J(this.h),g=Ke(this.l,this.i);this.c=Cj(e,d,this.s,f,this.g.C(),c,g,this.j,b,this.o,this.u);this.state=2}De(this)}; -km.prototype.load=function(){if(0==this.state){this.state=1;De(this);var b=0;this.Ja=[];this.b.forEach(function(c){var d=c.N();if(0==d||1==d){b++;var e;e=R(c,"change",function(){var d=c.N();if(2==d||3==d||4==d)P(e),b--,0===b&&(this.Ja.forEach(P),this.Ja=null,this.Oc())},this);this.Ja.push(e)}},this);this.b.forEach(function(b){0==b.N()&&b.load()});0===b&&x.setTimeout(this.Oc.bind(this),0)}};function lm(b){jk.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,extent:b.extent,logo:b.logo,opaque:b.opaque,projection:b.projection,state:b.state,tileGrid:b.tileGrid,tileLoadFunction:b.tileLoadFunction?b.tileLoadFunction:mm,tilePixelRatio:b.tilePixelRatio,tileUrlFunction:b.tileUrlFunction,url:b.url,urls:b.urls,wrapX:b.wrapX});this.crossOrigin=void 0!==b.crossOrigin?b.crossOrigin:null;this.tileClass=void 0!==b.tileClass?b.tileClass:Ql;this.b={};this.o={};this.T=b.reprojectionErrorThreshold} -M(lm,jk);n=lm.prototype;n.Gc=function(){if(Ae(this.a))return!0;for(var b in this.b)if(Ae(this.b[b]))return!0;return!1};n.Hc=function(b,c){var d=this.Ua(b);Be(this.a,this.a==d?c:{});for(var e in this.b){var f=this.b[e];Be(f,f==d?c:{})}};n.bb=function(){return 0};n.Fb=function(b){return this.c&&b&&!vc(this.c,b)?!1:lm.Y.Fb.call(this,b)};n.ia=function(b){var c=this.c;return!this.tileGrid||c&&!vc(c,b)?(c=I(b).toString(),c in this.o||(this.o[c]=Te(b)),this.o[c]):this.tileGrid}; -n.Ua=function(b){var c=this.c;if(!c||vc(c,b))return this.a;b=I(b).toString();b in this.b||(this.b[b]=new ze);return this.b[b]};function nm(b,c,d,e,f,g){c=[c,d,e];f=(d=Ze(b,c,g))?b.tileUrlFunction(d,f,g):void 0;f=new b.tileClass(c,void 0!==f?0:4,void 0!==f?f:"",b.crossOrigin,b.tileLoadFunction);f.key="";R(f,"change",b.D,b);return f} -function Ug(b,c,d,e,f,g){if(b.c&&g&&!vc(b.c,g)){var h=b.Ua(g);d=[c,d,e];c=b.cb.apply(b,d);if(xe(h,c))return h.get(c);var k=b.c;e=b.ia(k);var l=b.ia(g),m=Ze(b,d,g);b=new km(k,e,g,l,d,m,b.eb(f),0,function(b,c,d,e){return om(this,b,c,d,e,k)}.bind(b),b.T,!1);h.set(c,b);return b}return om(b,c,d,e,f,g)} -function om(b,c,d,e,f,g){var h=null,k=b.cb(c,d,e);if(xe(b.a,k)){if(h=b.a.get(k),""!=h.key){var l=h;h.a&&""==h.a.key?(h=h.a,2==l.N()&&(h.a=l)):(h=nm(b,c,d,e,f,g),2==l.N()?h.a=l:l.a&&2==l.a.N()&&(h.a=l.a,l.a=null));h.a&&(h.a.a=null);b.a.replace(k,h)}}else h=nm(b,c,d,e,f,g),b.a.set(k,h);return h}function mm(b,c){b.S().src=c};function pm(b){var c=void 0!==b.projection?b.projection:"EPSG:3857",d;if(void 0!==b.tileGrid)d=b.tileGrid;else{d={extent:Ue(c),maxZoom:b.maxZoom,minZoom:b.minZoom,tileSize:b.tileSize};var e={};Va(e,void 0!==d?d:{});void 0===e.extent&&(e.extent=kc("EPSG:3857").C());e.resolutions=Ve(e.extent,e.maxZoom,e.tileSize);delete e.maxZoom;d=new Ge(e)}lm.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,crossOrigin:b.crossOrigin,logo:b.logo,opaque:b.opaque,projection:c,reprojectionErrorThreshold:b.reprojectionErrorThreshold, -tileGrid:d,tileLoadFunction:b.tileLoadFunction,tilePixelRatio:b.tilePixelRatio,tileUrlFunction:b.tileUrlFunction,url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0})}M(pm,lm);function qm(b){b=b||{};var c;void 0!==b.attributions?c=b.attributions:c=[rm];pm.call(this,{attributions:c,cacheSize:b.cacheSize,crossOrigin:void 0!==b.crossOrigin?b.crossOrigin:"anonymous",opaque:void 0!==b.opaque?b.opaque:!0,maxZoom:void 0!==b.maxZoom?b.maxZoom:19,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",wrapX:b.wrapX})}M(qm,pm);var rm=new kd({html:'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'});function sm(b){b=b||{};var c=tm[b.layer];this.u=b.layer;pm.call(this,{attributions:c.attributions,cacheSize:b.cacheSize,crossOrigin:"anonymous",logo:"https://developer.mapquest.com/content/osm/mq_logo.png",maxZoom:c.maxZoom,reprojectionErrorThreshold:b.reprojectionErrorThreshold,opaque:c.opaque,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://otile{1-4}-s.mqcdn.com/tiles/1.0.0/"+this.u+"/{z}/{x}/{y}.jpg"})}M(sm,pm); -var um=new kd({html:'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a>'}),tm={osm:{maxZoom:19,opaque:!0,attributions:[um,rm]},sat:{maxZoom:18,opaque:!0,attributions:[um,new kd({html:"Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency"})]},hyb:{maxZoom:18,opaque:!1,attributions:[um,rm]}};function vm(b){b=b||{};lm.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,crossOrigin:b.crossOrigin,logo:b.logo,projection:b.projection,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileGrid:b.tileGrid,tileLoadFunction:b.tileLoadFunction,url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0});this.R=b.params||{};this.u=Ib()}M(vm,lm);vm.prototype.eb=function(b){return b}; -vm.prototype.g=function(b,c,d){var e=this.tileGrid;e||(e=this.ia(d));if(!(e.Gb().length<=b[0])){var f=Ke(e,b,this.u),g=sb(Qe(e,b[0]),this.h);1!=c&&(g=rb(g,c,this.h));e={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Va(e,this.R);var h;var k=this.urls;if(k){d=d.na.split(":").pop();e.SIZE=g[0]+","+g[1];e.BBOX=f.join(",");e.BBOXSR=d;e.IMAGESR=d;e.DPI=Math.round(e.DPI?e.DPI*c:90*c);b=[(1==k.length?k[0]:k[Da((b[1]<<b[0])+b[2],k.length)]).replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/, -"ImageServer/exportImage")];for(h in e)Nl(h,e[h],b);b[1]&&(h=b[0],c=h.indexOf("#"),0<=c&&(b.push(h.substr(c)),b[0]=h=h.substr(0,c)),c=h.indexOf("?"),0>c?b[1]="?":c==h.length-1&&(b[1]=void 0));h=b.join("")}else h=void 0;return h}};function wm(b){this.j=this.c=this.g=null;this.i=void 0!==b.fill?b.fill:null;this.I=[0,0];this.a=b.points;this.f=void 0!==b.radius?b.radius:b.radius1;this.h=void 0!==b.radius2?b.radius2:this.f;this.l=void 0!==b.angle?b.angle:0;this.b=void 0!==b.stroke?b.stroke:null;this.A=this.D=this.H=null;var c=b.atlasManager,d="",e="",f=0,g=null,h,k=0;this.b&&(h=wd(this.b.b),k=this.b.f,void 0===k&&(k=1),g=this.b.a,Ff||(g=null),e=this.b.g,void 0===e&&(e="round"),d=this.b.c,void 0===d&&(d="round"),f=this.b.h,void 0=== -f&&(f=10));var l=2*(this.f+k)+1,d={strokeStyle:h,Za:k,size:l,lineCap:d,lineDash:g,lineJoin:e,miterLimit:f};if(void 0===c){this.c=document.createElement("CANVAS");this.c.height=l;this.c.width=l;var c=l=this.c.width,m=this.c.getContext("2d");this.Lc(d,m,0,0);this.i?this.j=this.c:(m=this.j=document.createElement("CANVAS"),m.height=d.size,m.width=d.size,m=m.getContext("2d"),this.Kc(d,m,0,0))}else l=Math.round(l),(e=!this.i)&&(m=this.Kc.bind(this,d)),f=this.b?Gi(this.b):"-",g=this.i?Ai(this.i):"-",this.g&& -f==this.g[1]&&g==this.g[2]&&this.f==this.g[3]&&this.h==this.g[4]&&this.l==this.g[5]&&this.a==this.g[6]||(this.g=["r"+f+g+(void 0!==this.f?this.f.toString():"-")+(void 0!==this.h?this.h.toString():"-")+(void 0!==this.l?this.l.toString():"-")+(void 0!==this.a?this.a.toString():"-"),f,g,this.f,this.h,this.l,this.a]),m=c.add(this.g[0],l,l,this.Lc.bind(this,d),m),this.c=m.image,this.I=[m.offsetX,m.offsetY],c=m.image.width,this.j=e?m.Id:this.c;this.H=[l/2,l/2];this.D=[l,l];this.A=[c,c];Vg.call(this,{opacity:1, -rotateWithView:void 0!==b.rotateWithView?b.rotateWithView:!1,rotation:void 0!==b.rotation?b.rotation:0,scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0})}M(wm,Vg);n=wm.prototype;n.Sa=function(){return this.H};n.jb=function(){return this.j};n.S=function(){return this.c};n.Db=function(){return this.A};n.Ya=function(){return 2};n.fa=function(){return this.I};n.ya=function(){return this.D};n.Mb=N;n.load=N;n.Ub=N; -n.Lc=function(b,c,d,e){var f;c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();this.h!==this.f&&(this.a*=2);for(d=0;d<=this.a;d++)e=2*d*Math.PI/this.a-Math.PI/2+this.l,f=0===d%2?this.f:this.h,c.lineTo(b.size/2+f*Math.cos(e),b.size/2+f*Math.sin(e));this.i&&(c.fillStyle=zd(this.i.a),c.fill());this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.lineCap=b.lineCap,c.lineJoin=b.lineJoin,c.miterLimit=b.miterLimit,c.stroke());c.closePath()}; -n.Kc=function(b,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();this.h!==this.f&&(this.a*=2);var f;for(d=0;d<=this.a;d++)f=2*d*Math.PI/this.a-Math.PI/2+this.l,e=0===d%2?this.f:this.h,c.lineTo(b.size/2+e*Math.cos(f),b.size/2+e*Math.sin(f));c.fillStyle=vi;c.fill();this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.stroke());c.closePath()};E("ol.format.GeoJSON",Kl,OPENLAYERS);Kl.prototype.readFeatures=Kl.prototype.b;Kl.prototype.readFeature=Kl.prototype.g;E("ol.format.EsriJSON",El,OPENLAYERS);El.prototype.readFeatures=El.prototype.b;El.prototype.readFeature=El.prototype.g;E("ol.style.Style",Ii,OPENLAYERS);E("ol.style.Circle",Hi,OPENLAYERS);E("ol.style.RegularShape",wm,OPENLAYERS);E("ol.style.Fill",zi,OPENLAYERS);E("ol.style.Stroke",Fi,OPENLAYERS);E("ol.style.Icon",Wg,OPENLAYERS); -E("ol.style.Text",function(b){b=b||{};this.a=b.font;this.g=b.rotation;this.h=b.scale;this.i=b.text;this.j=b.textAlign;this.B=b.textBaseline;this.c=void 0!==b.fill?b.fill:new zi({color:"#333"});this.l=void 0!==b.stroke?b.stroke:null;this.b=void 0!==b.offsetX?b.offsetX:0;this.f=void 0!==b.offsetY?b.offsetY:0},OPENLAYERS);E("ol.View",Wc,OPENLAYERS);Wc.prototype.on=Wc.prototype.V;Wc.prototype.getZoom=Wc.prototype.kd;Wc.prototype.setZoom=Wc.prototype.ue;Wc.prototype.getCenter=Wc.prototype.ga; -Wc.prototype.setCenter=Wc.prototype.ma;Wc.prototype.calculateExtent=Wc.prototype.dc;Wc.prototype.getProjection=Wc.prototype.ae;Wc.prototype.fit=Wc.prototype.fd;E("ol.control.defaults",ff,OPENLAYERS);E("ol.layer.Tile",X,OPENLAYERS);X.prototype.getVisible=X.prototype.Va;X.prototype.setVisible=X.prototype.wc;X.prototype.getZIndex=X.prototype.Pb;X.prototype.setZIndex=X.prototype.xc;X.prototype.getOpacity=X.prototype.Ob;X.prototype.setOpacity=X.prototype.vc;X.prototype.getSource=X.prototype.W; -X.prototype.setSource=X.prototype.Sb;X.prototype.on=X.prototype.V;E("ol.layer.Vector",Y,OPENLAYERS);Y.prototype.getVisible=Y.prototype.Va;Y.prototype.setVisible=Y.prototype.wc;Y.prototype.getSource=Y.prototype.W;Y.prototype.setStyle=Y.prototype.s;Y.prototype.getZIndex=Y.prototype.Pb;Y.prototype.setZIndex=Y.prototype.xc;Y.prototype.getOpacity=Y.prototype.Ob;Y.prototype.setOpacity=Y.prototype.vc;Y.prototype.getSource=Y.prototype.W;Y.prototype.setSource=Y.prototype.Sb;Y.prototype.on=Y.prototype.V; -E("ol.source.OSM",qm,OPENLAYERS);qm.prototype.refresh=qm.prototype.ra;E("ol.source.MapQuest",sm,OPENLAYERS);sm.prototype.refresh=sm.prototype.ra;E("ol.source.XYZ",pm,OPENLAYERS);pm.prototype.refresh=pm.prototype.ra;pm.prototype.setUrl=pm.prototype.s;pm.prototype.refresh=pm.prototype.ra;E("ol.Map",Z,OPENLAYERS);Z.prototype.on=Z.prototype.V;Z.prototype.getTarget=Z.prototype.Nb;Z.prototype.getTargetElement=Z.prototype.Fa;Z.prototype.getView=Z.prototype.O;Z.prototype.addOverlay=Z.prototype.cd; -Z.prototype.addLayer=Z.prototype.bd;Z.prototype.removeLayer=Z.prototype.pe;Z.prototype.getEventPixel=Z.prototype.nc;Z.prototype.hasFeatureAtPixel=Z.prototype.Hd;Z.prototype.getSize=Z.prototype.Ha;Z.prototype.updateSize=Z.prototype.nb;Z.prototype.forEachFeatureAtPixel=Z.prototype.hd;Z.prototype.addInteraction=Z.prototype.ad;Z.prototype.removeInteraction=Z.prototype.oe;Z.prototype.beforeRender=Z.prototype.ea;Z.prototype.addControl=Z.prototype.$c;Z.prototype.once=Z.prototype.Rc; -Z.prototype.renderSync=Z.prototype.se;E("ol.source.Vector",Uj,OPENLAYERS);Uj.prototype.getFeatures=Uj.prototype.ee;Uj.prototype.getExtent=Uj.prototype.C;Uj.prototype.refresh=Uj.prototype.ra;Uj.prototype.addFeatures=Uj.prototype.vb;Uj.prototype.addFeature=Uj.prototype.ub;Uj.prototype.clear=Uj.prototype.clear;Uj.prototype.forEachFeature=Uj.prototype.gd;Uj.prototype.refresh=Uj.prototype.ra;E("ol.source.TileArcGISRest",vm,OPENLAYERS);vm.prototype.refresh=vm.prototype.ra;E("ol.Overlay",rl,OPENLAYERS); -rl.prototype.setPosition=rl.prototype.uc;E("ol.Feature",Gj,OPENLAYERS);Gj.prototype.getProperties=Gj.prototype.ua;Gj.prototype.setProperties=Gj.prototype.l;Gj.prototype.getGeometry=Gj.prototype.M;E("ol.geom.Point",Lc,OPENLAYERS);Lc.prototype.transform=Lc.prototype.o;Lc.prototype.getCoordinates=Lc.prototype.oa;Lc.prototype.getExtent=Lc.prototype.C;E("ol.geom.Polygon",Sc,OPENLAYERS);Sc.prototype.getCoordinates=Sc.prototype.oa;Sc.prototype.getExtent=Sc.prototype.C;Sc.prototype.transform=Sc.prototype.o; -E("ol.geom.LineString",Al,OPENLAYERS);Al.prototype.getCoordinates=Al.prototype.oa;Al.prototype.getExtent=Al.prototype.C;Al.prototype.transform=Al.prototype.o;E("ol.proj.Projection",hc,OPENLAYERS);hc.prototype.getCode=hc.prototype.l;E("ol.interaction.Draw",Tl,OPENLAYERS);Tl.prototype.on=Tl.prototype.V;E("ol.animation.pan",dd,OPENLAYERS);E("ol.control.FullScreen",lf,OPENLAYERS); - return OPENLAYERS.ol; -})); - diff --git a/_lib/ol/ol.js b/_lib/ol/ol.js deleted file mode 100644 index 5230dce847e9ba600116dcd8b1f50e6654bbd52d..0000000000000000000000000000000000000000 --- a/_lib/ol/ol.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var ol = require('./ol-build'); - -exports.default = ol; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/SortedFeatures.js b/_lib/olHelpers/SortedFeatures.js deleted file mode 100644 index 0aee16c833d3bee1a64462d5b9f3db2cc1cce80c..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/SortedFeatures.js +++ /dev/null @@ -1,138 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 12/23/2015. - */ - - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('olHelpers'); - -/** - * take an array of features and sort by a given property name - */ - -var SortedFeatures = function () { - - /** - * - * @param {Array<ol.Feature>} features array of ol features - * @param {string} propertyName - the property name to use for lookup - */ - - function SortedFeatures(features, propertyName) { - var _this2 = this; - - _classCallCheck(this, SortedFeatures); - - this.sortedFeatures = features; - this.propertyName = propertyName; - - if (this.sortedFeatures.length > 0) { - (function () { - _this2._propertyType = _typeof(_this2.sortedFeatures[0].getProperties()[_this2.propertyName]); - - var _this = _this2; - _this2.sortedFeatures.sort(function (a, b) { - if (_this._propertyType == 'number') { - return a['getProperties']()[_this.propertyName] - b['getProperties']()[_this.propertyName]; - } else if (_this._propertyType == 'string') { - return a['getProperties']()[_this.propertyName] > b['getProperties']()[_this.propertyName]; - } - }); - })(); - } - } - - /** - * recursive search to find the value - * @param {number|string} propertyValue - the property value to search for - * @param {boolean} [exactMatch=false] if only an exact match should be returned - * @param {Array} [sortedFeatures=this.sortedFeatures] - the candidate features - * @returns {ol.Feature|undefined} the feature matching the lookup - */ - - - _createClass(SortedFeatures, [{ - key: 'getFeature', - value: function getFeature(propertyValue, exactMatch, sortedFeatures) { - if (typeof sortedFeatures == 'undefined') { - sortedFeatures = this.sortedFeatures; - } - - if (typeof exactMatch !== 'boolean') { - exactMatch = false; - } - - if (sortedFeatures.length == 0) { - return undefined; - } - - if (sortedFeatures.length == 1) { - if (exactMatch) { - if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue) { - return sortedFeatures[0]; - } else { - return undefined; - } - } else { - return sortedFeatures[0]; - } - } - - var lowProp = sortedFeatures[0].getProperties()[this.propertyName]; - var highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; - - if (exactMatch) { - if (lowProp == propertyValue) { - return sortedFeatures[0]; - } else if (propertyValue < lowProp) { - return undefined; - } else if (highProp == propertyValue) { - return sortedFeatures[sortedFeatures.length - 1]; - } else if (propertyValue > highProp) { - return undefined; - } - } else { - if (propertyValue <= lowProp) { - return sortedFeatures[0]; - } else if (propertyValue >= highProp) { - return sortedFeatures[sortedFeatures.length - 1]; - } - } - - var midIndex = Math.floor(sortedFeatures.length / 2); - var midFeature = sortedFeatures[midIndex]; - var midProperty = midFeature.getProperties()[this.propertyName]; - - if (midProperty === propertyValue) { - return midFeature; - } - - if (propertyValue < midProperty) { - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); - } else { - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); - } - } - }]); - - return SortedFeatures; -}(); - -nm.SortedFeatures = SortedFeatures; -exports.default = SortedFeatures; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/esriToOlStyle.js b/_lib/olHelpers/esriToOlStyle.js deleted file mode 100644 index 57202b649c0866d9951d998a001babea32db39d6..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/esriToOlStyle.js +++ /dev/null @@ -1,478 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.makeFeatureServiceLegendAndSymbol = makeFeatureServiceLegendAndSymbol; -exports.makeMapServiceLegend = makeMapServiceLegend; - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** - * Created by gavorhes on 1/4/2016. - */ - - -var nm = (0, _provide2.default)('olHelpers.esriToOlStyle'); - -/** - * This callback is displayed as part of the Requester class. - * @callback styleFunc - * @param {ol.Feature} feat - openlayers feature - * @param {number} resolution - map resolution - */ - -/** - * - * @param {Array<number>} colorArray - input color array - * @param {number} opacity - the opacity 0 to 1 - * @returns {string} rgba string - * @private - */ -function _colorArrayToRgba(colorArray, opacity) { - "use strict"; - - return 'rgba(' + colorArray[0] + ',' + colorArray[1] + ',' + colorArray[2] + ',' + opacity + ')'; -} - -/** - * escape html charcters - * @param {string} str - input string - * @returns {string} escaped string - */ -function htmlEscape(str) { - return String(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>'); -} - -nm.htmlEscape = htmlEscape; - -var CommonSymbol = - -/** - * - * @param symbolObj - * @param {number} opacity - */ -function CommonSymbol(symbolObj, opacity) { - _classCallCheck(this, CommonSymbol); - - this.symbolObj = symbolObj; - this.opacity = opacity; - this.olStyle = undefined; - this.legendHtml = ''; -}; - -var PointSymbol = function (_CommonSymbol) { - _inherits(PointSymbol, _CommonSymbol); - - function PointSymbol(symbolObj, opacity) { - _classCallCheck(this, PointSymbol); - - var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(PointSymbol).call(this, symbolObj, opacity)); - - switch (_this2.symbolObj['type']) { - case 'esriSMS': - var innerColor = _colorArrayToRgba(_this2.symbolObj.color, _this2.opacity); - var outerColor = _colorArrayToRgba(_this2.symbolObj.outline.color, _this2.opacity); - var outlineWidth = _this2.symbolObj.outline.width; - var radius = _this2.symbolObj.size; - - _this2.olStyle = new _ol2.default.style.Style({ - image: new _ol2.default.style.Circle({ - radius: radius, - fill: new _ol2.default.style.Fill({ - color: innerColor - }), - stroke: new _ol2.default.style.Stroke({ color: outerColor, width: outlineWidth }) - }) - }); - _this2.legendHtml = '<span class="legend-layer-icon" style="color: ' + innerColor + '">●</span>'; - break; - case 'esriPMS': - _this2.olStyle = new _ol2.default.style.Style({ - image: new _ol2.default.style.Icon({ src: 'data:image/png;base64,' + _this2.symbolObj['imageData'] }) - }); - _this2.legendHtml = '<img class="legend-layer-icon" height="17" src="data:image/png;base64,' + _this2.symbolObj['imageData'] + '">'; - break; - default: - console.log(_this2.symbolObj); - alert('Point symbol does not handle symbol type: ' + _this2.symbolObj['type']); - } - return _this2; - } - - return PointSymbol; -}(CommonSymbol); - -var LineSymbol = function (_CommonSymbol2) { - _inherits(LineSymbol, _CommonSymbol2); - - function LineSymbol(symbolObj, opacity) { - _classCallCheck(this, LineSymbol); - - var _this3 = _possibleConstructorReturn(this, Object.getPrototypeOf(LineSymbol).call(this, symbolObj, opacity)); - - switch (_this3.symbolObj['type']) { - case 'esriSLS': - var innerColor = _colorArrayToRgba(_this3.symbolObj.color, _this3.opacity); - var lineWidth = _this3.symbolObj.width; - - _this3.olStyle = new _ol2.default.style.Style({ - stroke: new _ol2.default.style.Stroke({ - color: innerColor, - //lineDash: [4], - width: lineWidth - }) - }); - - _this3.legendHtml = '<span class="legend-layer-icon" '; - _this3.legendHtml += 'style="'; - _this3.legendHtml += 'background-color: ' + innerColor + ';'; - _this3.legendHtml += 'width: 40px;'; - _this3.legendHtml += 'height: 4px;'; - _this3.legendHtml += 'position: relative;'; - _this3.legendHtml += 'display: inline-block;'; - _this3.legendHtml += 'top: -1px;'; - _this3.legendHtml += '"></span>'; - break; - default: - console.log(_this3.symbolObj); - alert('Line symbol does not handle symbol type: ' + _this3.symbolObj['type']); - } - return _this3; - } - - return LineSymbol; -}(CommonSymbol); - -var PolygonSymbol = function (_CommonSymbol3) { - _inherits(PolygonSymbol, _CommonSymbol3); - - function PolygonSymbol(symbolObj, opacity) { - _classCallCheck(this, PolygonSymbol); - - var _this4 = _possibleConstructorReturn(this, Object.getPrototypeOf(PolygonSymbol).call(this, symbolObj, opacity)); - - switch (_this4.symbolObj['type']) { - case 'esriSFS': - var innerColor = _colorArrayToRgba(_this4.symbolObj.color, _this4.opacity); - var outerColor = _colorArrayToRgba(_this4.symbolObj.outline.color, _this4.opacity); - var outlineWidth = _this4.symbolObj.outline.width; - - _this4.olStyle = new _ol2.default.style.Style({ - stroke: new _ol2.default.style.Stroke({ - color: outerColor, - //lineDash: [4], - width: outlineWidth - }), - fill: new _ol2.default.style.Fill({ - color: innerColor - }) - }); - - _this4.legendHtml = '<span class="legend-layer-icon" '; - _this4.legendHtml += 'style="'; - _this4.legendHtml += 'background-color: ' + innerColor + ';'; - _this4.legendHtml += 'border: solid ' + outerColor + ' 1px;'; - _this4.legendHtml += 'width: 40px;'; - _this4.legendHtml += 'height: 9px;'; - _this4.legendHtml += 'position: relative;'; - _this4.legendHtml += 'display: inline-block;'; - _this4.legendHtml += 'top: 2px;'; - _this4.legendHtml += '"></span>'; - break; - - default: - console.log(_this4.symbolObj); - alert('Polygon symbol does handle symbol type: ' + _this4.symbolObj['type']); - } - return _this4; - } - - return PolygonSymbol; -}(CommonSymbol); - -var SymbolGenerator = function SymbolGenerator(esriResponse) { - _classCallCheck(this, SymbolGenerator); - - this.opacity = (100 - (esriResponse['drawingInfo']['transparency'] || 0)) / 100; - this.renderer = esriResponse['drawingInfo']['renderer']; - this.olStyle = undefined; - this.legendHtml = ''; -}; - -var SingleSymbol = function (_SymbolGenerator) { - _inherits(SingleSymbol, _SymbolGenerator); - - /** - * - * @param {object} esriResponse - layer info - * @param {Constructor|*} SymbolClass - the symbol class to use - */ - - function SingleSymbol(esriResponse, SymbolClass) { - _classCallCheck(this, SingleSymbol); - - var _this5 = _possibleConstructorReturn(this, Object.getPrototypeOf(SingleSymbol).call(this, esriResponse)); - - _this5.symbol = _this5.renderer['symbol']; - var symbolObj = new SymbolClass(_this5.symbol, _this5.opacity); - _this5.olStyle = symbolObj.olStyle; - _this5.legendHtml = symbolObj.legendHtml; - return _this5; - } - - return SingleSymbol; -}(SymbolGenerator); - -var UniqueValueSymbol = function (_SymbolGenerator2) { - _inherits(UniqueValueSymbol, _SymbolGenerator2); - - /** - * - * @param {object} esriResponse - layer info - * @param {Constructor|*} SymbolClass - the Symbol class definition - */ - - function UniqueValueSymbol(esriResponse, SymbolClass) { - _classCallCheck(this, UniqueValueSymbol); - - var _this6 = _possibleConstructorReturn(this, Object.getPrototypeOf(UniqueValueSymbol).call(this, esriResponse)); - - _this6.uniqueValueInfos = _this6.renderer['uniqueValueInfos']; - _this6.propertyName = _this6.renderer['field1']; - _this6.defaultSymbol = _this6.renderer['defaultSymbol']; - - if (_this6.defaultSymbol) { - var symbolObj = new SymbolClass(_this6.defaultSymbol, _this6.opacity); - _this6.defaultStyle = symbolObj.olStyle; - _this6.defaultLabelHtml = '<span class="legend-layer-subitem">' + htmlEscape(_this6.renderer['defaultLabel']) + '</span>' + symbolObj.legendHtml; - } else { - _this6.defaultStyle = undefined; - _this6.defaultLabelHtml = 'other'; - } - - _this6.valueArray = []; - _this6.labelArray = []; - _this6.legendArray = []; - _this6.propertyStyleLookup = {}; - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = _this6.uniqueValueInfos[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var uniqueVal = _step.value; - - _this6.labelArray.push(uniqueVal['label']); - _this6.valueArray.push(uniqueVal['value']); - var uniqueSym = new SymbolClass(uniqueVal.symbol, _this6.opacity); - _this6.legendArray.push('<span class="legend-layer-subitem">' + htmlEscape(uniqueVal['label']) + '</span>' + uniqueSym.legendHtml); - _this6.propertyStyleLookup[uniqueVal['value']] = uniqueSym.olStyle; - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - var _this = _this6; - - _this6.olStyle = function (feature, resolution) { - var checkProperties = feature.getProperties(); - var checkProperty = checkProperties[_this.propertyName]; - - var returnValue = void 0; - if (_this.propertyStyleLookup[checkProperty] !== undefined) { - returnValue = [_this.propertyStyleLookup[checkProperty]]; - } else { - returnValue = [_this.defaultStyle]; - } - - return returnValue; - }; - - if (_this6.defaultLabelHtml !== null) { - _this6.legendArray.push(_this6.defaultLabelHtml); - } - - _this6.legendHtml = '<ul>'; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = _this6.legendArray[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var h = _step2.value; - - _this6.legendHtml += '<li>' + h + '</li>'; - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - _this6.legendHtml += '</ul>'; - return _this6; - } - - return UniqueValueSymbol; -}(SymbolGenerator); - -/** - * style and legend object - * @typedef {object} styleAndLegend - * @property {styleFunc} style - style function - * @property {string} legend - legend content - */ - -/** - * - * @param {object} esriResponse - layer info - * @returns {styleAndLegend} style and legend object - */ - - -function makeFeatureServiceLegendAndSymbol(esriResponse) { - "use strict"; - - var renderer = esriResponse['drawingInfo']['renderer']; - var symbolLegendOut = null; - - switch (renderer['type']) { - case 'simple': - switch (esriResponse['geometryType']) { - case 'esriGeometryPoint': - symbolLegendOut = new SingleSymbol(esriResponse, PointSymbol); - break; - case 'esriGeometryPolyline': - symbolLegendOut = new SingleSymbol(esriResponse, LineSymbol); - break; - case 'esriGeometryPolygon': - symbolLegendOut = new SingleSymbol(esriResponse, PolygonSymbol); - break; - default: - console.log(esriResponse); - alert(esriResponse['geometryType'] + ' not handled'); - } - break; - case 'uniqueValue': - switch (esriResponse['geometryType']) { - case 'esriGeometryPoint': - symbolLegendOut = new UniqueValueSymbol(esriResponse, PointSymbol); - break; - case 'esriGeometryPolyline': - symbolLegendOut = new UniqueValueSymbol(esriResponse, LineSymbol); - break; - case 'esriGeometryPolygon': - symbolLegendOut = new UniqueValueSymbol(esriResponse, PolygonSymbol); - break; - default: - console.log(esriResponse); - alert(esriResponse['geometryType'] + ' not handled'); - } - break; - default: - alert('not handled renderer type: ' + renderer['type']); - } - - if (symbolLegendOut == null) { - return { style: undefined, legend: '' }; - } else { - return { style: symbolLegendOut.olStyle, legend: symbolLegendOut.legendHtml }; - } -} - -nm.makeFeatureServiceLegendAndSymbol = makeFeatureServiceLegendAndSymbol; - -/** - * - * @param {object} lyrObject - the layer as defined in the response - * @param {boolean} [iconsOnly=false] use only icons - * @returns {string} legend html - */ -function mapServiceLegendItem(lyrObject, iconsOnly) { - - iconsOnly = typeof iconsOnly == 'boolean' ? iconsOnly : false; - var layerName = lyrObject['layerName']; - var legendItems = lyrObject['legend']; - var legendHtml = ''; - - if (legendItems.length == 1) { - legendHtml = '<img class="legend-layer-icon" height="17" src="data:image/png;base64,' + legendItems[0]['imageData'] + '">'; - } else { - legendHtml += '<span class="legend-items-expander" title="Expand/Collapse">▼</span><ul>'; - for (var i = 0; i < legendItems.length; i++) { - legendHtml += '<li>'; - legendHtml += '<span class="legend-layer-subitem">' + htmlEscape(legendItems[i]['label']) + '</span>'; - legendHtml += '<img class="legend-layer-icon" height="17" src="data:image/png;base64,' + legendItems[i]['imageData'] + '">'; - legendHtml += '</li>'; - } - legendHtml += '</ul>'; - } - - if (!iconsOnly) { - legendHtml = '<span class="legend-layer-subitem">' + layerName + '</span>' + legendHtml; - } - - return legendHtml; -} - -/** - * make map service legent - * @param {object} esriResponse - layer info - * @returns {string} legend content - */ -function makeMapServiceLegend(esriResponse) { - "use strict"; - - var newLegendHtml = ''; - - var layers = esriResponse['layers']; - - if (layers.length == 1) { - newLegendHtml += mapServiceLegendItem(layers[0], true); - } else { - newLegendHtml += '<ul>'; - for (var i = 0; i < layers.length; i++) { - newLegendHtml += '<li>' + mapServiceLegendItem(layers[i]) + '</li>'; - } - newLegendHtml += '</ul>'; - } - - return newLegendHtml; -} - -nm.makeMapServiceLegend = makeMapServiceLegend; \ No newline at end of file diff --git a/_lib/olHelpers/extentUtil.js b/_lib/olHelpers/extentUtil.js deleted file mode 100644 index 44f21b0d11029626771020bd1a97666fa013e6a5..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/extentUtil.js +++ /dev/null @@ -1,114 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.calculateExtent = calculateExtent; -exports.fitToMap = fitToMap; - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('util'); - -/** - * - * @param {Array<LayerBaseVector>|Array<ol.layer.Vector>|LayerBaseVector|ol.layer.Vector|*} layers - array of layers or single - * @returns {ol.Extent|Array<number>|*} - collective extent - */ -/** - * Created by gavorhes on 7/18/2016. - */ -function calculateExtent(layers) { - "use strict"; - - if (layers.constructor.name != 'Array') { - layers = [layers]; - } - - var hasExtent = false; - - var minX = 10E100; - var minY = 10E100; - var maxX = -10E100; - var maxY = -10E100; - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = layers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var lyr = _step.value; - - - /** - * - * @type {ol.layer.Vector} - */ - var olLayer = lyr['olLayer'] || lyr; - - if (olLayer.getSource().getFeatures().length > 0) { - hasExtent = true; - var ext = olLayer.getSource().getExtent(); - minX = ext[0] < minX ? ext[0] : minX; - minY = ext[1] < minY ? ext[1] : minY; - maxX = ext[2] > maxX ? ext[2] : maxX; - maxY = ext[3] > maxY ? ext[3] : maxY; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - if (hasExtent) { - return [minX, minY, maxX, maxY]; - } else { - return undefined; - } -} - -nm.calculateExtent = calculateExtent; - -/** - * given one or an array of layers, fit to the map - * @param {Array<LayerBaseVector>|Array<ol.layer.Vector>|LayerBaseVector|ol.layer.Vector} layers - array of layers or single - * @param {ol.Map} mp - the map to fit - * @param {number|undefined} [zoomOut=undefined] - levels to zoom out after fit - */ -function fitToMap(layers, mp, zoomOut) { - "use strict"; - - /** - * - * @type {ol.Extent|undefined} - */ - - var ext = calculateExtent(layers); - - if (typeof ext == 'undefined') { - return; - } - - mp.getView().fit(ext, mp.getSize()); - - if (typeof zoomOut == 'number') { - mp.getView().setZoom(mp.getView().getZoom() - zoomOut); - } -} - -nm.calculateExtent = calculateExtent; \ No newline at end of file diff --git a/_lib/olHelpers/layerSwipe.js b/_lib/olHelpers/layerSwipe.js deleted file mode 100644 index cc4e0e25afde3e31072c57e330c80badfafc70a2..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/layerSwipe.js +++ /dev/null @@ -1,179 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 6/1/2016. - */ - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('collections.layerSwipe'); - -var LayerSwipe = function () { - - /** - * - * @param {ol.Map} map - the map - * @param {string} [sliderContent=''] - additional html to be added inside the slider div - */ - - function LayerSwipe(map, sliderContent) { - var _this = this; - - _classCallCheck(this, LayerSwipe); - - sliderContent = sliderContent || ''; - /** - * - * @type {Array<LayerBase>} - */ - this.leftLayers = []; - - /** - * - * @type {Array<LayerBase>} - */ - this.rightLayers = []; - - this._percentRight = 50; - this.offset = null; - - this._map = map; - this.$mapElement = (0, _jquery2.default)(map.getTargetElement()); - this.$mapElement.append('<div class="layer-swiper">' + sliderContent + '</div>'); - - this.$swiper = this.$mapElement.find('.layer-swiper'); - this.percentRight = this.percentRight; - - this.dragging = false; - - this.$mapElement.mouseleave(function () { - _this.dragging = false; - }); - - this.$swiper.bind('mousewheel DOMMouseScroll', function (evt) { - evt.preventDefault(); - }); - - this.$swiper.mousedown(function (evt) { - _this.dragging = true; - _this.offset = evt.offsetX; - }); - - (0, _jquery2.default)(window).mouseup(function () { - _this.dragging = false; - }); - - this.$mapElement.mousemove(function (evt) { - if (_this.dragging) { - var mapLeft = _this.$mapElement.position().left; - var mapWidth = _this.$mapElement.width(); - - _this.percentRight = 100 * (evt.pageX - _this.offset - mapLeft) / mapWidth; - } - }); - } - - /** - * - * @param {LayerBase|*} lyr - layer to be added to left side - */ - - - _createClass(LayerSwipe, [{ - key: 'addLeftLayer', - value: function addLeftLayer(lyr) { - var _this2 = this; - - if (this.leftLayers.indexOf(lyr) != -1) { - return; - } - - lyr.olLayer.on('precompose', function (event) { - var ctx = event.context; - var width = ctx.canvas.width * (_this2.percentRight / 100); - - ctx.save(); - ctx.beginPath(); - ctx.rect(0, 0, width, ctx.canvas.height); - ctx.clip(); - }); - - lyr.olLayer.on('postcompose', function (event) { - var ctx = event.context; - ctx.restore(); - }); - - this.leftLayers.push(lyr); - } - - /** - * - * @param {LayerBase|*} lyr - layer to be added to right side - */ - - }, { - key: 'addRightLayer', - value: function addRightLayer(lyr) { - var _this3 = this; - - if (this.rightLayers.indexOf(lyr) != -1) { - return; - } - - lyr.olLayer.on('precompose', function (event) { - var ctx = event.context; - var width = ctx.canvas.width * (_this3.percentRight / 100); - - ctx.save(); - ctx.beginPath(); - ctx.rect(width, 0, ctx.canvas.width - width, ctx.canvas.height); - ctx.clip(); - }); - - lyr.olLayer.on('postcompose', function (event) { - var ctx = event.context; - ctx.restore(); - }); - - this.rightLayers.push(lyr); - } - }, { - key: 'percentRight', - get: function get() { - return this._percentRight; - }, - set: function set(pcnt) { - var maxed = this.$swiper.position().left + this.$swiper.width() > this.$mapElement.width(); - - if (pcnt < 0) { - return; - } else if (maxed && pcnt > this.percentRight) { - return; - } - - this._percentRight = pcnt; - this.$swiper.css('left', this._percentRight.toFixed(2) + '%'); - this._map.render(); - } - }]); - - return LayerSwipe; -}(); - -nm.LayerSwipe = LayerSwipe; -exports.default = LayerSwipe; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/mapInteractionBase.js b/_lib/olHelpers/mapInteractionBase.js deleted file mode 100644 index 7513a45c87192dc479e8cdaddbb52fbe541285f1..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/mapInteractionBase.js +++ /dev/null @@ -1,115 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 12/8/2015. - */ - - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('olHelpers'); - -/** - * base interaction - */ - -var MapInteractionBase = function () { - - /** - * map interaction base - * @param {string} subtype - the interaction subtype - */ - - function MapInteractionBase(subtype) { - _classCallCheck(this, MapInteractionBase); - - this._map = undefined; - this._initialized = false; - this._subtype = subtype; - } - - /** - * base initializer, returns true for already initialized - * @param {ol.Map} theMap - the ol Map - * @returns {boolean} true for already initialized - */ - - - _createClass(MapInteractionBase, [{ - key: 'init', - value: function init(theMap) { - if (!this._initialized) { - this._map = theMap; - this._initialized = true; - - return false; - } - - return true; - } - - /** - * get reference to the ol map object - * @returns {ol.Map} the map object - */ - - }, { - key: '_checkInit', - - - /** - * Check the initialization status and throw exception if not valid yet - * @protected - */ - value: function _checkInit() { - if (!this.initialized) { - var msg = this._subtype + ' object not initialized'; - alert(msg); - console.log(msg); - throw msg; - } - } - - /** - * Check the initialization status and throw exception if not valid yet - */ - - }, { - key: 'checkInit', - value: function checkInit() { - this._checkInit(); - } - }, { - key: 'map', - get: function get() { - return this._map; - } - - /** - * get if is initialized - * @returns {boolean} is initialized - */ - - }, { - key: 'initialized', - get: function get() { - return this._initialized; - } - }]); - - return MapInteractionBase; -}(); - -nm.MapInteractionBase = MapInteractionBase; -exports.default = MapInteractionBase; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/mapMove.js b/_lib/olHelpers/mapMove.js deleted file mode 100644 index dfd819f2af5e0f05a014403463e13d823513a9c0..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/mapMove.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _mapMoveCls = require('./mapMoveCls'); - -var _mapMoveCls2 = _interopRequireDefault(_mapMoveCls); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The single map move object catch is that it is common to multimap pages - * @type {MapMoveCls} - */ -exports.default = new _mapMoveCls2.default(); /** - * Created by gavorhes on 11/3/2015. - */ - -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/mapMoveCls.js b/_lib/olHelpers/mapMoveCls.js deleted file mode 100644 index 0d299b3074105b234949eee97d00537aa6dfbb70..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/mapMoveCls.js +++ /dev/null @@ -1,343 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _mapInteractionBase = require('./mapInteractionBase'); - -var _mapInteractionBase2 = _interopRequireDefault(_mapInteractionBase); - -var _checkDefined = require('../util/checkDefined'); - -var checkDefined = _interopRequireWildcard(_checkDefined); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _makeGuid = require('../util/makeGuid'); - -var _makeGuid2 = _interopRequireDefault(_makeGuid); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /** - * Created by gavorhes on 11/3/2015. - */ - -var nm = (0, _provide2.default)('olHelpers'); - -/** - * assists with map move interactions, trigger callback functions - * @augments MapInteractionBase - */ - -var MapMoveCls = function (_MapInteractionBase) { - _inherits(MapMoveCls, _MapInteractionBase); - - /** - * constructor called implicitly - */ - - function MapMoveCls() { - _classCallCheck(this, MapMoveCls); - - var _this2 = _possibleConstructorReturn(this, Object.getPrototypeOf(MapMoveCls).call(this, 'map move')); - - _this2._arrLyrRequest = []; - _this2._arrLyrTimeout = []; - _this2._arrLayer = []; - _this2._lookupLayer = {}; - - _this2._mapMoveCallbacks = []; - _this2._mapMoveCallbacksLookup = {}; - _this2._mapMoveCallbackDelays = []; - _this2._mapMoveCallbackContext = []; - _this2._mapMoveCallbackTimeout = []; - - _this2._mapExtent = undefined; - _this2._zoomLevel = undefined; - return _this2; - } - - /** - * initialize the map move object - * @param {ol.Map} theMap - the ol map - */ - - - _createClass(MapMoveCls, [{ - key: 'init', - value: function init(theMap) { - if (_get(Object.getPrototypeOf(MapMoveCls.prototype), 'init', this).call(this, theMap)) { - return; - } - - var _this = this; - - this.map.getView().on(['change:center', 'change:resolution'], function (e) { - - _this._updateMapExtent(); - - // trigger the layer updates - for (var i = 0; i < _this._arrLayer.length; i++) { - _this.triggerLyrLoad(_this._arrLayer[i], i, e.type); - } - - // trigger the map callbacks - for (var _i = 0; _i < _this._mapMoveCallbacks.length; _i++) { - _this.triggerMoveCallback(_i, e.type); - } - }); - } - }, { - key: '_updateMapExtent', - value: function _updateMapExtent() { - var theView = this.map.getView(); - this._zoomLevel = theView.getZoom(); - - var extentArray = theView.calculateExtent(this.map.getSize()); - - this._mapExtent = { - minX: extentArray[0], - minY: extentArray[1], - maxX: extentArray[2], - maxY: extentArray[3] - }; - } - - /** - * return the map extent - */ - - }, { - key: 'triggerLyrLoad', - - - /** - * Trigger the layer load - * @param {LayerBaseVector|*} lyr - the layer being acted on - * @param {number} [index=undefined] - index of the layer - * @param {string|*} [eventType=undefined] the event triggering the load, as 'change:center' or 'change:resolution' - */ - value: function triggerLyrLoad(lyr, index, eventType) { - var _this3 = this; - - if (checkDefined.undefinedOrNull(lyr) && checkDefined.undefinedOrNull(index)) { - throw 'need to define lyr or index'; - } else if (checkDefined.definedAndNotNull(lyr) && checkDefined.undefinedOrNull(index)) { - index = this._arrLayer.indexOf(lyr); - } else if (checkDefined.undefinedOrNull(lyr) && checkDefined.definedAndNotNull(index)) { - lyr = this._arrLayer[index]; - } - - // clear the timeout - if (this._arrLyrTimeout[index] != null) { - clearTimeout(this._arrLyrTimeout[index]); - this._arrLyrTimeout[index] = null; - } - - // abort if necessary and clear the request - if (this._arrLyrRequest[index] != null && this._arrLyrRequest[index] != 4) { - this._arrLyrRequest[index].abort(); - this._arrLyrRequest[index] = null; - } - - // dummy callback used if before load returns false - var callbackFunc = function callbackFunc() {}; - - if (lyr.mapMoveBefore(this._zoomLevel, eventType)) { - (function () { - lyr.mapMoveMakeGetParams(_this3._mapExtent, _this3._zoomLevel); - - var _this = _this3; - - callbackFunc = function callbackFunc() { - function innerFunction(theLayer, theIndex) { - var _innerThis = this; - this._arrLyrRequest[theIndex] = _jquery2.default.get(theLayer.url, theLayer.mapMoveParams, function (d) { - /** - * @type {LayerBaseVector} - */ - theLayer.mapMoveCallback(d); - theLayer.loadCallback(); - }, 'json').fail(function (jqXHR) { - if (jqXHR.statusText != 'abort') { - console.log('failed'); - console.log(theLayer.url); - console.log(theLayer.mapMoveParams); - } - }).always(function () { - _innerThis._arrLyrTimeout[theIndex] = null; - _innerThis._arrLyrRequest[theIndex] = null; - }); - } - innerFunction.call(_this, lyr, index); - }; - })(); - } else { - lyr.clear(); - } - this._arrLyrTimeout[index] = setTimeout(callbackFunc, lyr.onDemandDelay); - } - - /** - * trigger the map move call back at the given index - * @param {number} ind - the index of the layer - * @param {string|*} [eventType=undefined] the event triggering the load as 'change:center' or 'change:resolution' - * @param {string} [functionId=undefined] the function id used to reference the added callback function - */ - - }, { - key: 'triggerMoveCallback', - value: function triggerMoveCallback(ind, eventType, functionId) { - - if (typeof ind == 'undefined' && typeof functionId == 'undefined') { - throw 'either the function index or the id must be defined'; - } - - if (typeof ind !== 'number') { - ind = this._mapMoveCallbacks.indexOf(this._mapMoveCallbacksLookup[functionId]); - } - - if (ind < 0) { - console.log('function not found'); - - return; - } - - // clear the timeout - if (this._mapMoveCallbackTimeout[ind] != null) { - clearTimeout(this._mapMoveCallbackTimeout[ind]); - this._mapMoveCallbackTimeout[ind] = null; - } - - var ctx = this._mapMoveCallbackContext[ind]; - var theFunc = this._mapMoveCallbacks[ind]; - - var _this = this; - - var f = function f() { - if (ctx !== null) { - theFunc.call(ctx, _this._mapExtent, _this._zoomLevel, eventType); - } else { - theFunc(_this._mapExtent, _this._zoomLevel, eventType); - } - }; - - this._mapMoveCallbackTimeout[ind] = setTimeout(f, this._mapMoveCallbackDelays[ind]); - } - - /** - * Add a layer to the interaction - * @param {LayerBaseVector|*} lyr - layer to add - * @param {boolean} [triggerOnAdd=true] - if the layer should be loaded on add - */ - - }, { - key: 'addVectorLayer', - value: function addVectorLayer(lyr, triggerOnAdd) { - if (this._arrLayer.indexOf(lyr) > -1) { - console.log('already added ' + lyr.name + ' to map move'); - - return; - } - this._checkInit(); - - this._arrLyrRequest.push(null); - this._arrLyrTimeout.push(null); - this._arrLayer.push(lyr); - this._lookupLayer[lyr.id] = lyr; - - triggerOnAdd = typeof triggerOnAdd == 'boolean' ? triggerOnAdd : true; - - if (triggerOnAdd) { - if (this._mapExtent === undefined) { - this._updateMapExtent(); - } - this.triggerLyrLoad(lyr, this._arrLayer.length - 1); - } - } - - /** - * This callback is displayed as a global member. - * @callback mapMoveCallbackFunction - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - * @param {string} [evtType=undefined] undefined for initial load, otherwise one of 'change:center', 'change:resolution' - */ - - /** - * add a callback to the map move event - * @param {mapMoveCallbackFunction} func - callback function - * @param {*} context - the context to use for this function - * @param {number} [delay=50] the delay before call load - * @param {boolean} [triggerOnAdd=true] if the layer should be loaded on add to mapMove - * @param {string} [functionId=undefined] optional id to reference the function later for outside triggering - */ - - }, { - key: 'addCallback', - value: function addCallback(func, context, delay, triggerOnAdd, functionId) { - - if (this._mapMoveCallbacks.indexOf(func) > -1) { - console.log('this function already added to map move'); - - return; - } - this._checkInit(); - if (!functionId) { - functionId = (0, _makeGuid2.default)(); - } - - this._mapMoveCallbacks.push(func); - this._mapMoveCallbacksLookup[functionId] = func; - this._mapMoveCallbackDelays.push(typeof delay == 'number' ? delay : 50); - this._mapMoveCallbackContext.push(checkDefined.definedAndNotNull(context) ? context : null); - this._mapMoveCallbackTimeout.push(null); - - triggerOnAdd = typeof triggerOnAdd == 'boolean' ? triggerOnAdd : true; - - if (triggerOnAdd) { - if (this._mapExtent === undefined) { - this._updateMapExtent(); - } - this.triggerMoveCallback(this._mapMoveCallbacks.length - 1); - } - } - }, { - key: 'mapExtent', - get: function get() { - if (!this._mapExtent) { - this._updateMapExtent(); - } - - return this._mapExtent; - } - }]); - - return MapMoveCls; -}(_mapInteractionBase2.default); - -nm.MapMoveCls = MapMoveCls; -exports.default = MapMoveCls; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/mapPopup.js b/_lib/olHelpers/mapPopup.js deleted file mode 100644 index 54d957ffd002cac260fe37a5b52208fd9d3bb047..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/mapPopup.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _mapPopupCls = require('./mapPopupCls'); - -var _mapPopupCls2 = _interopRequireDefault(_mapPopupCls); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * The single popup object catch is that it is common to multimap pages - * @type {MapPopupCls} - */ -exports.default = new _mapPopupCls2.default(); /** - * Created by gavorhes on 11/3/2015. - */ - -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/mapPopupCls.js b/_lib/olHelpers/mapPopupCls.js deleted file mode 100644 index b87a328ee5332553d39595005724d5cdddef88dc..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/mapPopupCls.js +++ /dev/null @@ -1,649 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** - * Created by gavorhes on 11/3/2015. - */ - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _mapInteractionBase = require('./mapInteractionBase'); - -var _mapInteractionBase2 = _interopRequireDefault(_mapInteractionBase); - -var _propertiesZoomStyle = require('../olHelpers/propertiesZoomStyle'); - -var _propertiesZoomStyle2 = _interopRequireDefault(_propertiesZoomStyle); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var nm = (0, _provide2.default)('olHelpers'); - -var _FeatureLayerProperties = function () { - - /** - * - * @param {ol.Feature} feature the feature - * @param {LayerBaseVector|*} layer - the layer in the popup - * @param {number} layerIndex - index of the layer - * @param {ol.layer.Vector} selectionLayer - the ol selection layer - * @param {string} [esriLayerName=undefined] - esri layer name - */ - - function _FeatureLayerProperties(feature, layer, layerIndex, selectionLayer, esriLayerName) { - _classCallCheck(this, _FeatureLayerProperties); - - this.feature = feature; - this.layer = layer; - this.layerIndex = layerIndex; - this.selectionLayer = selectionLayer; - this.popupContent = ''; - this.esriLayerName = typeof esriLayerName == 'string' ? esriLayerName : undefined; - } - - _createClass(_FeatureLayerProperties, [{ - key: 'layerName', - get: function get() { - if (typeof this.esriLayerName == 'string') { - return this.esriLayerName; - } else { - return this.layer.name; - } - } - }]); - - return _FeatureLayerProperties; -}(); - -/** - * map popup class - * @augments MapInteractionBase - */ - - -var MapPopupCls = function (_MapInteractionBase) { - _inherits(MapPopupCls, _MapInteractionBase); - - /** - * Definition for openlayers style function - * @callback olStyleFunction - * ¶m feature the openlayers vector feature - * $param - */ - - /** - * Definition for popup changed callback functions - * @callback popupChangedFunction - * @param $popContent jquery reference to the popup content - */ - - /** - * map popup constructor - */ - - function MapPopupCls() { - _classCallCheck(this, MapPopupCls); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(MapPopupCls).call(this, 'map popup')); - - _this._arrPopupLayerIds = []; - _this._arrPopupLayerNames = []; - /** - * - * @type {Array<LayerBaseVector>} - * @private - */ - _this._arrPopupLayers = []; - _this._arrPopupOlLayers = []; - _this._arrPopupContentFunction = []; - _this._$popupContainer = undefined; - _this._$popupContent = undefined; - _this._$popupCloser = undefined; - _this._popupOverlay = undefined; - _this._selectionLayers = []; - _this._selectionLayerLookup = {}; - _this._mapClickFunctions = []; - - //let a = function($jqueryContent){console.log($jqueryContent)}; - //this._popupChangedLookup = {'a': a}; - _this._popupChangedFunctions = []; - /** - * - * @type {Array<LayerEsriMapServer>} - * @private - */ - _this._esriMapServiceLayers = []; - - _this._popupOpen = false; - _this._popupCoordinate = null; - - /** - * - * @type {Array.<_FeatureLayerProperties>} - */ - _this._passThroughLayerFeatureArray = []; - - _this._currentPopupIndex = -1; - _this._popupContentLength = 0; - - return _this; - } - - /** - * map popup initialization - * @param {ol.Map} theMap - the ol map - */ - - - _createClass(MapPopupCls, [{ - key: 'init', - value: function init(theMap) { - var _this2 = this; - - if (_get(Object.getPrototypeOf(MapPopupCls.prototype), 'init', this).call(this, theMap)) { - return; - } - var $map = (0, _jquery2.default)('#' + this.map.getTarget()); - - $map.append('<div class="ol-popup">' + '<span class="ol-popup-closer">X</span>' + '<div class="popup-content"></div>' + '</div>'); - - this._$popupContainer = $map.find('.ol-popup'); - this._$popupContent = $map.find('.popup-content'); - this._$popupCloser = $map.find('.ol-popup-closer'); - - this._popupOverlay = new _ol2.default.Overlay({ - element: this._$popupContainer[0], - autoPan: true, - autoPanAnimation: { - duration: 250 - } - }); - - this._map.addOverlay(this._popupOverlay); - - this._$popupCloser.click(function (evt) { - _this2.closePopup(); - }); - - // display popup on click - this._map.on('singleclick', function (evt) { - _this2.closePopup(); - _this2._popupCoordinate = evt.coordinate; - - if (_this2._esriMapServiceLayers.length > 0) { - var queryParams = { - geometry: evt.coordinate.join(','), - geometryType: 'esriGeometryPoint', - layers: 'all', - sr: _this2._map.getView().getProjection().getCode().split(':')[1], - mapExtent: _this2._map.getView().calculateExtent(_this2._map.getSize()).join(','), - imageDisplay: _this2._map.getSize().join(',') + ',96', - returnGeometry: true, - tolerance: 15, - f: 'pjson' - }; - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = _this2._esriMapServiceLayers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var l = _step.value; - - l.getPopupInfo(queryParams, _this2._selectionLayerLookup[l.id]); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } - - var layerFeatureObjectArray = _this2._featuresAtPixel(evt.pixel); - - /** - * - * @type {Array.<_FeatureLayerProperties>} - */ - _this2._passThroughLayerFeatureArray = []; - _this2._currentPopupIndex = -1; - - for (var i = 0; i < layerFeatureObjectArray.length; i++) { - var featObj = layerFeatureObjectArray[i]; - - var props = featObj.feature.getProperties(); - - var popupContentResponse = _this2._arrPopupContentFunction[featObj.layerIndex](props, _this2._$popupContent); - - //skip if return was false - if (popupContentResponse === false) { - //continue; - } else if (typeof popupContentResponse == 'string') { - featObj.popupContent = popupContentResponse; - _this2._passThroughLayerFeatureArray.push(featObj); - } else { - featObj.selectionLayer.getSource().addFeature(featObj.feature); - } - } - - _this2._popupContentLength = _this2._passThroughLayerFeatureArray.length; - - _this2._currentPopupIndex = -1; - - var popupHtml = '<div class="ol-popup-nav">'; - popupHtml += '<span class="previous-popup ol-popup-nav-arrow">◀</span>'; - popupHtml += '<span class="next-popup ol-popup-nav-arrow">▶</span>'; - popupHtml += '<span class="current-popup-item-number" style="font-weight: bold;"></span>'; - popupHtml += '<span> of </span>'; - popupHtml += '<span class="popup-content-length" style="font-weight: bold;">' + _this2._popupContentLength + '</span>'; - popupHtml += '<span> - </span>'; - popupHtml += '<span class="current-popup-layer-name"></span>'; - popupHtml += '</div>'; - popupHtml += '<div class="ol-popup-inner">'; - - popupHtml += '</div>'; - - _this2._$popupContent.html(popupHtml); - - _this2._$popupContent.find('.previous-popup').click(function () { - if (_this2._popupContentLength == 1) { - return; - } - - if (_this2._currentPopupIndex == 0) { - _this2._currentPopupIndex = _this2._popupContentLength - 1; - } else { - _this2._currentPopupIndex--; - } - _this2._triggerFeatSelect(); - }); - - var nextPopup = _this2._$popupContent.find('.next-popup'); - - nextPopup.click(function () { - if (_this2._popupContentLength == 1 && _this2._currentPopupIndex > -1) { - return; - } - - if (_this2._currentPopupIndex == _this2._popupContentLength - 1) { - _this2._currentPopupIndex = 0; - } else { - _this2._currentPopupIndex++; - } - _this2._triggerFeatSelect(); - }); - - if (_this2._popupContentLength > 0) { - nextPopup.trigger('click'); - _this2._popupOverlay.setPosition(_this2._popupCoordinate); - _this2._$popupContent.scrollTop(0); - _this2._popupOpen = true; - } - }); - - //change mouse cursor when over marker - this._map.on('pointermove', function (e) { - if (e.dragging) { - return; - } - var pixel = _this2.map.getEventPixel(e.originalEvent); - var hit = _this2.map.hasFeatureAtPixel(pixel, function (lyrCandidate) { - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = _this2._arrPopupOlLayers[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var olLayer = _step2.value; - - if (lyrCandidate == olLayer) { - return true; - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - return false; - }); - _this2.map.getTargetElement().style.cursor = hit ? 'pointer' : ''; - }); - } - - /** - * helper to select features - * @private - */ - - }, { - key: '_triggerFeatSelect', - value: function _triggerFeatSelect() { - var $currentPopupItemNumber = this._$popupContent.find('.current-popup-item-number'); - var $innerPopup = this._$popupContent.find('.ol-popup-inner'); - var $layerNameSpan = this._$popupContent.find('.current-popup-layer-name'); - this.clearSelection(); - var lyrFeatObj = this._passThroughLayerFeatureArray[this._currentPopupIndex]; - $currentPopupItemNumber.html((this._currentPopupIndex + 1).toFixed()); - $layerNameSpan.html(lyrFeatObj.layerName); - $innerPopup.html(lyrFeatObj.popupContent); - lyrFeatObj.selectionLayer.getSource().addFeature(lyrFeatObj.feature); - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = this._popupChangedFunctions[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var f = _step3.value; - - f(this._$popupContent); - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - } - - /** - * - * @param {ol.Feature} feature - the ol feature - * @param {LayerEsriMapServer} lyr - the map server layer - * @param {string} popupContent - popup content - * @param {string} esriName - esri layer name - */ - - }, { - key: 'addMapServicePopupContent', - value: function addMapServicePopupContent(feature, lyr, popupContent, esriName) { - - var featLayerObject = new _FeatureLayerProperties(feature, lyr, this._popupContentLength, this._selectionLayerLookup[lyr.id], esriName); - featLayerObject.popupContent = popupContent; - - this._passThroughLayerFeatureArray.push(featLayerObject); - this._popupContentLength++; - - (0, _jquery2.default)('.popup-content-length').html(this._popupContentLength.toFixed()); - - if (!this._popupOpen) { - this._$popupContent.find('.next-popup').trigger('click'); - - this._popupOverlay.setPosition(this._popupCoordinate); - this._$popupContent.scrollTop(0); - this._popupOpen = true; - } - } - - /** - * - * @param {ol.Pixel} pixel - the ol pixel - * @returns {Array.<_FeatureLayerProperties>} - feature layer properties - * @private - */ - - }, { - key: '_featuresAtPixel', - value: function _featuresAtPixel(pixel) { - var _this3 = this; - - var layerFeatureObjectArray = []; - this.map.forEachFeatureAtPixel(pixel, function (feature, layer) { - var lyrIndex = _this3._arrPopupOlLayers.indexOf(layer); - - if (lyrIndex > -1) { - layerFeatureObjectArray.push(new _FeatureLayerProperties(feature, _this3._arrPopupLayers[lyrIndex], lyrIndex, _this3._selectionLayers[lyrIndex])); - } - }); - - return layerFeatureObjectArray; - } - }, { - key: 'closePopup', - value: function closePopup() { - this._checkInit(); - this._popupOpen = false; - this._popupOverlay.setPosition(undefined); - this._$popupCloser[0].blur(); - this.clearSelection(); - this._$popupContent.html(''); - - return false; - } - }, { - key: 'addPopupChangedFunction', - - - /** - * - * @param {popupChangedFunction} chgFunction - popup change function - */ - value: function addPopupChangedFunction(chgFunction) { - this._popupChangedFunctions.push(chgFunction); - } - - /** - * - * @param {LayerBase|*} lyr - the layer being acted on - * @param {object} [selectionStyle={}] the selection style configuration - * @param {string} [selectionStyle.color=rgba(255,170,0,0.5)] the selection color - * @param {number} [selectionStyle.width=10] the selection width for linear features - * @param {object|function} [selectionStyle.olStyle=undefined] an openlayers style object or function - * @returns {ol.layer.Vector} the new selection layer - * @private - */ - - }, { - key: '_addPopupLayer', - value: function _addPopupLayer(lyr, selectionStyle) { - this._checkInit(); - - selectionStyle = selectionStyle || {}; - selectionStyle.color = selectionStyle.color || 'rgba(255,170,0,0.5)'; - selectionStyle.width = selectionStyle.width || 10; - - var theStyle = void 0; - - if (selectionStyle.olStyle) { - theStyle = selectionStyle.olStyle; - } else { - theStyle = new _ol2.default.style.Style({ - stroke: new _ol2.default.style.Stroke({ - color: selectionStyle.color, - width: selectionStyle.width - }), - image: new _ol2.default.style.Circle({ - radius: 7, - fill: new _ol2.default.style.Fill({ color: selectionStyle.color }), - stroke: new _ol2.default.style.Stroke({ color: selectionStyle.color, width: 1 }) - }), - fill: new _ol2.default.style.Fill({ - color: selectionStyle.color - }) - }); - } - - var selectionLayer = new _ol2.default.layer.Vector({ - source: new _ol2.default.source.Vector(), - style: theStyle, - zIndex: 100 - }); - - this._selectionLayers.push(selectionLayer); - this._selectionLayerLookup[lyr.id] = selectionLayer; - this.map.addLayer(selectionLayer); - - return selectionLayer; - } - - /** - * The popup callback function - * @callback popupCallback - * @param {object} featureProperties - the feature properties - * @param {jQuery} jqRef reference to the div content to do some async stuff inside the div - * @returns {string} the html content to be added to the popup - */ - - /** - * Add popup to the map - * @param {LayerBase|*} lyr The layer that the popup with act on - * @param {popupCallback} popupContentFunction - popup content function that makes popup info - * @param {object} [selectionStyle={}] the selection style configuration - * @param {string} [selectionStyle.color=rgba(255,170,0,0.5)] the selection color - * @param {number} [selectionStyle.width=10] the selection width for linear features - * @param {object|function} [selectionStyle.olStyle=undefined] an openlayers style object or function - * @returns {object} a reference to the ol selection layer - */ - - }, { - key: 'addVectorPopup', - value: function addVectorPopup(lyr, popupContentFunction, selectionStyle) { - var selectionLayer = this._addPopupLayer(lyr, selectionStyle); - this._arrPopupLayerIds.push(lyr.id); - this._arrPopupLayerNames.push(lyr.name); - this._arrPopupLayers.push(lyr); - this._arrPopupOlLayers.push(lyr.olLayer); - this._arrPopupContentFunction.push(popupContentFunction); - - return selectionLayer; - } - }, { - key: 'removeVectorPopup', - - - /** - * - * @param {LayerBase} lyr - layer - */ - value: function removeVectorPopup(lyr) { - var idx = this._arrPopupLayerIds.indexOf(lyr.id); - - if (idx > -1) { - this._arrPopupLayerIds.splice(idx, 1); - this._arrPopupLayerNames.splice(idx, 1); - this._arrPopupLayers.splice(idx, 1); - this._arrPopupOlLayers.splice(idx, 1); - this._arrPopupContentFunction.splice(idx, 1); - this._selectionLayers.splice(idx, 1); - delete this._selectionLayerLookup[lyr.id]; - } - } - - /** - * - * @param {LayerEsriMapServer} lyr - map server layer - * @param {object} [selectionStyle={}] the selection style configuration - * @param {string} [selectionStyle.color=rgba(255,170,0,0.5)] the selection color - * @param {number} [selectionStyle.width=10] the selection width for linear features - * @param {object|function} [selectionStyle.olStyle=undefined] an openlayers style object or function - * @returns {object} a reference to the ol selection layer - */ - - }, { - key: 'addMapServicePopup', - value: function addMapServicePopup(lyr, selectionStyle) { - var selectionLayer = this._addPopupLayer(lyr, selectionStyle); - this._esriMapServiceLayers.push(lyr); - - return selectionLayer; - } - }, { - key: 'clearSelection', - value: function clearSelection() { - this._checkInit(); - for (var i = 0; i < this._selectionLayers.length; i++) { - this._selectionLayers[i].getSource().clear(); - } - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; - - try { - for (var _iterator4 = this._mapClickFunctions[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var f = _step4.value; - - f(); - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4.return) { - _iterator4.return(); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - } - }, { - key: 'addMapClickFunction', - - - /** - * Add a function to be called when the map is clicked but before any popups are implemented - * @param {function} func - the map click function - */ - value: function addMapClickFunction(func) { - this._mapClickFunctions.push(func); - } - }]); - - return MapPopupCls; -}(_mapInteractionBase2.default); - -nm.MapPopupCls = MapPopupCls; -exports.default = MapPopupCls; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/propertiesZoomStyle.js b/_lib/olHelpers/propertiesZoomStyle.js deleted file mode 100644 index fcf5d3f3f137f310348e745261d51b89286980b9..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/propertiesZoomStyle.js +++ /dev/null @@ -1,50 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _zoomResolutionConvert = require('./zoomResolutionConvert'); - -var zoomResolutionConvert = _interopRequireWildcard(_zoomResolutionConvert); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Created by gavorhes on 12/14/2015. - */ - -var nm = (0, _provide2.default)('olHelpers'); - -/** - * A style function based on properties and zoom level, wraps normal feature, resolution function - * @callback propertiesZoomStyle - * @param {object} properties the feature properties - * @param {number} zoom level - * - */ - -/** - * wrapper to define a style function by properties and zoom level - * @param {propertiesZoomStyle|*} styleFunc - style function - * @returns {function|*} new function - */ -function propertiesZoomStyle(styleFunc) { - if (styleFunc == undefined) { - return undefined; - } - - return function (feature, resolution) { - styleFunc(feature.getProperties(), zoomResolutionConvert.resolutionToZoom(resolution)); - }; -} - -nm.propertiesZoomStyle = propertiesZoomStyle; -exports.default = propertiesZoomStyle; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/quickMap.js b/_lib/olHelpers/quickMap.js deleted file mode 100644 index 9d626a56ab6449be7cc7a9d9e94807e52d6a629c..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/quickMap.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _quickMapBase = require('./quickMapBase'); - -var _quickMapBase2 = _interopRequireDefault(_quickMapBase); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _mapMove = require('./mapMove'); - -var _mapMove2 = _interopRequireDefault(_mapMove); - -var _mapPopup = require('./mapPopup'); - -var _mapPopup2 = _interopRequireDefault(_mapPopup); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Created by gavorhes on 12/15/2015. - */ - -var nm = (0, _provide2.default)('olHelpers'); - -/** - * Sets up a map with some default parameters and initializes - * mapMove and mapPopup - * - * @param {object} [options={}] config options - * @param {string} [options.divId=map] map div id - * @param {object} [options.center={}] center config object - * @param {number} [options.center.x=-10018378] center x, web mercator x or lon - * @param {number} [options.center.y=5574910] center y, web mercator y or lat - * @param {number} [options.zoom=7] zoom level - * @param {number} [options.minZoom=undefined] min zoom - * @param {number} [options.maxZoom=undefined] max zoom - * @param {boolean} [options.baseSwitcher=true] if add base map switcher - * @param {boolean} [options.fullScreen=false] if add base map switcher - * @returns {ol.Map} the ol map - */ -function quickMap(options) { - var m = (0, _quickMapBase2.default)(options); - _mapMove2.default.init(m); - _mapPopup2.default.init(m); - - return m; -} - -nm.quickMap = quickMap; -exports.default = quickMap; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/quickMapBase.js b/_lib/olHelpers/quickMapBase.js deleted file mode 100644 index 65f9b73ac1bae9b2f7cd857ee2567020feab2856..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/quickMapBase.js +++ /dev/null @@ -1,118 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _jquery = require('../jquery/jquery'); - -var _jquery2 = _interopRequireDefault(_jquery); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _ol = require('../ol/ol'); - -var _ol2 = _interopRequireDefault(_ol); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('olHelpers'); - -/** - * Sets up a map with some default parameters and initializes - * mapMove and mapPopup - * - * @param {object} [options={}] config options - * @param {string} [options.divId=map] map div id - * @param {object} [options.center={}] center config object - * @param {number} [options.center.x=-10018378] center x, web mercator x or lon - * @param {number} [options.center.y=5574910] center y, web mercator y or lat - * @param {number} [options.zoom=7] zoom level - * @param {number} [options.minZoom=undefined] min zoom - * @param {number} [options.maxZoom=undefined] max zoom - * @param {boolean} [options.baseSwitcher=true] if add base map switcher - * @param {boolean} [options.fullScreen=false] if add base map switcher - * @returns {ol.Map} the ol map - */ - -/** - * Created by gavorhes on 12/15/2015. - */ - -function quickMapBase(options) { - options = options || {}; - options.divId = options.divId || 'map'; - options.center = options.center || {}; - options.center.x = typeof options.center.x == 'number' ? options.center.x : -10018378; - options.center.y = typeof options.center.y == 'number' ? options.center.y : 5574910; - options.zoom = typeof options.zoom == 'number' ? options.zoom : 7; - options.baseSwitcher = typeof options.baseSwitcher == 'boolean' ? options.baseSwitcher : true; - options.fullScreen = typeof options.fullScreen == 'boolean' ? options.fullScreen : false; - - var $mapDiv = (0, _jquery2.default)('#' + options.divId); - $mapDiv.css('position', 'relative'); - - var osmLayer = new _ol2.default.layer.Tile({ source: new _ol2.default.source.OSM() }); - var satLayer = new _ol2.default.layer.Tile({ visible: false, source: new _ol2.default.source.MapQuest({ layer: 'sat' }) }); - - var osmCss = "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAADQ1NDk5OURFREtLS1FHSFlZWGJRVGJiYWdmZWxsbHRmaXBpanN0c3V0dHp5eX5+fIVzd4F3eeV0jud5juZ8k4aHhomHhoyGh5eGj5OVlJiVlZiYl5qZmJydnKOTlaKZmqKdnaOioaqqqKuzsbOvrrSysLa3tbW4uLm6ub27ub+/vbGXwbCZwbCgxLKlxrOqyLStybO3yrSxyrWzzbW2y7a1zbK4y7W6zbW8y760yrTAzbTFzrPKzrLOzrTJzrTOzr7CwbXC0LXK0LTO0L3I0bPQz7TQz7PS0bXQ0LnR0brW1bzT0r7U077V1Lzc2dqNqteUsdyXscaquuOHneaGmueHnOeJnuiBleiKn+eNoOiOoOWUpOiRo+iSpeiUpeqYpumaqOmdrPSynemgruSqtOmisOmlsuuqtequuOW1vOuxu+uxvOq1ve+xvPK0pvW3o/W5pfO5qvS7qfCwvMOuwc2/wNenxNyyzNe/0Nq31Nq51dy72Oy3wOu4wOu+xey4wO+6xO2+xfTAr/TCsvfFtPHLvvTJuMPDwMfHxcXKyc3DxMvFyMvLyM3PzcDV08DV1MTX1cbY1s7X1sjZ1sra2Mnd3M7b2c7c2tfH1tnB1t7F2d7M29fX1tLY1tDd2tHe3NTf3NnS19rZ1tva2Nnf3t3d28rh3tXg3Nnh3tzj393k39ni4N7k4N7n5uXDyOfLz+zAxu3CyOzEyezKzeDJ3eLM3uvP0u3P0ePf2+7R0u7Q1u/U0+7U1ezc0+7a2e/d2+3f3vbFzvLOwfHN0PPQw/TUx/LWyvLYzPDQ1fPe0ubc4vve4uHh3+nh3+/h2u/h3vHj2vHl3uHm4eTn4uDp5ebo4+Xo5ODq6ebq6OTv6+nl4+/j4O7l4e7n5ujp4+np5Ozq5e7s5urt6O7t6Orw6u7x6u3x7vPj5PDl4fDo4vDq5fDt5vDu6PDv7PTv6fDx6vHx7fH17fXw6fXy7fb07/bz8fT18vn38vr39fr48/r59Pr6+P3++//+/gAAALNTSk0AAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjlsM35OAAAFNElEQVRIS1VVCZxVUxi/9l0UIUT2bMnY43bVI2c0Y01kSWIaS0j2JEtkN41piomZrPPKQ2aQ7JKImOZlnm2493TJzDufuU1Zi+v/fee+mZ//793vnPOd7zvfes5zDBEZkBBjAcIjb+Iiotqgdhat8AMK0vl7/R9N7GiWtshqIr+EZ5gYKibyUsXY1l/mfFpssvUlWQ0FkU3gy4+RB/+kwYcO8pRSnldcOU/r2lAHARSwk2ORgEmOdC1EsuRiYSqMPwwroMIraZk5V2fYJQjCKfZrRmh3gSAZi2i4b7wSylWu8EqZwS59JkFUaW96JbNSc+CEUmt4rorwuZmWdDaoc+uZETuQlTCU5xYzR7muUnVUVo+BcRhre/VwUpasgJwhH7JkYIYA0sNxhmCwUK+lw6vCKBZehw01dEiyw4Q4aE0Z4ahDhKaFQsGnJ2BgqKoTBsNjFy0SlW6whRAZTdm8DBJmkBZhDi1j4xJQBk6ywrWUTymaCxac8lROcdauRGzQSNtA7EHUYhXyEwhhgjFUqRuO+rauhF1awFpzCsmwUbjIFBR0u1bKtyGpulW/H/cVVzkyGaIWTIR9pFAV6GK2gPMXMX8gPk9zzxXgI1kimcAltEYr+cjio1imlKpEa9rOipLm+p+CZ6Bw//qd1/f/O+GwMxbSLpyoZEcwkyh2jIks+3hmdd2jWUw4scxNysnHxU7nSspTRcJjCZGL3IsjsYJMMg5mwgx7gaIOLBFCogAgBBoNa9w+DE6I+Bs7FTgwwrJbHjWDgpYo2KwtBTcYEDuloC9geQw+k2RGnPGpTaOlq7AS+YICUz4DZVaX2TiNDhuYfTtY4geLi0IoCm3XccwM9hx4kU28StQEljDs3ZEpFGA+8dKzLmV9ymIwF5FOGn2GdJM8KLHDJbXyiYVMG9MRTLiXGGg2QKaxM3khPSRrwM9zEIardxU2w/EiA0gOeYKHzDR0V7/QGV3lKIA9ktrDArxO3gdA+k6SKoBiVwcm7NjZb9+Hnztg282TuHVZ9LOISFNt9MgyCetZVczSxnyDbl17Penq6mqpg1IhRaEO2aVLUO4/r17H8tTv6f13h71dduvZI3Y+uMdWksNSauLovJw5hsqiPIUvt0ku7/iBeUR3sksmomYWtRbAjbiLfv2lX9/V7LVG4uYnUZXhQ7f2OPCZEx9wrYWTcePEQqPEML8pl4mMdr/jlXlvHiRiJ2+MSTFY4TTSYStuvz2R/JXh+PPeGXm055J+3/YDWuNu3R3DArPutyg0ZgykMVDU9Ndm22+wYalr2rse48CnsTIFcMn73vfhNrktx1EUcZnPv6ah3Yy5cDTRdBEoGoBeah71dqFyjZDJLkWk3N3v4uuktssjWpzciMPxQeHj8nMKzcGuB0tAyzFhdCKOYWv4HwOQVwIxLG99a6uvH3sJCyO3h+k4EZ+G7+xj5f4XXksoaGrdMRzSc8ARA8+cdOuk2x6fffNNt5x+Ro1omPlrT/CQDlcNlpx4NBIWXhkx7Y3Zp3ofNR7Uv89Om/beW0TLIynHv3vs1VsOFpSWSXvfuPUf9BrRFyxgXdHoKJnQFegPOovvzz59ntrzye240ig8UQ3lDI2VqwagrKIQcLXNFL3wglN2OHdBQ6/vI3kENDVBwRb3k1XtczFbjWn4EzMYi7CF3129+JTYuRSdrGuS92g5dpqn6qXoJQs5xmL8p+Wt4hLbt0mx2OLNZR2bbPy8zJNQGFM/f/CfXZekRYFjGCWjIJpM+WiCzGBPWHhoyaAsjRT/B2Gy5yzYJkwUAAAAAElFTkSuQmCC')"; - var aerialCss = "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQALBgIMDQgOBwQOEQcTBwUSCwoVDAwdBw8ZDgUREwYUGAYZFQYZGgkTFQoVGQsZFAwZHBMeDhIbFBEbHAwWIA4bIREcIQ4hCQwjFw4lHBgkDB8sDxUiExIiGhAoGxohFRshGRorHQcrKQsiIQwmKgooJA0pKQ81Jw8yLRMiIxImKxUrJREuKhslJB0rIhooKRUuMBMyLhkwJhozKh48LxUzMRM9MBwzMiUvFCMtGiMwEiwzFCgzHDI+GSIsISkvJSQxIiM2LiY5Jic+Lyk0JSo0Ky49JSs9KSU1NSM7NCs2NS8+NDM1JzU9Ljg7IDJCHS1DLSNAMitCMSxIOjREITZLIDZJKDlFIjpFKztKJT1LKzJBMzpHMD1JMjpKPD1RKjlQNC1DQj5QQEA8MEJGJkBKJUJNK0lLLEJMMkVMPEpONENSLUdZL0pTLkpaLkRUMkRSPEVZMktUM0pVOklZMklZNEpcNU1ZMk1ZNUxfMk5dNkxcOVFUM1RUOFJbNVFZOVNYPVFdOVJdPFVaOVVaPVVdOlVdPVpaNlpdO0phN01hOlBiN1NhPFNoP1piPWFbPmRjPENOQEtPSURTQkJVS0xVQk1VSkxbQkxcS0heUVFXRFRcQlJfTFxeQlpeS05lQk1kSFRjQVRjSlZpQ1tkQlxlSlxpRF1rSVVnUVtlU1llXF9tU1xoXlxwSl9ramRfQmJlQ2FhSWFlSWFlTmVlSWRmTGFoQWFpRWFsRmVpRWVtRmNsSmtlRGpqRmpsS2BmWGRsUmFrW2ptUmZyR2RxTGpxTWVyU2RyW2d5V2tzUmt0WW15VG15WXFuTHNtVnFxTXF4T3h0TnJzUnJ1XHJ4VXN6Wnp0VHx1W315VXp8XGR0YGx0YHVzZXJ0aHR9ZXV+aHl9YHOCXXqBXXeCYHyCY3iEaHyIYn+JaXqKcYB5WIN6Y4SCXoCDZIGEaYCIZoOLa4iCaImJbIOOdYuMco6OeIuVcpOKbZKPc5aQb5eXe5ufg6KjhAAAAAAAAAAAAAAAAOGCeQgAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjlsM35OAAAH80lEQVRISy1WbXQUVxm+6wqnk3Zmpxl2FG2EGg92C8GDlWptVTwa+uF3xcKmDfFzCUzDsJNsunXipglJXJbrtJWmwZNSnHD3jojRgUIm2UumIZ0JZ7JByrALbMWW0IBW8aRa4+cf76TeX3Nm3uc+z/s+7/vugl4r/aMTrT4e1pPTqnnmJNn5AyUzRnrRle/qE33dsvrBtAQVoxtpZNK3zSzYjUjviWO2Ag+R77dl7W36n/1Ep9KBPG/S+Py0PkjU/gPKQGqwTHryiWYFAXSvMairsio7SjyNsnCzh0qKImV9/7mhfHQZx2yN1O+7rXUm33MUPaboOkAJHaoIdXfJj2xWeyD8jMFEXkvIu5qzpU988gWB5zl+GS+sFe55trEVPdWZB2miq8bBVkNFO2R0qnrfkiXhcJhtDNXE6tbW97/s9O9/7ZfVhx86/CwrROpfvvxboMqeLsuqPr1j44qEwDNMOBximUiYoU8sw7BC/a7T72uEnyJDlGxZ9KcglZRyuqqrv/tSZErgOI4NgRBTIw9EmHAoFGZZnp6aGaJ2GTxfxYs8kKVUQh7WB5hQeC3LsUxoxVKW14l3BX2WcoUYPiZyLLe8teZ+iuT4GGhvV5KpKWkpyzxEr2MZgQ1xdRjfRBoH+2k6lIHjKTHPPBo8CSJISqqq4wGGOcWylIGlgvgNX1Gd8vF5f+IUIwb30ng+Gg2QfBRIMvy0jG8SVkYo4N0zvUXVRztbJ/L6xL7lUZEXBEHkuZqlS6gEAUgKJurnhFtfpACOYd8b/hVbJPqwi44a6KA0sPVjIi/SIyxb3u8KlAJ0S8jRVgrlW+nVHPdrhiXCxu42d86ByksDc80P3MkJFBFQ8Ho1lQegpWJRWFGsDsRwwv7pIyvuQW0ZkrX6NDVFbqcvaQI8vbyqzt5AARrsbKx5yhQEGs+wPO56bOK+0rcwMrOKkpUbZWYxV04UeZZv/cBKFhRL6Qdv9y4LfEDA7/thg7tTmv1a5/GnO0wl0dQg80wglZaHUmxRvjwAHOfyN0mxrpqLUpcjsK3NHYMo4R1o6eho2ZyIb2FoeOC3ILK8kZ2HQMOuWywGXUkJBCeTbYFS0+ym1h2/6UgmvnrvKYZZtIEXGf75C2cIAp5LHNd71x7uPoTjakrWH9e3KFpaatjUvJUysFw0KrLMYMW2lTg4PeUQx6kJEALvxXEmCdVyPLHtCSjBhc01XCjIgafxou+PE6KC1dhxSCwoBCc+N4P3btM84pmdSSjJnjO/nvY4LQfVyz5/I+v6IwjUOMjy+MVCxIbKupTJaEktp7cTKU42Pvjh2m/8cSpC6aPsaX/MHSuUQLVVsIa4RUTs/r/BVAexNdjdnsNG7j/rV93xheLMzKnFrPeTEQchCyCcKb25aAIn7lrAertrZwyNXM8N6zfWrFo3d2SmOEcF83x/r+OOFgrAHYWF7cELjhV7UQo/6WAIUVl9JFl8a//HZ66VpbY3I9QKZqPru77lA+iOWAIr0hKxHCmmr0othSyeIl5y3qt4xT8gSNrKEZozs8Els67rgsLOZ+ygzwMfbtNhobfgzpEyGnz7htPtzUi6PuOoj7K0WF/MXiUFxwGajRD1hjYXHXI9p406qOyinp5/tiWcDHY0jIu4n64Qfq7kliB2gemag9QbOia0PbbDMbd43SHuvxFxrAocxins7MX5Kqbe1QixKBxoV4//PfAgGCu+Rlm4SvZizyDH+0reDHp92iO0BuX3bCfItl0PEwvYLqpwXG2MHlGsQ4S8pMJZv1JGmHiEoHQDdOjwmVlEP/nE9ADKjI8xLI0OOGITfy0SbeG/C2jKUDGSlDhM9I3IpK9iup6XnbRNC7yqueNsJCCIiXzdQhnaGN+46umnEdy5U5UbUJ48LFM9GkJo8BdDOiAZ7ZIQbKhYLMqvhU2wmNxjEAsS2AI7y4nWF64duePbk7YV3zvAVLEMD9AxJRNa3KDUibV7DjnkuprMEYjScFNcaR2ceP2u9R/5k1052Ryme5phAFRswlHjAudiP4dOy7CaxLgdJh9vUlU1702/+LPa1U9fvPi9qlA4XEUBJc3dFlpsR457IDl1iPqLp7o81NQgyV19iYU38uTiv975Pd3SiwQcsGjx+v4/6fl5T7EOOMTCtpbKxfemsQq/3olQZcminADAAI0cuGLHaHOFxbuGvRk/Z9u7CULqoVR6NE0yx1avj30oRhc/jWUoIALGxkz0dg1Dl9iaI7LqOOXKsXJFwjiuEAi70Jra2nW1PL08zLBhZsMABpW5csI7TPfew9ipFKcn5k1i+1KyCWKjC3W/8dF1d666+RaabBVTFTHacjoojBNDh0NDxk+IPTlwfqJkWpbnpFHXIbLbmpxEQ3ff/Z0g/mauXsoln9wDRjy/NHsQFw3P6vWuTJ43/+FZrk2cvAFRipCKdfD9y2+pjRj78s0KdCUDKJvdV91ChngV38T20TM+gghjpJaPlpFr2xbEz5g4A/NGt5rNwdwmYGeeeMXBSLHHUIc+6RsojRH9VTUm3/mLf/64b470XvoxoTKhlMBQ2jMEzo2PjxdGMppmn1RM24bWFJqaQv4BcuJa2Sam7Zokq1ldCsz06NCBHrhwqVQYpfFj42NZexz1EW9SR/kT58nEeQKJb2fPXjjp0u/YUkwHEgLeOnf2nOuf1TRTM02CLKLTPy60/x1CCztqn7Ev+BdsC3m+30decQvW/wBNTwU+CfUQAQAAAABJRU5ErkJggg==')"; - - if (options.baseSwitcher) { - // let switcherContent = '<div class="base-map-switcher" title="Toggle Base Layer" style="'; - // switcherContent += 'position: absolute; top: 70px; left: 4px; border: solid black 1px; '; - // switcherContent += `height: 50px; width: 50px; z-index: 10; border-radius: 4px; background: ${aerialCss};`; - // switcherContent += '"></div>'; - // $mapDiv.append(switcherContent); - // - // $mapDiv.find('.base-map-switcher').click(function() { - // "use strict"; - // osmLayer.setVisible(!osmLayer.getVisible()); - // satLayer.setVisible(!satLayer.getVisible()); - // - // if (osmLayer.getVisible()){ - // $(this).css('background', aerialCss); - // } else { - // $(this).css('background', osmCss); - // } - // }); - } - - if (options.zoom < 0 || options.zoom > 28) { - throw 'zoom out of range'; - } - - if (options.center.x >= -180 && options.center.x <= 180 && options.center.y >= -90 && options.center.y <= 90) { - var p = new _ol2.default.geom.Point([options.center.x, options.center.y]); - p.transform("EPSG:4326", "EPSG:3857"); - var coordinates = p.getCoordinates(); - options.center.x = coordinates[0]; - options.center.y = coordinates[1]; - } - - var map = new _ol2.default.Map({ - layers: [osmLayer, satLayer], - target: options.divId, - controls: _ol2.default.control.defaults({ - attributionOptions: { collapsible: false } - }), - view: new _ol2.default.View({ - center: [options.center.x, options.center.y], - zoom: options.zoom, - minZoom: options.minZoom, - maxZoom: options.maxZoom - }) - }); - - if (options.fullScreen) { - map.addControl(new _ol2.default.control.FullScreen()); - } - - return map; -} - -nm.quickMapBase = quickMapBase; -exports.default = quickMapBase; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/quickMapMulti.js b/_lib/olHelpers/quickMapMulti.js deleted file mode 100644 index 443fba045e9491086020fe51e7b06c0fd8b2c4be..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/quickMapMulti.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _quickMapBase = require('./quickMapBase'); - -var _quickMapBase2 = _interopRequireDefault(_quickMapBase); - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _mapMoveCls = require('./mapMoveCls'); - -var _mapMoveCls2 = _interopRequireDefault(_mapMoveCls); - -var _mapPopupCls = require('./mapPopupCls'); - -var _mapPopupCls2 = _interopRequireDefault(_mapPopupCls); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Created by gavorhes on 12/15/2015. - */ - -var nm = (0, _provide2.default)('olHelpers'); - -/** - * @typedef {object} quickMapMultiReturn - * @property {ol.Map} map The X Coordinate - * @property {MapMoveCls} mapMove The Y Coordinate - * @property {MapPopupCls} mapPopup The Y Coordinate - */ - -/** - * Sets up a map with some default parameters and initializes - * mapMove and mapPopup - * - * @param {object} [options={}] config options - * @param {string} [options.divId=map] map div id - * @param {object} [options.center={}] center config object - * @param {number} [options.center.x=-10018378] center x, web mercator x or lon - * @param {number} [options.center.y=5574910] center y, web mercator y or lat - * @param {number} [options.zoom=7] zoom level - * @param {number} [options.minZoom=undefined] min zoom - * @param {number} [options.maxZoom=undefined] max zoom - * @param {boolean} [options.baseSwitcher=true] if add base map switcher - * @param {boolean} [options.fullScreen=false] if add base map switcher - * @returns {quickMapMultiReturn} return map, map move, and map popup objects - */ -function quickMapMulti(options) { - var m = (0, _quickMapBase2.default)(options); - var mov = new _mapMoveCls2.default(); - var pop = new _mapPopupCls2.default(); - mov.init(m); - pop.init(m); - - return { map: m, mapMove: mov, mapPopup: pop }; -} - -nm.quickMapMulti = quickMapMulti; -exports.default = quickMapMulti; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/olHelpers/zoomResolutionConvert.js b/_lib/olHelpers/zoomResolutionConvert.js deleted file mode 100644 index 7ceddee8dc1f02de0acc0783f016757fc4ba6872..0000000000000000000000000000000000000000 --- a/_lib/olHelpers/zoomResolutionConvert.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.zoomToResolution = zoomToResolution; -exports.resolutionToZoom = resolutionToZoom; - -var _provide = require('../util/provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('olHelpers.zoomResolutionConvert'); /** - * Created by gavorhes on 12/14/2015. - */ - -var _zoomResLookup = [156543.03392804097, //0 -78271.51696402048, //1 -39135.75848201024, //2 -19567.87924100512, //3 -9783.93962050256, //4 -4891.96981025128, //5 -2445.98490512564, //6 -1222.99245256282, //7 -611.49622628141, //8 -305.748113140705, //9 -152.8740565703525, //10 -76.43702828517625, //11 -38.21851414258813, //12 -19.109257071294063, //13 -9.554628535647032, //14 -4.777314267823516, //15 -2.388657133911758, //16 -1.194328566955879, //17 -0.5971642834779395, //18 -0.29858214173896974, //19 -0.14929107086948487, //20 -0.07464553543474244, //21 -0.03732276771737122, //22 -0.01866138385868561, //23 -0.009330691929342804, //24 -0.004665345964671402, //25 -0.002332672982335701, //26 -0.0011663364911678506, //27 -0.0005831682455839253 //28 -]; - -/** - * Get the resolution given the zoom level - * @param {number} zoomLevel - the zoom level - * @returns {number|*} the map resolution - */ -function zoomToResolution(zoomLevel) { - "use strict"; - - if (typeof zoomLevel == 'number') { - if (zoomLevel % 1 === 0 && zoomLevel >= 0 && zoomLevel <= 28) { - return _zoomResLookup[zoomLevel]; - } else { - console.log('invalid zoom level provided: ' + zoomLevel); - - return undefined; - } - } else { - return undefined; - } -} -nm.zoomToResolution = zoomToResolution; - -/** - * Get resolution from the zoom level - * @param {number} resolution - the resolution - * @returns {number|*} the zoom level - */ -function resolutionToZoom(resolution) { - for (var i = 0; i < _zoomResLookup.length; i++) { - if (resolution >= _zoomResLookup[i]) { - return i; - } - } - - return 0; -} - -nm.resolutionToZoom = resolutionToZoom; \ No newline at end of file diff --git a/_lib/util/checkDefined.js b/_lib/util/checkDefined.js deleted file mode 100644 index 24ef65ce64cfb8781135a5c075277327e5520157..0000000000000000000000000000000000000000 --- a/_lib/util/checkDefined.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.undefinedOrNull = undefinedOrNull; -exports.definedAndNotNull = definedAndNotNull; - -var _provide = require('./provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('util.checkDefined'); - -/** - * check if the input is undefined or null - * @param {*} input - input pointer - * @returns {boolean} true undefined or null - */ -/** - * Created by gavorhes on 12/11/2015. - */ -function undefinedOrNull(input) { - "use strict"; - - return typeof input === 'undefined' || input === null; -} - -nm.undefinedOrNull = undefinedOrNull; - -/** - * check if the input is defined and not null - * @param {*} input - input pointer - * @returns {boolean} true defined and not null - */ -function definedAndNotNull(input) { - "use strict"; - - return !undefinedOrNull(input); -} - -nm.definedAndNotNull = definedAndNotNull; \ No newline at end of file diff --git a/_lib/util/colors.js b/_lib/util/colors.js deleted file mode 100644 index 256b5723f7628264adffb9b86fee22b9b8ee0226..0000000000000000000000000000000000000000 --- a/_lib/util/colors.js +++ /dev/null @@ -1,194 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.rgb2hex = rgb2hex; -exports.hexAlphaToRgbOrRgba = hexAlphaToRgbOrRgba; -exports.rgbToRgba = rgbToRgba; -exports.makeBlueGreenRedGradient = makeBlueGreenRedGradient; -exports.makeBlueGreenRedGradientZScore = makeBlueGreenRedGradientZScore; - -var _provide = require('./provide'); - -var _provide2 = _interopRequireDefault(_provide); - -var _checkDefined = require('./checkDefined'); - -var chk = _interopRequireWildcard(_checkDefined); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/** - * Created by gavorhes on 11/3/2015. - */ - -var nm = (0, _provide2.default)('util.colors'); - -/** - * helper function to convert to hex - * @param {number|string} x - the number to convert to hex - * @returns {string} number as hex - * @private - */ -function _hex(x) { - var hexDigits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; - - return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16]; -} - -/** - * converts an RGB string to hex - * @param {string} rgb - rgb color - * @returns {string} rbg as hex - */ -function rgb2hex(rgb) { - var rgb1 = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); - - return ("#" + _hex(rgb1[1]) + _hex(rgb1[2]) + _hex(rgb1[3])).toUpperCase(); -} - -nm.rgb2hex = rgb2hex; - -/** - * Convert hex string to RGB or RGBA string - * @param {string} hexString - hex color string - * @param {number} [alphaVal=undefined] Alpha value - * @returns {string} - rgb or rgba color - */ -function hexAlphaToRgbOrRgba(hexString, alphaVal) { - hexString = hexString.charAt(0) == "#" ? hexString.substring(1, 7) : hexString; - var r = parseInt(hexString.substring(0, 2), 16).toString() || '0'; - var g = parseInt(hexString.substring(2, 4), 16).toString() || '0'; - var b = parseInt(hexString.substring(4, 6), 16).toString() || '0'; - if (alphaVal) { - return 'rgba(' + r + ',' + g + ',' + b + ',' + alphaVal + ')'; - } else { - return 'rgba(' + r + ',' + g + ',' + b + ')'; - } -} - -nm.hexAlphaToRgbOrRgba = hexAlphaToRgbOrRgba; - -/** - * adds alpha value to rgb string 'rgb(r, b, g)', returns 'rgba(r, g, b, a)' - * @param {string} rgb - rgb color - * @param {number} alpha - alpha value 0 to 1 - * @returns {string} rgba color - */ -function rgbToRgba(rgb, alpha) { - var pieces = rgb.split(','); - pieces[0] = pieces[0].replace('rgb', 'rgba'); - pieces[2] = pieces[2].replace(')', ''); - pieces.push(' ' + alpha.toFixed(1) + ')'); - - return pieces.join(','); -} - -nm.rgbToRgba = rgbToRgba; - -/** - * @typedef {function} colorLookupByNumber - * @param {number} num - the number to use to retrieve the color - * @returns {string} rgb color - */ - -/** - * Make a blue green red gradient - * @param {number} minVal - minimum value - * @param {number} maxVal - maximum value - * @param {boolean} flipColors - if the colors should be flipped - * @returns {colorLookupByNumber} color lookup function - */ -function makeBlueGreenRedGradient(minVal, maxVal, flipColors) { - - if (typeof flipColors != "boolean") { - flipColors = false; - } - - return function (theVal) { - var r = void 0, - g = void 0, - b = void 0; - var ratio = void 0; - - if (chk.undefinedOrNull(theVal)) { - return 'rgb(100,100,100)'; - } - - var percent = (theVal - minVal) / (maxVal - minVal); - - if (flipColors == true) { - percent = 1 - percent; - } - - if (percent >= 1) { - r = 255; - g = 0; - b = 0; - } else if (percent <= 0) { - r = 0; - g = 0; - b = 255; - } else if (percent < .25) { - // green up, blue constant - r = 0; - g = Math.floor(255 * percent / 0.25); - b = 255; - } else if (percent < 0.50) { - //blue down, green constant - ratio = (percent - 0.25) / 0.25; - r = 0; - g = 255; - b = 255 - Math.floor(255 * ratio); - } else if (percent < 0.75) { - // red up, green constant - ratio = (percent - 0.5) / 0.25; - r = Math.floor(255 * ratio); - g = 255; - b = 0; - } else { - // green down, red constant - ratio = (percent - 0.75) / 0.25; - r = 255; - g = 255 - Math.floor(255 * ratio); - b = 0; - } - - r = r.toFixed(); - g = g.toFixed(); - b = b.toFixed(); - - return 'rgb(' + r + ',' + g + ',' + b + ')'; - }; -} - -nm.makeBlueGreenRedGradient = makeBlueGreenRedGradient; - -/** - * Create a function that will return colors based on a gradient - * @param {number} median - median value - * @param {number} stdDev - standard deviation - * @param {boolean} flipColors - if the colors should be flipped - * @returns {colorLookupByNumber} color lookup function - */ -function makeBlueGreenRedGradientZScore(median, stdDev, flipColors) { - - var grd = makeBlueGreenRedGradient(-2.5, 2.5, flipColors); - - return function (theVal) { - - var zScore = void 0; - if (theVal == null) { - zScore = null; - } else { - zScore = (theVal - median) / stdDev; - } - - return grd(zScore); - }; -} - -nm.makeBlueGreenRedGradientZScore = makeBlueGreenRedGradientZScore; \ No newline at end of file diff --git a/_lib/util/dateConvert.js b/_lib/util/dateConvert.js deleted file mode 100644 index 2c6a1b204cb5b90efef71cc6bd393e9c96487998..0000000000000000000000000000000000000000 --- a/_lib/util/dateConvert.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.dateToYyyyMmDdHhMmSs = dateToYyyyMmDdHhMmSs; -exports.dateToYyyyMmDdHh000 = dateToYyyyMmDdHh000; - -var _provide = require('./provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('util.dateConvert'); /** - * Created by gavorhes on 11/4/2015. - */ - -function leadingPad(inNum) { - var strNum = inNum.toFixed(); - if (strNum.length < 2) { - strNum = '0' + strNum; - } - - return strNum; -} - -nm.leadingPad = leadingPad; - -/** - * Given a date return a string in the format YYYY-mm-dd hh:MM:SS - * @param {Date} dte to convert - * @returns {string} the formatted date string - */ -function dateToYyyyMmDdHhMmSs(dte) { - var yr = dte.getYear() + 1900; - var month = leadingPad(dte.getMonth() + 1); - var day = leadingPad(dte.getDate()); - var hrs = leadingPad(dte.getHours()); - var mns = leadingPad(dte.getMinutes()); - var secs = leadingPad(dte.getSeconds()); - - return yr + '-' + month + '-' + day + ' ' + hrs + ':' + mns + ':' + secs; -} - -nm.dateToYyyyMmDdHhMmSs = dateToYyyyMmDdHhMmSs; - -/** - * Given a date return a string in the format YYYYmmdd_hh0000 - * @param {Date} dte the input date - * @returns {string} the formatted date string - */ -function dateToYyyyMmDdHh000(dte) { - var yr = dte.getYear() + 1900; - var month = leadingPad(dte.getMonth() + 1); - var day = leadingPad(dte.getDate()); - var hrs = leadingPad(dte.getHours()); - - return '' + yr + month + day + '_' + hrs + '0000'; -} - -nm.dateToYyyyMmDdHh000 = dateToYyyyMmDdHh000; \ No newline at end of file diff --git a/_lib/util/formatString.js b/_lib/util/formatString.js deleted file mode 100644 index e7abfc4062335595d891db5c71ca091ee0ee8df7..0000000000000000000000000000000000000000 --- a/_lib/util/formatString.js +++ /dev/null @@ -1,44 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/** - * Created by gavorhes on 10/30/2015. - */ - -if (!String.prototype.format) { - /** - * helper function for string replacement to keep code clean - * usage - * var aString = 'some{0}stuff{1}replaced'; - * var c = 'cat'; - * var b = 'bird'; - * aString.format(c, b) returns 'somecatstuffbirdreplaced' - * prettier than - * 'some' + c + 'stuff' + b + 'replaced' - * but same effect - * adapted to take a single array that is used for replacement by position ie - * var arrReplacements = [c, b]; - * aString.format(arrReplacements) - * @returns {string} converted string - */ - String.prototype.format = function () { - var args = arguments; - for (var i = 0; i < args.length; i++) { - args[i] = args[i] !== null ? args[i] : ''; - } - - //if the first argument is an array, use that - if (args[0].constructor == Array) { - args = args[0]; - } - - return this.replace(/{(\d+)}/g, function (match, number) { - return typeof args[number] != 'undefined' ? args[number] : match; - }); - }; -} - -exports.default = undefined; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/util/getUrlParams.js b/_lib/util/getUrlParams.js deleted file mode 100644 index 681efda5cd05a183b918fc6ce0ad5ca4d960826f..0000000000000000000000000000000000000000 --- a/_lib/util/getUrlParams.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _provide = require('./provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('util'); - -/** - * - * @returns {object} object representation of url params - */ -/** - * Created by gavorhes on 6/23/2016. - */ -function getUrlParams() { - "use strict"; - - var match = void 0; - var pl = /\+/g; // Regex for replacing addition symbol with a space - var search = /([^&=]+)=?([^&]*)/g; - var decode = function decode(s) { - return decodeURIComponent(s.replace(pl, " ")); - }; - var query = window.location.search.substring(1); - - var urlParams = {}; - while (match = search.exec(query)) { - /** - * @type {string} - */ - var val = decode(match[2]).trim(); - - var typedVal = null; - if (val.length == 0) { - // pass - } else if (!isNaN(val)) { - if (val.indexOf('.') > -1) { - typedVal = parseFloat(val); - } else { - typedVal = parseInt(val); - } - } else if (val.toLowerCase() == 'false' || val.toLowerCase() == 'true') { - typedVal = val.toLowerCase() == 'true'; - } else { - typedVal = val; - } - urlParams[decode(match[1])] = typedVal; - } - - return urlParams; -} - -nm.getUrlParams = getUrlParams; - -exports.default = getUrlParams; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/util/makeGuid.js b/_lib/util/makeGuid.js deleted file mode 100644 index ee2e35ad41c1a1881e9bd31755c73bb88ebb0a20..0000000000000000000000000000000000000000 --- a/_lib/util/makeGuid.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _provide = require('./provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('util'); - -/** - * guids are used to uniquely identify groups and features - * @returns {string} a new guid - */ -/** - * Created by gavorhes on 11/3/2015. - */ - -function makeGuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0, - v = c == 'x' ? r : r & 0x3 | 0x8; - - return v.toString(16); - }); -} -nm.makeGuid = makeGuid; -exports.default = makeGuid; -module.exports = exports['default']; \ No newline at end of file diff --git a/_lib/util/objectHelpers.js b/_lib/util/objectHelpers.js deleted file mode 100644 index 1901a4c0dc9d1a83202db4540875d367944569a2..0000000000000000000000000000000000000000 --- a/_lib/util/objectHelpers.js +++ /dev/null @@ -1,67 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.keyValPairs = keyValPairs; - -var _provide = require('./provide'); - -var _provide2 = _interopRequireDefault(_provide); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var nm = (0, _provide2.default)('util'); - -/** - * @typedef {object} keyValuePair - * @property {string} key - * @property {object} value - */ - -/** - * iterate over the key value pairs of an object - * @param {object} obj - the input object - * @returns {Array<keyValuePair>} - array of key value pairs - */ -/** - * Created by gavorhes on 6/7/2016. - */ - -function keyValPairs(obj) { - var outArray = []; - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = Object.keys(obj)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var key = _step.value; - - outArray.push({ 'key': key, 'value': obj[key] }); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - outArray.sort(function (a, b) { - "use strict"; - - return a > b ? 1 : -1; - }); - - return outArray; -} - -nm.keyValPairs = keyValPairs; \ No newline at end of file diff --git a/_lib/util/provide.js b/_lib/util/provide.js deleted file mode 100644 index 0029bd451fddfe3d9f2cb9a6ef9e0dc2e72707a3..0000000000000000000000000000000000000000 --- a/_lib/util/provide.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/** - * Created by gavorhes on 12/10/2015. - */ - -/** - * create a namespace on the gv object - * @param {string} namespace to create - * @returns {object} object representing the namespace - */ -function provide(namespace) { - "use strict"; - - if (typeof window.gv == 'undefined') { - window.gv = {}; - } - - var parts = namespace.split('.'); - var nameSpace = window.gv; - - for (var i = 0; i < parts.length; i++) { - var newObject = nameSpace[parts[i]]; - - if (typeof newObject == 'undefined') { - nameSpace[parts[i]] = {}; - } - - nameSpace = nameSpace[parts[i]]; - } - - return nameSpace; -} - -provide('util'); -window.gv.util.provide = provide; - -exports.default = provide; -module.exports = exports['default']; \ No newline at end of file diff --git a/_src/collections/ItsLayerCollection.js b/_src/collections/ItsLayerCollection.js deleted file mode 100644 index 9c0aa67ee72adcef89a49e1903b288b7541171f5..0000000000000000000000000000000000000000 --- a/_src/collections/ItsLayerCollection.js +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Created by gavorhes on 12/14/2015. - */ - -import LayerItsInventory from '../layers/LayerItsInventory'; -import * as colors from '../util/colors'; -import provide from '../util/provide'; -let nm = provide('collections'); - -let itsConfig = [ - { - name: 'Camera', - itsType: 'cctv', - minZoom: 11, - itsIconConfig: { - prop: 'owner', - defaultName: 'WisDOT', - defaultIcon: 'cctv.png', - iconArray: [ - ['City of Madison', 'Madison', 'cctv-mad.png'] - ] - } - }, - { - name: 'Message Signs', - itsType: 'DMS', - minZoom: 11, - itsIconConfig: { - prop: 'dmsType', - defaultName: 'DMS', - defaultIcon: 'dms.png', - iconArray: [ - ['pcms', 'PCMS', 'pcms.png'] - ] - } - }, - {name: 'ATR', itsType: 'atr', minZoom: 8, itsIcon: 'atr.png', visible: false}, - {name: 'Lighting', itsType: 'light', minZoom: 16, itsIcon: 'streetlight.png', visible: false, onDemand: true}, - {name: 'Bluetooth', itsType: 'blue', minZoom: 10, itsIcon: 'bluetooth.png', visible: false}, - {name: 'Cabinets', itsType: 'cabinet', minZoom: 10, itsIcon: 'cabinet.png', visible: false}, - {name: 'Hut', itsType: 'hut', minZoom: 10, itsIcon: 'hut.png', visible: false}, - {name: 'Vault', itsType: 'vault', minZoom: 13, itsIcon: 'vault.png', visible: false}, - {name: 'Advisory Radio', itsType: 'har', minZoom: 10, itsIcon: 'har.png', visible: false}, - { - name: 'Loop Detectors', - itsType: 'loop', - legendCollapse: true, - minZoom: 14, - visible: false, - itsIconConfig: { - prop: 'dtctrType', - defaultName: 'Other', - defaultIcon: 'loopdetectorother.png', - iconArray: [ - ['detector', 'Detector', 'loopdetector.png'], - ['long', 'Long', 'loopdetectorlong.png'], - ['zone', 'Zone', 'loopdetectorzone.png'] - ] - }, - onDemand: true - }, - {name: 'Microwave', itsType: 'microwave', minZoom: 14, itsIcon: 'microwave.png', visible: false}, - {name: 'Pull Box', itsType: 'pull', minZoom: 14, itsIcon: 'pullbox.png', visible: false, onDemand: true}, - {name: 'RWIS', itsType: 'rwis', minZoom: 7, itsIcon: 'rwis.png', visible: false}, - {name: 'Ramp Gates', itsType: 'gate', minZoom: 10, itsIcon: 'rampgate.png', visible: false}, - {name: 'Ramp Meter', itsType: 'meter', minZoom: 10, itsIcon: 'rampmeter.png', visible: false}, - {name: 'Signal', itsType: 'signal', minZoom: 13, itsIcon: 'signal.png', visible: false, onDemand: true}, - {name: 'Tower', itsType: 'tower', minZoom: 10, itsIcon: 'tower.png', visible: false}, - { - name: 'Trench', - itsType: 'trench', - onDemand: true, - visible: false, - onDemandDelay: 500, - minZoom: 15, - legendCollapse: true, - itsLineConfig: { - prop: 'owner', - //defaultName: 'Other', - //defaultWidth: 7, - defaultColor: colors.hexAlphaToRgbOrRgba('#747474', 0.8), - lineArray: [ - ['WisDOT', 'WisDOT', colors.hexAlphaToRgbOrRgba('#FF032F', 0.7)], - ['WIN', 'WIN', colors.hexAlphaToRgbOrRgba('#FFC632', 0.7)], - ['USXchange', 'USXchange', colors.hexAlphaToRgbOrRgba('#2DFF46', 0.7)], - ['AT&T', 'AT&T', colors.hexAlphaToRgbOrRgba('#ff2be5', 0.7)], - ['Touch America', 'Touch America', colors.hexAlphaToRgbOrRgba('#52f3ff', 0.7)], - ['Qwest', 'Qwest', colors.hexAlphaToRgbOrRgba('#9278ff', 0.7)], - ['McLeodUSA', 'McLeodUSA', colors.hexAlphaToRgbOrRgba('#2926FF', 0.7)], - ['CINC', 'CINC', colors.hexAlphaToRgbOrRgba('#CB00FF', 0.7)], - ['City of Madison', 'Madison', colors.hexAlphaToRgbOrRgba('#000380', 0.7)] - ] - } - } - - -]; - - -class ItsLayerCollection { - - /** - * Create a collection of all ITS layers - * @param {ol.Map} theMap the openlayers map - * @param {Array} [exclude=[]] array of Its layer identifiers to exclude - * - * BLUE Bluetooth Detector - Bluetooth Detector - * CABINET Cabinets - The cabinets - * CCTV Camera - Traffic Cameras - * HUT Communication Hut - Communication Hut - * VAULT Communication Vault - The communication vaults - * HAR Highway Advisory Radio - Advisory Radios - * LIGHT Lighting - Lighting - * LOOP Loop Detectors - Loop Detectors - * DMS Message Board - Message Boards and Signs - * MICROWAVE Microwave Detector - Microwave Detectors - * PULL Pull Box - A pull box - * RWIS RWIS - Road weather information system - * GATE Ramp Gate - The ramp Gates - * METER Ramp Meter - The ramp meters - * SIGNAL Signal - Traffic Signal - * TOWER Tower - The towers - * TRENCH - */ - constructor(theMap, exclude) { - - this.map = theMap; - this._layers = []; - - exclude = typeof exclude == 'object' ? exclude : []; - - for (let i = 0; i < itsConfig.length; i++) { - let lyrConfig = itsConfig[i]; - let addLayer = true; - - for (let j = 0; j < exclude.length; j++) { - if (exclude[j] == lyrConfig.itsType) { - addLayer = false; - break; - } - } - - if (addLayer) { - let inventLyr = new LayerItsInventory(lyrConfig); - this['map'].addLayer(inventLyr.olLayer); - this._layers.push(inventLyr); - - } - } - } - - /** - * Return the array of layers in this collection - * @returns {Array<LayerItsInventory>} an array of layers - */ - get layers() { - return this._layers; - } -} - -nm.ItsLayerCollection = ItsLayerCollection; -export default ItsLayerCollection; diff --git a/_src/collections/LayerLegend.js b/_src/collections/LayerLegend.js deleted file mode 100644 index 1b4a9320597205d01f0bbef789bcb3b4e2baa27f..0000000000000000000000000000000000000000 --- a/_src/collections/LayerLegend.js +++ /dev/null @@ -1,340 +0,0 @@ -/** - * Created by gavorhes on 12/16/2015. - */ -import $ from '../jquery/jquery'; -import provide from '../util/provide'; -import makeGuid from '../util/makeGuid'; -import mapMove from '../olHelpers/mapMove'; -let nm = provide('collections'); - -class LayerGroup { - - /** - * - * @param {object} [groupConfig={}] - group configuration object - * @param {string} groupConfig.groupName - the group name - * @param {boolean} [groupConfig.collapse=false] - if the group should be collapsed initially - * @param {boolean} [groupConfig.addCheck=true] - if the group should have a checkbox controlling visibility of all layers - * @param {LayerGroup} [parent=undefined] - the parent group - */ - constructor(groupConfig, parent) { - this.groupLayers = []; - this.groupLayersLookup = {}; - this.groupGroups = []; - this.groupGroupsLookup = {}; - this.itemIdArray = []; - - if (typeof groupConfig == 'undefined') { - this.parent = null; - this.groupId = 'root'; - this.groupName = 'root'; - this.allGroupLookup = {root: this}; - this.allGroupArray = [this]; - this.allLayerArray = []; - this.allLayerLookup = {}; - this.layerParentLookup = {}; - this.collapse = false; - this.addCheck = false; - } else { - this.groupId = makeGuid(); - this.parent = parent; - this.groupName = groupConfig.groupName; - this.collapse = typeof groupConfig.collapse == 'boolean' ? groupConfig.collapse : false; - this.addCheck = typeof groupConfig.addCheck == 'boolean' ? groupConfig.addCheck : true; - } - } - - /** - * - * @param {object} groupConfig - configuration object - * @param {string} groupConfig.groupName - the group name - * @param {boolean} groupConfig.collapse if the group should be collapsed initially - * @param {boolean} groupConfig.addCheck if the group should have a checkbox controlling visibility of all layers - * @param {Array<LayerGroup>} parents parent groups - * @returns {LayerGroup} the layer group just added - */ - addGroup(groupConfig, parents) { - let parent; - if (parents.length > 0) { - parent = parents[parents.length - 1]; - } else { - parent = 'root'; - } - - - /** - * @type {LayerGroup} - */ - let parentGroup = this.allGroupLookup[parent]; - let newGroup = new LayerGroup(groupConfig, parentGroup); - this.allGroupLookup[newGroup.groupId] = newGroup; - this.allGroupArray.push(newGroup); - - parentGroup.groupGroups.push(newGroup); - parentGroup.groupGroupsLookup[newGroup.groupId] = newGroup; - - if (parentGroup.itemIdArray.indexOf(newGroup.groupId) > 0) { - console.log(newGroup.groupId); - throw 'layer and group ids must be unique'; - } - parentGroup.itemIdArray.push(newGroup.groupId); - - return newGroup; - } - - /** - * - * @param {LayerBase} newLayer the layer to be added - * @param {Array} parents array - */ - addLegendLayer(newLayer, parents) { - let parent; - if (parents.length > 0) { - parent = parents[parents.length - 1]; - } else { - parent = 'root'; - } - - this.allLayerLookup[newLayer.id] = newLayer; - this.allLayerArray.push(newLayer); - - /** - * @type {LayerGroup} - */ - let parentGroup = this.allGroupLookup[parent]; - - parentGroup.groupLayers.push(newLayer); - parentGroup.groupLayersLookup[newLayer.id] = newLayer; - if (parentGroup.itemIdArray.indexOf(newLayer.id) > 0) { - console.log(newLayer.id); - throw 'layer and group ids must be unique'; - } - parentGroup.itemIdArray.push(newLayer.id); - - this.layerParentLookup[newLayer.id] = parentGroup; - - } - - getLegendHtml(legendId, options) { - - - let legendHtml = `<ul id="${legendId}" class="legend-container">`; - - legendHtml += `<li>${options.legendTitle}<input type="checkbox" checked id="suppress-by-extent-${legendId}" class="suppress-by-extent">` + - `<label title="Suppress layers not visible at this zoom level" for="suppress-by-extent-${legendId}">` + - `<span></span>` + - `</label></li>`; - - legendHtml += this._buildLegend(this.itemIdArray, this, options.layerDivClasses) + '</ul>'; - - return legendHtml; - } - - /** - * @param {Array} itemIds the items to process - * @param {LayerGroup} theGroup new group - * @param {Array} [layerDivClasses=[]] optional classes to apply to the layer divs - * @static - * @returns {string} html string - */ - _buildLegend(itemIds, theGroup, layerDivClasses) { - - if (itemIds.length == 0) { - return ''; - } - - let theHml = ''; - - let itemId = itemIds[0]; - - if (theGroup.groupLayersLookup[itemId]) { - - /** - * @type {LayerBase} - */ - let lyr = theGroup.groupLayersLookup[itemId]; - theHml += `<li id="${lyr.id}-layer-li" class="legend-layer-li ${layerDivClasses.join(' ')}">` + lyr.getLegendDiv() + '</li>'; - - - } else if (theGroup.groupGroupsLookup[itemId]) { - /** - * type {LayerGroup} - */ - let otherGroup = theGroup.groupGroupsLookup[itemId]; - - theHml += `<li>`; - theHml += `<div id="${otherGroup.groupId}-legend-layer-div" ` + - `class="legend-layer-group ${layerDivClasses.join(' ')}">`; - - if (otherGroup.addCheck) { - theHml += `<input type="checkbox" checked id="${otherGroup.groupId}-group-chck">` + - `<label for="${otherGroup.groupId}-group-chck" title="Click arrow to expand or collapse">${otherGroup.groupName}</label>`; - } else { - theHml += `<label title="Click arrow to expand or collapse">${otherGroup.groupName}</label>`; - } - - theHml += `<span title="Expand/Collapse" class="layer-group-expander`; - theHml += `${otherGroup.collapse ? ' legend-layer-group-initial-collapse' : ''}">`; - theHml += otherGroup.collapse ? '▶' : '▼'; - theHml += '</span>'; - - //parents.push(groupId); - theHml += '<ul>' + this._buildLegend(otherGroup.itemIdArray, otherGroup, layerDivClasses) + '</ul>'; - theHml += '</div>'; - theHml += '</li>'; - } - - return theHml + this._buildLegend(itemIds.slice(1), theGroup, layerDivClasses); - } -} - -/** - * a wrapper to make a legend - */ -class LayerLegend { - - /** - * - * @param {Array} legendItems array of layers or objects with {groupName: {string}, collapse: {boolean}, addCheck: {boolean}, items: {Array}} - * @param {string} divId the div where the legend should be added - * @param {object} options for legend - * @param {Array} [options.layerDivClasses=[]] optional array of classes to be applied to the layer legend divs for custom styling - * @param {string} [options.legendTitle=Legend] the legend title - * @param {bool} [options.scaleDependent=true] if legend display is scale dependent - */ - constructor(legendItems, divId, options) { - for (let i of legendItems) { - if (typeof i == 'undefined') { - throw 'undefined item passed in array to legend constructor'; - } - } - - options = options || {}; - - options.legendTitle = typeof options.legendTitle == 'string' ? options.legendTitle : 'Legend'; - options.scaleDependent = typeof options.scaleDependent == 'boolean' ? options.scaleDependent : true; - options.layerDivClasses = options.layerDivClasses || []; - - // if legend display is scale dependent, make sure the mapMove object is initialized first - if (options.scaleDependent) { - mapMove.checkInit(); - } - - this.$divElement = $('#' + divId); - - this._legendItems = legendItems; - - this.layerGroup = new LayerGroup(); - - this._buildTree(legendItems); - - this.legendId = makeGuid(); - - this.$divElement.append(this.layerGroup.getLegendHtml(this.legendId, options)); - - for (let l of this.layerGroup.allLayerArray){ - l.applyCollapse(); - } - - let _this = this; - - //// if legend display is scale dependent, make sure the mapMove object is initialized first - if (options.scaleDependent) { - mapMove.checkInit(); - - mapMove.addCallback(function (ext, zoom, evt) { - if (typeof evt == 'undefined' || evt == 'change:resolution') { - for (let lyr of this.layerGroup.allLayerArray) { - let $lyrLi = $('#' + lyr.id + '-layer-li'); - if (zoom > lyr.maxZoom || zoom < lyr.minZoom) { - $lyrLi.addClass('layer-not-visible'); - } else { - $lyrLi.removeClass('layer-not-visible'); - } - } - } - }, this, 100, true, 'legend1'); - } - - // <editor-fold desc="add event listeners"> - - this.$divElement.find(".suppress-by-extent").change(function () { - let legendLayerLis = $('.legend-layer-li'); - if (this.checked) { - legendLayerLis.removeClass('layer-force-show'); - } else { - legendLayerLis.addClass('layer-force-show'); - } - }); - - - this.$divElement.find('.legend-check').change(function () { - let lyrId = this.id.replace('-legend-layer-check', ''); - _this.layerGroup.allLayerLookup[lyrId].visible = this.checked; - }); - - this.$divElement.find('.legend-layer-group > input[type=checkbox]').change(function () { - $(this).siblings('ul').find('input[type=checkbox]').prop('checked', this.checked).trigger('change'); - }); - - this.$divElement.find('.layer-group-expander').click(function () { - let $this = $(this); - $this.removeClass('legend-layer-group-initial-collapse'); - - $this.siblings('ul').slideToggle(); - - if ($this.hasClass('legend-layer-group-collapsed')){ - $this.removeClass('legend-layer-group-collapsed'); - $this.html('▼'); - } else { - $this.addClass('legend-layer-group-collapsed'); - $this.html('▶'); - } - }); - - this.$divElement.find('.legend-layer-group-initial-collapse').trigger('click'); - // </editor-fold> - } - - /** - * @param {Array} [legendItems=this._layerConfig] the legend items - * @param {Array} [parents=[]] the ordered list of groups in which this item is a member - * @private - */ - _buildTree(legendItems, parents) { - - if (legendItems.length == 0) { - return; - } - - let oneItem = legendItems[0]; - - //reset the parent if the item is in the base array - if (this._legendItems.indexOf(oneItem) > -1 || typeof parents == 'undefined') { - parents = []; - } - - if (typeof oneItem['groupName'] !== 'undefined') { - let groupItem = legendItems[0]; - let newGroup = this.layerGroup.addGroup(groupItem, parents); - parents.push(newGroup.groupId); - this._buildTree(groupItem.items, parents); - } else { - /** - * @type {LayerBase} - */ - let layerItem = legendItems[0]; - - this.layerGroup.addLegendLayer(layerItem, parents); - } - - this._buildTree(legendItems.slice(1), parents); - } - - set showAll(val) { - - } -} - -nm.LayerLegend = LayerLegend; -export default LayerLegend; diff --git a/_src/collections/Sliders.js b/_src/collections/Sliders.js deleted file mode 100644 index 04e7757f6483964bd977d81e8d068a5b24ce02fc..0000000000000000000000000000000000000000 --- a/_src/collections/Sliders.js +++ /dev/null @@ -1,536 +0,0 @@ -/** - * Created by gavorhes on 12/10/2015. - */ -import provide from '../util/provide'; -let nm = provide('collections'); -import $ from '../jquery/jquery'; - -class _Slider { - - /** - * Slider constructor - * @param {string} name - the slider name - * @param {Array} selections - the selection - * @param {number} wgt - weight - * @param {boolean} selected - if selected - */ - constructor(name, selections, wgt, selected) { - //let _this = this; - this.name = name; - this.domId = name.toLowerCase().replace(/ /g, '-'); - this._weight = wgt; - this._weightDefault = this._weight; - - this.selectedParam = null; - this.selectedParamDefault = null; - - this._locked = false; - - this._min = 0.0; - this._max = 100; - - this.labelLow = null; - this.labelHigh = null; - this.labelVal = null; - this.slider = null; - this.chk = null; - - this.atMin = this._weight == this._min; - this.atMax = this._weight == this._max; - - - let sel = `<select class="${selections.length == 1 ? 'hidden-select' : 'show-select'}" id="${this.domId}_chg">`; - for (let i = 0; i < selections.length; i++) { - let itm = selections[i][0]; - let itmSelected = itm === selected; - - sel += `<option value="${itm}" ${itmSelected ? ' selected="selected"' : ''}>${selections[i][1]}</option>`; - if (itmSelected) { - this.selectedParam = itm; - } - } - sel += '</select>'; - - this.selectedParamDefault = this.selectedParam; - - this.html = '<div class="slider-div">' + - `<label for="${this.domId}_chk" class="slider-label">${this.name}</label>` + - sel + `<br>` + - `<input id="${this.domId}_chk" type="checkbox" title="Lock/Unlock Slider">` + - `<label id="${this.domId}_low" class="low-high">${this._min.toFixed(1)}</label>` + - `<input id="${this.domId}" type="range" value="${this._weight.toFixed(1)}" min="0" max="100" step="0.1">` + - `<label id="${this.domId}_high" class="low-high">${this._max.toFixed(1)}</label>` + - `<label id="${this.domId}_lbl" for="${this.domId}" class="percent-label">${this._weight.toFixed(1)}%</label></div>`; - } - - /** - * add html to dom - * @param {jQuery} $container - container element - */ - addToDom($container) { - $container.append(this.html); - this.labelLow = $(`#${this.domId}_low`); - this.labelHigh = $(`#${this.domId}_high`); - this.labelVal = $(`#${this.domId}_lbl`); - this.slider = $(`#${this.domId}`); - this.selectionBox = $(`#${this.domId}_chg`); - this.chk = $(`#${this.domId}_chk`); - } - - /** - * increment the slider - * @param {number} delta change delta - * @returns {number} the remainder not able to be allocated to this slider - */ - increment(delta) { - let remainder = 0; - delta = Number(delta.toFixed(1)); - - this._weight += delta; - if (this._weight < this._min) { - remainder = this._min - this._weight; - this._weight = this._min; - this.atMin = true; - } else if (this._weight > this._max) { - remainder = this._max - this._weight; - this._weight = this._max; - this.atMax = true; - } else { - this.atMin = false; - this.atMax = false; - } - - this.slider.val(this._weight.toFixed(1)); - this.labelVal.html(this._weight.toFixed(1) + '%'); - - return remainder; - } - - /** - * reset to the original values - */ - reset() { - this.weight = this._weightDefault; - this.slider.val(this._weightDefault.toFixed(1)); - this.selectionBox.val(this.selectedParamDefault); - this.chk.attr('checked', false); - //let event = new CustomEvent('change'); - //this.chk[0].dispatchEvent(event); - } - - /** - * set the value and drop down - * @param {number} newVal the new value - * @param {string} selectedParam the selected parameter - */ - setValAndDropDown(newVal, selectedParam) { - this.weight = newVal; - this.min = 0; - this.max = 100; - this.slider.val(newVal.toFixed(1)); - this.selectionBox.val(selectedParam); - this.selectedParam = selectedParam; - this.locked = true; - } - - /** - * - * @returns {boolean} if locked - */ - get locked() { - return this._locked; - } - - /** - * - * @param {boolean} val if locked - */ - set locked(val) { - this._locked = val; - this.slider.prop('disabled', this._locked); - this.selectionBox.prop('disabled', this._locked); - this.chk.prop('checked', !this._locked); - } - - /** - * - * @returns {number} the minimum - */ - get min() { - return this._min; - } - - /** - * - * @param {number} newVal new minimum - */ - set min(newVal) { - this._min = Number(newVal.toFixed(1)); - if (this._min < 0) { - this._min = 0; - } - this.labelLow.html(this._min.toFixed(1)); - this.slider.attr('min', this._min.toFixed(1)); - this.atMin = this._weight == this._min; - } - - /** - * - * @returns {number} the maximum - */ - get max() { - return this._max; - } - - /** - * - * @param {number} newVal the maximum - */ - set max(newVal) { - this._max = Number(newVal.toFixed(1)); - if (this._max > 100) { - this._max = 100.0; - } - this.labelHigh.html(this._max.toFixed(1)); - this.slider.attr('max', this._max.toFixed(1)); - this.atMax = this._weight == this._max; - } - - /** - * - * @returns {number} the weight - */ - get weight() { - return this._weight; - } - - /** - * - * @param {number} newVal the weight - */ - set weight(newVal) { - this._weight = Number(newVal.toFixed(1)); - this.labelVal.html(this._weight.toFixed(1) + '%'); - if (this._weight <= this._min) { - this.atMin = true; - this.atMax = false; - } else if (this._weight >= this._max) { - this.atMin = false; - this.atMax = true; - } else { - this.atMin = false; - this.atMax = false; - } - } -} - -nm._Slider = _Slider; - -/** - * class to make a slider group - */ -class Sliders { - /** - * - * @param {Array} paramList list of parameters - * @param {string} divId the div id - */ - constructor(paramList, divId) { - this.resetting = false; - this._slideFinishedFunctions = []; - this.reservedPercent = 0.0; - this.$container = $('#' + divId); - this.$container.addClass('slider-container'); - - this.sliderList = []; - this.sliderLookup = {}; - - this.total = 0; - - for (let i = 0; i < paramList.length; i++) { - let p = paramList[i]; - - let sld = new _Slider(p[0], p[1], p[2], p[3]); - this.sliderList.push(sld); - this.sliderLookup[sld.domId] = sld; - sld.addToDom(this.$container); - this.total += sld._weight; - } - - if (this.total != 100) { - alert('total not equal to 100'); - } - - this.lockedList = []; - this.inRangeList = []; - this.atMinList = []; - this.atMaxList = []; - - this.lockedCount = 0; - this.notLockedCount = 0; - - this._splitSliderArray(); - this._addEventListeners(); - - } - - addSlideFinishedFunction (finishedFunction){ - this._slideFinishedFunctions.push(finishedFunction); - } - - /** - * split array into subarrays holding the sliders - * @private - */ - _splitSliderArray() { - this.lockedList = []; - this.inRangeList = []; - this.atMinList = []; - this.atMaxList = []; - - for (let i = 0; i < this.sliderList.length; i++) { - let sld = this.sliderList[i]; - - if (sld.locked) { - this.lockedList.push(sld); - } else if (sld.atMin) { - this.atMinList.push(sld); - } else if (sld.atMax) { - this.atMaxList.push(sld); - } else { - this.inRangeList.push(sld); - } - } - this.lockedCount = this.lockedList.length; - this.notLockedCount = this.sliderList.length - this.lockedCount; - } - - /** - * handle remainder, recursive to take care of min max overshoots - * @param {number} remain the remainder - * @param {string} skipDomId - this dom id - * @private - */ - _handleRemainder(remain, skipDomId) { - - remain = Number(remain.toFixed(1)); - if (remain == 0) { - return; - } - - this._splitSliderArray(); - - let canChangeArray = []; - for (let i = 0; i < this.inRangeList.length; i++) { - let sld = this.inRangeList[i]; - if (sld.domId == skipDomId) { - continue; - } - canChangeArray.push(sld); - } - - if (remain > 0) { - for (let i = 0; i < this.atMaxList.length; i++) { - let sld = this.atMaxList[i]; - if (sld.domId == skipDomId) { - continue; - } - canChangeArray.push(sld); - } - } else { - for (let i = 0; i < this.atMinList.length; i++) { - let sld = this.atMinList[i]; - if (sld.domId == skipDomId) { - continue; - } - canChangeArray.push(sld); - } - } - - if (canChangeArray.length == 0) { - return; - } - - let inc = -1 * Number((remain / canChangeArray.length).toFixed(1)); - - let newRemainder = 0; - for (let i = 0; i < canChangeArray.length; i++) { - newRemainder += canChangeArray[i].increment(inc); - } - - this._handleRemainder(newRemainder, skipDomId); - } - - /** - * reset all - */ - reset() { - this.resetting = true; - for (let i = 0; i < this.sliderList.length; i++) { - let sld = this.sliderList[i]; - sld.reset(); - } - this.resetting = false; - - if (this._slideFinishedFunctions != null) { - this._slideFinishedFunctions(); - } - } - - /** - * - * @param {object} keyValList key and value list - */ - setValues(keyValList) { - this.resetting = true; - for (let k in keyValList) { - if (keyValList.hasOwnProperty(k)) { - this.sliderLookup[k].setValAndDropDown(keyValList[k][0], keyValList[k][1]); - } - } - this.resetting = false; - } - - /** - * get the weight sum - * @returns {number} the weight sum - */ - getSum () { - let total = 0; - for (let i = 0; i < this.sliderList.length; i++) { - let sld = this.sliderList[i]; - total += Number(sld.weight.toFixed(1)); - } - - return total; - } - - /** - * get the parameter weights - * @returns {object} lookup with parameter weights - */ - getParams () { - let paramWeights = {}; - for (let i = 0; i < this.sliderList.length; i++) { - let sld = this.sliderList[i]; - paramWeights[sld.selectedParam] = Number(sld.weight.toFixed(1)); - } - - return paramWeights; - } - - _addEventListeners() { - let _this = this; - - //change function - this.$container.find('input[type="range"]').change(function () { - if (_this.resetting) { - return; - } - - let $this = $(this); - let domId = this['id']; - let sldr = _this.sliderLookup[domId]; - - let newValue = parseFloat($this.val()); - - let oldValue = sldr.weight; - let diff = newValue - oldValue; - diff = Number(diff.toFixed(1)); - - sldr.weight = Number(newValue.toFixed(1)); - - _this._handleRemainder(diff, domId); - - //cleanup, make sure the sum is still 100 - let sum = Number(_this.getSum().toFixed(1)); - - if (sum > 100) { - loop1: - while (true) { - for (let i = 0; i < _this.sliderList.length; i++) { - let sld = _this.sliderList[i]; - if (sld.domId == domId || sld.locked || sld.atMin) { - continue; - } - sld.increment(-0.1); - sum -= 0.1; - if (sum.toFixed(1) == '100.0') { - break loop1; - } - } - } - } else if (sum < 100) { - loop1: - while (true) { - for (let i = 0; i < _this.sliderList.length; i++) { - let sld = _this.sliderList[i]; - if (sld.domId == domId || sld.locked || sld.atMax) { - continue; - } - sld.increment(0.1); - sum += 0.1; - if (sum.toFixed(1) == '100.0') { - break loop1; - } - } - } - } - - for (let i = 0; i < _this._slideFinishedFunctions.length; i++) { - _this._slideFinishedFunctions[i](); - } - } - ); - - //update the selected parameter when the selection is changed - $('.show-select').change(function () { - if (_this.resetting) { - return; - } - _this.sliderLookup[this['id'].replace('_chg', '')].selectedParam = $(this).val(); - }); - - //lock the slider and update the reserved percent - this.$container.find('input[type="checkbox"]').change(function () { - let domEl = this; - - _this.sliderLookup[domEl.id.replace('_chk', '')].locked = !domEl.checked; - _this.reservedPercent = 0.0; - _this.notLockedCount = 0; - - let notLockedSliders = []; - - for (let i = 0; i < _this.sliderList.length; i++) { - let sld = _this.sliderList[i]; - if (sld.locked) { - _this.reservedPercent += sld.weight; - continue; - } - notLockedSliders.push(sld); - _this.notLockedCount++; - } - - for (let i = 0; i < _this.sliderList.length; i++) { - let sld = _this.sliderList[i]; - if (sld.locked) { - continue; - } - sld.max = 100 - _this.reservedPercent; - } - - if (notLockedSliders.length == 1) { - notLockedSliders[0].min = notLockedSliders[0].weight; - } else { - for (let i = 0; i < notLockedSliders.length; i++) { - notLockedSliders[i].min = 0; - } - } - }); - - } -} - -nm.Sliders = Sliders; -window.gv['collections'].Sliders = Sliders; -export default Sliders; diff --git a/_src/domUtil/SelectBoxBase.js b/_src/domUtil/SelectBoxBase.js deleted file mode 100644 index 1a23b15096a1d122010679f8766e814c31e4f36d..0000000000000000000000000000000000000000 --- a/_src/domUtil/SelectBoxBase.js +++ /dev/null @@ -1,124 +0,0 @@ -/** - * Created by gavorhes on 5/13/2016. - */ -/** - * Created by gavorhes on 5/12/2016. - */ -import makeGuid from 'webmapsjs/src/util/makeGuid'; -import provide from 'webmapsjs/src/util/provide'; -const nm = provide('ssa.select'); - - -class SelectBoxBase{ - - /** - * - * @param {jQuery} parent - parent container - * @param {string} labelContent - * @param {contentGenFunc} [contentGen=undefined] - */ - constructor(parent, labelContent, contentGen){ - let guidTop = makeGuid(); - let guid = makeGuid(); - - let htmlString = `<div id="${guidTop}">`; - htmlString += `<label for="${guid}">${labelContent}</label>`; - - if (contentGen){ - htmlString += contentGen(guid); - } else { - htmlString += `<select id="${guid}"></select>`; - } - htmlString += '</div>'; - - parent.append(htmlString); - - this._$container = parent.find('#' + guidTop); - - this.$label = this._$container.find('label'); - - /** - * - * @type {Array<changeListener>} - * @private - */ - this._changeListeners = []; - - /** - * reference to the selector box - * @protected - * @type {jQuery} - */ - this._box = parent.find(`#${guid}`); - - if (!this._box){ - throw 'the select box was not found'; - } - - this._box.change(() => { - this.changed(); - }) - } - - /** - * - * @returns {jQuery} - */ - get box(){ - return this._box; - } - - changed(){ - let v = this._box.val(); - - for (let f of this._changeListeners){ - f(v); - } - } - - /** - * - * @param {changeListener} func - */ - addChangeListener(func){ - this._changeListeners.push(func); - } - - /** - * - * @returns {string|number} - */ - get selectedValue(){ - let theVal = this.box.val(); - - if (theVal == null || typeof theVal == 'undefined'){ - return null; - } else if (isNaN(theVal)){ - return theVal - } else { - if (theVal.indexOf('.') > -1){ - return parseFloat(theVal) - } else { - return parseInt(theVal); - } - } - } - - /** - * - * @param {string|number} v - * @protected - */ - set selectedValue(v){ - this.box.val(v); - } - - get selectedText(){ - return this.box.find('option:selected').text(); - } - -} - -nm.SelectBoxBase = SelectBoxBase; - -export default SelectBoxBase; diff --git a/_src/gulp-helpers.js b/_src/gulp-helpers.js deleted file mode 100644 index b5f91c5478fee5083dd00729a867711667cef5e0..0000000000000000000000000000000000000000 --- a/_src/gulp-helpers.js +++ /dev/null @@ -1,168 +0,0 @@ -/** - * Created by gavorhes on 5/10/2016. - * Helpers functions for gulp tasks - */ - -const gulp = require('gulp'); -const babel = require('gulp-babel'); -const babelify = require('babelify'); -const browserify = require('browserify'); -const buffer = require('vinyl-buffer'); -const source = require('vinyl-source-stream'); -const sourcemaps = require('gulp-sourcemaps'); -const minify = require('gulp-minify'); -const less = require('gulp-less'); -const cssmin = require('gulp-cssmin'); -const rename = require('gulp-rename'); -const glob = require('glob'); -const watchify = require('watchify'); -const gulpUtil = require('gulp-util'); - - -/** - * @typedef {object} dirNameFilePath - * @property {string} dirName - directory name - * @property {string} fileName - file name - */ - -/** - * get directory and file name from output path - * @param {string} outputFile - output file path - * @returns {dirNameFilePath} file directory and path - * @private - */ -function _processOutDir(outputFile) { - "use strict"; - - let pathParts = outputFile.split('/'); - let outFileName = pathParts[pathParts.length - 1]; - pathParts.splice(pathParts.length - 1, 1); - let outDir = pathParts.length === 0 ? '.' : pathParts.join('/'); - - return {dirName: outDir, fileName: outFileName}; -} - -/** - * - * @param {string} inputFile - input file set to null to bundle everything in 'test' directory - * @param {dirNameFilePath|string} outFile - output file as string or path object - * @param {boolean} [production=false] if production, minify and don't watch - * @returns {*} the stream - * @private - */ -export function bundleEs2015(inputFile, outFile, production) { - "use strict"; - - - - if (typeof outFile == 'string') { - outFile = _processOutDir(outFile); - } - - production = typeof production == 'boolean' ? production : false; - - if (inputFile.indexOf('*') > -1) { - inputFile = glob.sync(inputFile); - } - - - let bundler = browserify({ - entries: inputFile, - cache: {}, - packageCache: {}, - debug: true - }); - - - bundler.transform(babelify.configure({ - presets: ["es2015"], - ignore: /ol\-build\.js|jquery\.min/ - // ignore: /ol\-build\.js|jquery\.min|\/node_modules\/(?!webmapsjs\/)|\/node_modules\/webmapsjs\/(?!lib\/)/ - })); - - if (!production) { - bundler = watchify(bundler); - } - - - function runBundle() { - console.log(inputFile); - let stream = bundler.bundle() - .on('error', function (err) { - console.error(err); - }) - .pipe(source(outFile.fileName)) - .pipe(buffer()) - .pipe(sourcemaps.init({loadMaps: true})); - - if (production) { - stream = stream.pipe(minify({ - ext: { - src: '-debug.js', - min: '.js' - }, - exclude: ['tasks'], - ignoreFiles: ['.combo.js', '-min.js'] - })); - } - - return stream.pipe(sourcemaps.write('./')).pipe(gulp.dest(outFile.dirName)); - } - - if (!production) { - bundler.on('update', runBundle); - bundler.on('log', gulpUtil.log); - } - - return runBundle(); -} - - -/** - * convert less file - * @param {string} inputFile - input less file - * @param {string} outputFile - output css file - * @returns {*} stream - */ -export function processLessFile(inputFile, outputFile) { - "use strict"; - - let pathParts = outputFile.split('/'); - let outFileName = pathParts[pathParts.length - 1]; - pathParts.splice(pathParts.length - 1, 1); - let outDir = pathParts.length === 0 ? '.' : pathParts.join('/'); - - let fileNameParts = outFileName.split('.'); - - return gulp.src(inputFile) - .pipe(less().on('error', function (err) { - console.log(err); - })) - .pipe(cssmin().on('error', function (err) { - console.log(err); - })) - .pipe(rename({ - basename: fileNameParts[0], - extname: '.' + fileNameParts[1], - suffix: '.min' - })) - .pipe(gulp.dest(outDir)); -} - -/** - * make multiple bundles - * @param {Array<Array<string>>} fileArray - array with elements [input file, output file] - * @param {boolean} production - if is production - * @returns {*} output stream - */ -export function bundleEs2015Multiple(fileArray, production) { - "use strict"; - - let outStream = undefined; - - for (let f of fileArray) { - outStream = bundleEs2015(f[0], f[1], production); - } - - return outStream; -} diff --git a/_src/jquery-plugin/animate-buttons.js b/_src/jquery-plugin/animate-buttons.js deleted file mode 100644 index c5fcecda6d7f88811c3e132f5d8de40ce8e22907..0000000000000000000000000000000000000000 --- a/_src/jquery-plugin/animate-buttons.js +++ /dev/null @@ -1,236 +0,0 @@ - - -/** - * Created by gavorhes on 11/2/2015. - */ - -import $ from '../jquery/jquery'; -import provide from '../util/provide'; -import {} from './range-change'; - - -let nm = provide('jQueryPlugin'); - -/** - * @callback mediaCallback - * @param {number} tm - */ - -function timeToLocalDateString(tm) { - "use strict"; - let d = new Date(tm); - let p1 = d.toLocaleTimeString().split(' '); - let p2 = p1[0].split(':'); - p2 = p2.slice(0, 2); - - return d.toLocaleDateString() + '<br>' + p2.join(':') + ' ' + p1[1]; -} - - -class MediaControl { - constructor(jQueryElement, min, max, val, step, func, playInterval, dateFormat) { - - this._container = jQueryElement; - this._playInterval = playInterval; - this._interval = undefined; - this._func = func; - - this._dateFormat = dateFormat; - - this._currentValue = undefined; - this._min = undefined; - this._max = undefined; - this._step = undefined; - this._playing = false; - - let htmlStr = - '<span class="media-player-button media-back"></span>' + - '<span class="media-player-button media-play"></span>' + - '<span class="media-player-button media-pause media-disabled"></span>' + - '<span class="media-player-button media-stop media-disabled" ></span>' + - '<span class="media-player-button media-ahead"></span>' + - `<input type="range">` + - `<div class="media-control-value-label-container">` + - `<span class="media-control-value-label-min"></span>` + - `<span class="media-control-value-label-val"></span>` + - `<span class="media-control-value-label-max"></span>` + - `</div>`; - - this._container.append(htmlStr); - - let btnPause = this._container.find('.media-pause'); - let btnPlay = this._container.find('.media-play'); - this._$btnStop = this._container.find('.media-stop'); - let btnAhead = this._container.find('.media-ahead'); - let btnBack = this._container.find('.media-back'); - this._$slider = this._container.find('input[type=range]'); - - this._$valLabelMin = this._container.find('.media-control-value-label-min'); - this._$valLabelVal = this._container.find('.media-control-value-label-val'); - this._$valLabelMax = this._container.find('.media-control-value-label-max'); - - this.setMinMaxValueStep(min, max, val, step); - - - let _this = this; - - this._$slider.rangeChange(function (newVal, ratio, evt) { - _this.currentValue = newVal; - }, 100); - - btnPlay.click(function () { - let $this = $(this); - $this.addClass('media-disabled'); - _this._$btnStop.removeClass('media-disabled'); - btnAhead.addClass('media-locked'); - btnBack.addClass('media-locked'); - _this._$slider.prop('disabled', true); - _this._playing = true; - - _this._interval = setInterval(function () { - _this.currentValue += _this._step; - }, _this._playInterval); - }); - - this._$btnStop.click(function () { - clearInterval(_this._interval); - let $this = $(this); - $this.addClass('media-disabled'); - btnPlay.removeClass('media-disabled'); - btnAhead.removeClass('media-locked'); - btnBack.removeClass('media-locked'); - _this._$slider.prop('disabled', false); - _this._playing = false; - }); - - btnAhead.click(function () { - _this.currentValue = _this.currentValue + _this._step; - }); - - btnBack.click(function () { - _this.currentValue = _this.currentValue - _this._step; - }); - } - - stopPlaying(){ - if (this._playing){ - this._$btnStop.trigger('click'); - } - } - - get playing(){ - return this._playing; - } - - get min() { - return this._min; - } - - get max() { - return this._max; - } - - get step() { - return this._step; - } - - get currentValue() { - return this._currentValue; - } - - set currentValue(newValue) { - if (newValue > this._max) { - newValue = this._min; - } else if (newValue < this._min) { - newValue = this._max; - } - this._currentValue = newValue; - this._$slider.val(this._currentValue.toFixed(2)); - - if (this._dateFormat) { - this._$valLabelVal.html(timeToLocalDateString(this.currentValue)); - } else { - this._$valLabelVal.html(this.currentValue.toString()); - } - - this._func(newValue); - } - - /** - * set min and max value with step - * @param {number} newMin the new min - * @param {number} newMax the new mas - * @param {number} [newValue=newMin] the value to set - * @param {number} [newStep=(newMax-newMin)/20] step value - */ - setMinMaxValueStep(newMin, newMax, newValue, newStep) { - this._min = newMin; - this._max = newMax; - - newValue = typeof newValue == 'number' ? newValue : newMin; - newStep = typeof newStep == 'number' ? newStep : (newMax-newMin)/20; - - this._currentValue = newValue; - this._step = newStep; - - this._$slider.prop('min', this.min.toString()); - this._$slider.prop('max', this.max.toString()); - this._$slider.prop('step', this.step.toString()); - this._$slider.val(this.currentValue.toString()); - - if (this._dateFormat) { - this._$valLabelMin.html(timeToLocalDateString(this._min)); - this._$valLabelVal.html(timeToLocalDateString(this.currentValue)); - this._$valLabelMax.html(timeToLocalDateString(this._max)); - } else { - this._$valLabelMin.html(this._min.toString()); - this._$valLabelVal.html(this.currentValue.toString()); - this._$valLabelMax.html(this._max.toString()); - } - } - - /** - * - * @param {mediaCallback} newFunc the callback on change - */ - set changeFunction(newFunc) { - this._func = newFunc; - } -} - -nm.MediaControl = MediaControl; - - -/** - * Adds a media control to a container - * @param {number} [min=0] the min - * @param {number} [max=100] the max - * @param {number} [val=0] the val - * @param {number} [step=1] the step - * @param {mediaCallback} [func=function (n) {console.log('default function', n);}] media change callback function - * @param {number} [playInterval=500] play interval - * @param {boolean} [dateFormat=false] date format - * @this {jQuery} - * @returns {MediaControl} the Media control object - */ -$.fn.mediaControl = function (min, max, val, step, func, playInterval, dateFormat) { - - min = typeof min == 'number' ? min : 0; - max = typeof max == 'number' ? max : 100; - val = typeof val == 'number' ? val : 0; - step = typeof step == 'number' ? step : 1; - func = typeof func == 'function' ? func : function (n) { - console.log('default function', n); - }; - - playInterval = typeof playInterval == 'number' ? playInterval : 500; - dateFormat = typeof dateFormat == 'boolean' ? dateFormat : false; - - this.addClass('media-control-container'); - - return new MediaControl(this, min, max, val, step, func, playInterval, dateFormat); -}; - - - -export default undefined; diff --git a/_src/jquery-plugin/day-range.js b/_src/jquery-plugin/day-range.js deleted file mode 100644 index af416ea9ee5e3b7433882693e2347b4f214624c8..0000000000000000000000000000000000000000 --- a/_src/jquery-plugin/day-range.js +++ /dev/null @@ -1,102 +0,0 @@ -import $ from '../jquery/jquery'; -import '../jquery/jquery-ui'; -import provide from '../util/provide'; -let nm = provide('jQueryPlugin'); - - - -class DayRange { - - /** - * constructor for the date range - * @param {number} dayRange number of days - * @param {jQuery|HTMLElement|*} jQueryRef reference to the jquery element - */ - constructor(dayRange, jQueryRef) { - this._workingDayRange = dayRange - 1; - - let pickerHtml = '<label for="start-date" style="width: 78px; display: inline-block; margin:5px;">Start Date</label>' + - '<input type="text" readonly id="start-date" class="date-pick" style="width: 90px;">' + - '<br><label for="end-date" style="width: 78px; display: inline-block; margin:5px;">End Date</label>' + - '<input type="text" readonly id="end-date" class="date-pick" style="width: 90px;">'; - - jQueryRef.append(pickerHtml); - - this._$startDate = $('#start-date'); - this._$endDate = $('#end-date'); - - this._$startDate.datepicker(); - this._$endDate.datepicker(); - - this._startDate = null; - this._endDate = null; - - let dte1 = new Date(); - dte1.setHours(0, 0, 0, 0); - let dte2 = new Date(dte1.getTime()); - dte2.setDate(dte2.getDate() + dayRange); - dte2.setHours(23, 59, 59, 0); - this._maxDateRange = dte2 - dte1; - - let _this = this; - - //add event listeners - this._$startDate.change(function () { - _this.startDate = this.value; - }); - - this._$endDate.change(function () { - _this.endDate = this.value; - }); - - // initialize - this.endDate = (new Date()).getTime(); - } - - get startDate() { - return this._startDate; - } - - set startDate(val) { - this._startDate = new Date(val); - this._startDate.setHours(0, 0, 0, 0); - this._$startDate.val(this._startDate.toLocaleDateString()); - - if (this.endDate == null || this._endDate - this._startDate > this._maxDateRange || this._endDate.getTime() - this._startDate.getTime() < 24 * 60 * 60 * 1000) { - let tmpDate = new Date(this._startDate.getTime()); - tmpDate.setDate(tmpDate.getDate() + this._workingDayRange); - this.endDate = tmpDate.getTime(); - } - } - - get endDate() { - return this._endDate; - } - - - set endDate(val) { - this._endDate = new Date(val); - this._endDate.setHours(23, 59, 59, 0); - this._$endDate.val(this._endDate.toLocaleDateString()); - if (this._startDate == null || this._endDate - this.startDate > this._maxDateRange || this._endDate.getTime() - this._startDate.getTime() < 24 * 60 * 60 * 1000) { - let tmpDate = new Date(this._endDate.getTime()); - tmpDate.setDate(tmpDate.getDate() - this._workingDayRange); - this.startDate = tmpDate.getTime(); - } - } -} - -nm.DayRange = DayRange; -let jQuery = $; - -/** - * Adds day range control - * @param {number} dayRange the number of days - * @returns {DayRange} the day range object - */ -jQuery.fn.dayRange = function (dayRange) { - return new DayRange(dayRange, this); -}; - -export default DayRange; - diff --git a/_src/jquery-plugin/range-change.js b/_src/jquery-plugin/range-change.js deleted file mode 100644 index a3bc9d20e23ff79af14c4e3c392757cf1e95b897..0000000000000000000000000000000000000000 --- a/_src/jquery-plugin/range-change.js +++ /dev/null @@ -1,127 +0,0 @@ - - -import $ from '../jquery/jquery'; -let mouseIn = false; -let mouseDown = false; -let timeout = null; -let dragged = false; -let lastVal; - - - -/** - * Created by gavorhes on 11/2/2015. - */ - -function triggerCallback(callback, evt) { - "use strict"; - - let val = parseFloat(this.value); - let min = parseFloat(this.min); - let max = parseFloat(this.max); - let step = parseFloat(this.step); - - if (max - val < step){ - val = max; - } - - let percent = (val - min) / (max - min); - - if (typeof lastVal == 'number' && val == lastVal){ - return; - } - lastVal = val; - callback(val, percent, evt); -} - -/** - * callback on range change interaction, context of this is the firing dom element - * @callback rangeChangeCallback - * @param {number} newValue - * @param {number} ratio value from 0 to 1 relative of the value to the min and max - * @param {object} evt - */ - -/** - * Add a variety of listeners for range inputs applied to a common callback - * @param {rangeChangeCallback} callback - the callback - * @param {number} [changeTimeout=75] before the callback is called - * @this {jQuery} - * @returns {jQuery} the jQuery object - */ -$.fn.rangeChange = function (callback, changeTimeout) { - - changeTimeout = typeof changeTimeout == 'number' ? changeTimeout : 75; - - this.mouseenter(function () { - mouseIn = true; - }); - - this.mouseleave(function () { - mouseIn = false; - mouseDown = false; - }); - - this.mousedown(function () { - mouseDown = true; - }); - - this.mouseup(function () { - mouseDown = false; - }); - - this.mousemove( - /** - * - * @param {object} evt - event properties - * @this {HTMLElement} - */ - function (evt) { - if (!(mouseIn && mouseDown)) { - return; - } - - dragged = true; - - if (lastVal == this['value']) { - return; - } - lastVal = this['value']; - - if (timeout != null) { - clearTimeout(timeout); - } - - let _this = this; - - timeout = setTimeout(function () { - triggerCallback.call(_this, callback, evt); - timeout = null; - - }, changeTimeout); - }); - - this.keyup( - /** - * - * @param {object} evt - event properties - */ - function (evt) { - if (evt.keyCode == 37 || evt.keyCode == 39) { - triggerCallback.call(this, callback, evt); - } - }); - - this.change(function (evt) { - if (dragged) { - dragged = false; - - return; - } - triggerCallback.call(this, callback, evt); - }); - - return this; -}; - -export default undefined; diff --git a/_src/jquery/floatthead.js b/_src/jquery/floatthead.js deleted file mode 100644 index 2bafd50ace2d3a6524548b419b742ff5080a85c4..0000000000000000000000000000000000000000 --- a/_src/jquery/floatthead.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Created by gavorhes on 6/22/2016. - */ -const $ = require('jquery'); -global.jQuery = $; - -require('floatthead'); - - -/** - * implement the default window scroll - * @param {jQuery} $table - jquery reference to table - * @param {object} [options={}] float options - */ -export function windowScroll($table, options){ - "use strict"; - options = options || {}; - - $table.floatThead(options); -} - -/** - * - * @param {jQuery} $table - jquery reference to table - * @param {jQuery} $tableContainer - jquery reference to table - * @param {object} [options={}] float options - */ -export function overflowScroll($table, $tableContainer, options){ - "use strict"; - options = options || {}; - - options.scrollContainer = (t) => { - return $tableContainer; - }; - - $table.floatThead(options); -} - -/** - * - * @param {jQuery} $table - jquery reference to table - * @param {jQuery} $responsiveContainer - jquery reference to table - * @param {object} [options={}] float options - */ -export function responsiveScroll($table, $responsiveContainer, options){ - "use strict"; - options = options || {}; - - options.responsiveContainer = (t) => { - return $responsiveContainer; - }; - - $table.floatThead(options); -} diff --git a/_src/jquery/jquery-layout.js b/_src/jquery/jquery-layout.js deleted file mode 100644 index 26469b07059e17e3d16531d4c5184def92e96620..0000000000000000000000000000000000000000 --- a/_src/jquery/jquery-layout.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Created by gavorhes on 5/23/2016. - */ - - -require('jquery-layout'); - -export default undefined; \ No newline at end of file diff --git a/_src/jquery/jquery-ui.js b/_src/jquery/jquery-ui.js deleted file mode 100644 index f72c312e45d9eb97b2ca2467b0420a6897e05646..0000000000000000000000000000000000000000 --- a/_src/jquery/jquery-ui.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Created by gavorhes on 5/23/2016. - */ - -require('jquery-ui'); - -export default undefined; diff --git a/_src/jquery/jquery.js b/_src/jquery/jquery.js deleted file mode 100644 index 2cf83a378acb2717b23f1d6641edb57e40567924..0000000000000000000000000000000000000000 --- a/_src/jquery/jquery.js +++ /dev/null @@ -1,6 +0,0 @@ -const jQuery = require('jquery'); - -export default jQuery; - - - diff --git a/_src/layers/LayerBase.js b/_src/layers/LayerBase.js deleted file mode 100644 index ff34db4b4ad80275be6e82a05365912f2893fa1d..0000000000000000000000000000000000000000 --- a/_src/layers/LayerBase.js +++ /dev/null @@ -1,373 +0,0 @@ -import $ from '../jquery/jquery'; -import makeGuid from '../util/makeGuid'; -import * as zoomResolutionConvert from '../olHelpers/zoomResolutionConvert'; -import provide from '../util/provide'; -const nm = provide('layers'); - -/** - * The base layer class - * @abstract - */ -class LayerBase { - /** - * The base layer for all others - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id=makeGuid()] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] - the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] - the z index for the layer - * @param {function} [options.loadCallback] - function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] - if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] - if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent=undefined] - additional content to add to the legend - */ - constructor(url, options) { - options = options || {}; - - if (typeof url !== 'string') { - throw 'Invalid URL'; - } - this._url = url; - - - - this._params = typeof options.params == 'object' ? options.params : {}; - this._legendCollapse = typeof options.legendCollapse == 'boolean' ? options.legendCollapse : false; - this._legendCheckbox = typeof options.legendCheckbox == 'boolean' ? options.legendCheckbox : true; - - this.id = options.id || makeGuid(); - this._name = options.name || 'Unnamed Layer'; - this.animate = false; - this._opacity = typeof options.opacity == 'number' ? options.opacity : 1; - - if (this._opacity > 1) { - this._opacity = 1; - } else if (this._opacity < 0) { - this._opacity = 0; - } - - this._visible = typeof options.visible === 'boolean' ? options.visible : true; - - this._source = undefined; - - /** - * - * @protected - */ - this._olLayer = undefined; - this._loaded = false; - - this._maxResolution = zoomResolutionConvert.zoomToResolution(options.minZoom); - if (typeof this._maxResolution !== 'undefined') { - this._maxResolution += 0.00001; - } - this._minResolution = zoomResolutionConvert.zoomToResolution(options.maxZoom); - - this._minZoom = typeof options.minZoom == 'number' ? options.minZoom : undefined; - this._maxZoom = typeof options.maxZoom == 'number' ? options.maxZoom : undefined; - this._zIndex = typeof options.zIndex == 'number' ? options.zIndex : 0; - - this.loadCallback = typeof options.loadCallback == 'function' ? options.loadCallback : function () { - }; - - - this._legendContent = ''; - - if (this._legendCheckbox) { - this._legendContent += `<input type="checkbox" ${this.visible ? 'checked' : ''} ` + - `class="legend-check" id="${this.id}-legend-layer-check"><span></span>`; - this._legendContent += `<label for="${this.id}-legend-layer-check" class="legend-layer-name">${this.name}</label>`; - } else { - this._legendContent += `<label class="legend-layer-name">${this.name}</label>`; - } - - this._$legendDiv = null; - this._applyCollapseCalled = false; - this._addLegendContent(typeof options.legendContent === 'string' ? options.legendContent : undefined); - } - - /** - * base load function, sets _loaded = true if it is not already - * @protected - * @returns {boolean} if already loaded - */ - _load() { - if (this.loaded == true) { - return true; - } else { - this._loaded = true; - - return false; - } - } - - /** - * Get the legend html, be sure to only add to the DOM once - * @returns {string} html for layer wrapped in a div - */ - getLegendDiv() { - return `<div class="legend-layer-div" id="${this.id}-legend-layer-div">${this._legendContent}</div>`; - } - - /** - * - * @param {string|undefined} additionalContent - additional content to add to legend - * @private - */ - _addLegendContent(additionalContent) { - additionalContent = typeof additionalContent == 'string' ? additionalContent : ''; - - let addCollapse = additionalContent.indexOf('<ul>') > -1; - - if (addCollapse) { - additionalContent = '<span class="legend-items-expander" title="Expand/Collapse">▼</span>' + additionalContent; - } - - this._legendContent += additionalContent; - - this._$legendDiv = $(`#${this.id}-legend-layer-div`); - - if (this._$legendDiv.length > 0) { - this._$legendDiv.append(additionalContent); - this.applyCollapse(); - } - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=] - additonal content to add - */ - addLegendContent(additionalContent) { - this._addLegendContent(additionalContent); - } - - applyCollapse() { - if (this._applyCollapseCalled) { - console.log('collapse already applied'); - - return undefined; - } - - this._$legendDiv = $(`#${this.id}-legend-layer-div`); - - if (this._$legendDiv.length > 0) { - - let $expander = this._$legendDiv.find('.legend-items-expander'); - - if ($expander.length > 0) { - this._applyCollapseCalled = true; - - $expander.click(function () { - let $this = $(this); - - $this.siblings('ul').slideToggle(); - - if ($this.hasClass('legend-layer-group-collapsed')) { - $this.removeClass('legend-layer-group-collapsed'); - $this.html('▼'); - } else { - $this.addClass('legend-layer-group-collapsed'); - $this.html('▶'); - } - }); - - if (this._legendCollapse) { - $expander.trigger('click'); - } - } - } - } - - /** - * trick to refresh the layer - */ - refresh(){ - if (this.source){ - this.source.refresh(); - //let src = this.source; - //this.olLayer.setSource(undefined); - //this.olLayer.setSource(src); - } - } - - - /** - * get the legend content - * @type {string} - */ - get legendContent() { - return this._legendContent; - } - - /** - * set the legend content directly - * @param {string} newVal - new content - * @protected - */ - set legendContent(newVal) { - this._legendContent = newVal; - } - - /** - * get the map get params - * @type {object} - */ - get params() { - return this._params; - } - - /** - * set the map get params - * @param {object} newParams - new get params - * @protected - */ - set params(newParams){ - this._params = newParams; - } - - /** - * get the minimum resolution - * @type {number|*} - */ - get minResolution() { - return this._minResolution; - } - - /** - * get the maximum resolution - * @type {number|*} - */ - get maxResolution() { - return this._maxResolution; - } - - /** - * get min zoom - * @type {number|*} - */ - get minZoom() { - return this._minZoom; - } - - /** - * get max zoom - * @type {number|*} - */ - get maxZoom() { - return this._maxZoom; - } - - /** - * get the url - * @type {string} - */ - get url() { - return this._url; - } - - /** - * Get the layer visibility - * @type {boolean} - */ - get visible() { - return this._visible; - } - - /** - * Set the layer visibility - * @param {boolean} visibility - layer visibility - */ - set visible(visibility) { - this._visible = visibility; - if (this.olLayer) { - this.olLayer.setVisible(this._visible); - if (visibility && !this._loaded) { - this._load(); - } - } - } - - /** - * Get the layer opacity - * @type {number} - */ - get opacity() { - return this._opacity; - } - - /** - * Set the layer opacity - * @param {number} opacity - layer opacity - */ - set opacity(opacity) { - this._opacity = opacity; - if (this.olLayer) { - this.olLayer.setOpacity(this._opacity); - } - } - - /** - * Get the layer name - * @type {string} - */ - get name() { - return this._name; - } - - /** - * set the layer name - * @param {string} newName - the new name - */ - set name(newName) { - this._name = newName; - } - - /** - * Check if the layer is loaded - * @type {boolean} - */ - get loaded() { - return this._loaded; - } - - /** - * get the layer source - * @type {*} - */ - get source() { - return this._source; - } - - /** - * get the z index - * @type {number} - */ - get zIndex(){ - return this._zIndex; - } - - /** - * set the z index - * @param {number} newZ - new Z index - */ - set zIndex(newZ){ - this._zIndex = newZ; - this.olLayer.setZIndex(this.zIndex); - } - - /** - * - * @returns {ol.layer.Base|undefined} the ol layer - */ - get olLayer(){ - return this._olLayer; - } -} - -nm.LayerBase = LayerBase; -export default LayerBase; diff --git a/_src/layers/LayerBaseVector.js b/_src/layers/LayerBaseVector.js deleted file mode 100644 index 4c50a8feb947ce4174ed1e485b5ca536394cdd87..0000000000000000000000000000000000000000 --- a/_src/layers/LayerBaseVector.js +++ /dev/null @@ -1,282 +0,0 @@ -import $ from '../jquery/jquery'; -import LayerBase from './LayerBase'; -import mapMove from '../olHelpers/mapMove'; -import provide from '../util/provide'; -import ol from '../ol/ol'; -const nm = provide('layers'); - -/** - * The make mapMoveGetParams function takes the extent and the zoom level - * context is 'this' object, probably want to do something with this.mapMoveParams - * @callback mapMoveMakeGetParams - * @param {LayerBaseVector} lyr - * @param {object} extent - * @param {number} extent.minX - * @param {number} extent.minY - * @param {number} extent.maxX - * @param {number} extent.maxY - * @param {number} zoomLevel - */ - - -/** - * The Vector layer base - * @augments LayerBase - * @abstract - */ -class LayerBaseVector extends LayerBase { - - /** - * The base vector layer - * @param {string} url - pass an empty string to prevent default load and add from a json source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {mapMoveMakeGetParams} [options.mapMoveMakeGetParams=function(lyr, extent, zoomLevel){}] function to create additional map move params - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - */ - constructor(url, options) { - super(url, options); - - //prevent regular load if no url has been provided - if (this.url.trim() == '') { - this._loaded = true; - } - - this._style = typeof options.style == 'undefined' ? undefined : options.style; - - if (this.visible) { - this._autoLoad = true; - } else { - this._autoLoad = (typeof options['autoLoad'] == 'boolean' ? options['autoLoad'] : false); - } - - this._onDemand = typeof options.onDemand == 'boolean' ? options.onDemand : false; - this._onDemandDelay = typeof options.onDemandDelay == 'number' ? options.onDemandDelay : 300; - - if (options.mapMoveObj){ - this._mapMove = options.mapMoveObj; - } else { - this._mapMove = this._onDemand ? mapMove : undefined; - } - - this._mapMoveMakeGetParams = typeof options.mapMoveMakeGetParams == 'function' ? options.mapMoveMakeGetParams : - function(lyr, extent, zoomLevel){ - return {}; - }; - - if (this._onDemand) { - this._loaded = true; - this._mapMoveParams = {}; - this._mapMove.checkInit(); - this._mapMove.addVectorLayer(this); - } - - this._source = new ol.source.Vector(); - - /** - * - * @type {ol.layer.Vector|ol.layer.Base} - */ - this._olLayer = new ol.layer.Vector( - { - source: this._source, - visible: this.visible, - style: this.style, - minResolution: this._minResolution, - maxResolution: this._maxResolution, - zIndex: this._zIndex - } - ); - } - - /** - * dummy to be overridden - * @param {object} featureCollection - geojson or esrijson object - */ - addFeatures(featureCollection) { - console.log('Layer vector base addFeatures is a placeholder and does nothing'); - } - - /** - * Before call to map move callback, can prevent call by returning false - * @param {number} zoom - zoom level - * @param {string} [evtType=undefined] undefined for initial load, otherwise one of 'change:center', 'change:resolution' - * @returns {boolean} if the call should proceed - */ - mapMoveBefore(zoom, evtType) { - if (this.minZoom !== undefined) { - if (zoom < this.minZoom) { - return false; - } - } - - if (this.maxZoom !== undefined) { - if (zoom > this.maxZoom) { - return false; - } - } - - return this.visible; - } - - /** - * callback to generate the parameters passed in the get request - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - */ - mapMoveMakeGetParams(extent, zoomLevel) { - this._mapMoveParams = {}; - $.extend(this._mapMoveParams, this.params); - $.extend(this._mapMoveParams, this._mapMoveMakeGetParams(this, extent, zoomLevel)); - } - - /** - * callback function on map move - * @param {object} d - the json response - */ - mapMoveCallback(d) { - if (this.source) { - this._source.clear(); - } - } - - /** - * clear features in the layer - */ - clear() { - if (this._source) { - this._source.clear(); - } - } - - /** - * get on demand delay in miliseconds - * @type {number|*} - */ - get onDemandDelay() { - return this._onDemandDelay; - } - - /** - * get if the layer is autoloaded - * @type {boolean} - */ - get autoLoad() { - return this._autoLoad; - } - - /** - * get the style definition - * @type {ol.Style|styleFunc} - */ - get style() { - return this._style; - } - - /** - * set the style - * @param {ol.Style|styleFunc} style - the style or function - */ - set style(style) { - this._style = style; - this.olLayer.setStyle(this._style); - } - - /** - * get the map CRS if it is defined by the map move object - * @type {string|*} - */ - get mapCrs() { - if (this._mapMove) { - return this._mapMove.map.getView().getProjection().getCode(); - } else { - return undefined; - } - } - - /** - * get the map move object - * @type {MapMoveCls|*} - */ - get mapMove() { - return this._mapMove; - } - - /** - * map move params - * @type {object} - */ - get mapMoveParams() { - return this._mapMoveParams; - } - - /** - * Get the layer visibility - * @type {boolean} - */ - get visible() { - return super.visible; - } - - /** - * Set the layer visibility - * @type {boolean} - * @override - */ - set visible(visibility) { - super.visible = visibility; - - if (this._onDemand) { - this.mapMove.triggerLyrLoad(this); - } - } - - /** - * get the layer vector source - * @override - * @type {ol.source.Vector} - */ - get source(){ - return super.source; - } - - /** - * array of ol features - * @type {Array.<ol.Feature>} - */ - get features(){ - return this.source.getFeatures(); - } - - /** - * - * @returns {ol.layer|Vector|ol.layer.Base|undefined} the ol layer - */ - get olLayer(){ - return super.olLayer; - } -} - -nm.LayerBaseVector = LayerBaseVector; -export default LayerBaseVector; diff --git a/_src/layers/LayerBaseVectorEsri.js b/_src/layers/LayerBaseVectorEsri.js deleted file mode 100644 index 3bc94e3b1e216b5073ee9cb079211ffabb9535d0..0000000000000000000000000000000000000000 --- a/_src/layers/LayerBaseVectorEsri.js +++ /dev/null @@ -1,181 +0,0 @@ -/** - * Created by gavorhes on 11/2/2015. - */ - -import $ from '../jquery/jquery'; -import LayerBaseVector from './LayerBaseVector'; -import * as esriToOl from '../olHelpers/esriToOlStyle'; -import provide from '../util/provide'; -import ol from '../ol/ol'; - -let nm = provide('layers'); - -/** - * Base layer for esri vector layers - * @augments LayerBaseVector - */ -class LayerBaseVectorEsri extends LayerBaseVector { - - /** - * The base vector layer - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - * @param {string} [options.where=1=1] the layer filter clause - * @param {string} [options.outFields=*] comma separated list of output fields, defaults to all - * @param {string} [options.format=pjson] the format the retrieve the data - * @param {number} [options.outSR=3857] the output spatial reference, defaults to web mercator - * @param {boolean} [options.useEsriStyle=false] if the map service style should be used - * @param {boolean} [options.collapseLegend=false] if the legend should be initially collapsed - * @param {number} [options.mapMoveMakeGetParams=function(extent, zoomLevel){}] function to create additional map move params - */ - constructor(url, options) { - - if (typeof options.params != 'object') { - options.params = {}; - } - options.params['where'] = options.where || '1=1'; - options.params['outFields'] = options.outFields || '*'; - options.params['f'] = options.format || 'pjson'; - options.params['outSR'] = options.outSR || 3857; - - super(url, options); - this._outSR = this.params['outSR']; - this._esriFormat = new ol.format.EsriJSON(); - - if (this._url[this._url.length - 1] !== '/') { - this._url += '/'; - } - - this._urlCopy = this.url; - this._url += 'query?callback=?'; - - if (this.autoLoad || this.visible) { - this._load(); - } - - this._useEsriStyle = typeof options.useEsriStyle == 'boolean' ? options.useEsriStyle : false; - - if (this._useEsriStyle) { - this.addLegendContent(); - } - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=''] additional content to add to legend - */ - addLegendContent(additionalContent) { - if (!this._useEsriStyle) { - super.addLegendContent(additionalContent); - } else { - $.get(this._urlCopy + '?f=pjson&callback=?', {}, (d) => { - if (d['subLayers'].length > 0) { - alert('should only use single feature layers, not groups'); - - return; - } - - let newStyleAndLegend = esriToOl.makeFeatureServiceLegendAndSymbol(d); - this.style = newStyleAndLegend.style; - super.addLegendContent(newStyleAndLegend.legend); - }, 'json'); - } - } - - - /** - * add feature collection - * @param {object} featureCollection - features as esrijson - */ - addFeatures(featureCollection) { - let feats = this._esriFormat.readFeatures(featureCollection); - this.source.addFeatures(feats); - } - - /** - * trigger load features - * @protected - * @returns {boolean} if already loaded - */ - _load() { - if (super._load()) { - return true; - } - $.get(this._url, this.params, (d) => { - this.addFeatures(d); - this.loadCallback(this); - }, 'json').fail(() => { - this._loaded = false; - }); - - return false; - } - - /** - * callback to generate the parameters passed in the get request - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - */ - mapMoveMakeGetParams(extent, zoomLevel) { - super.mapMoveMakeGetParams(extent, zoomLevel); - this.mapMoveParams['geometry'] = `${extent.minX},${extent.minY},${extent.maxX},${extent.maxY}`; - this.mapMoveParams['geometryType'] = 'esriGeometryEnvelope'; - this.mapMoveParams['spatialRel'] = 'esriSpatialRelIntersects'; - this.mapMoveParams['spatialRel'] = 'esriSpatialRelIntersects'; - this.mapMoveParams['inSR'] = 3857; - if (this._outSR == 3857) { - this.mapMoveParams['geometryPrecision'] = 1; - } - } - - /** - * Before call to map move callback, can prevent call by returning false - * @param {number} zoom - zoom level - * @param {string} [evtType=undefined] undefined for initial load, otherwise one of 'change:center', 'change:resolution' - * @returns {boolean} if the call should proceed - */ - mapMoveBefore(zoom, evtType) { - return super.mapMoveBefore(zoom, evtType); - //if (super.mapMoveBefore(zoom, evtType)){ - // //place holder for additional processing - // return true; - //} else { - // return false; - //} - } - - /** - * callback function on map move - * @param {object} d - the json response - */ - mapMoveCallback(d) { - super.mapMoveCallback(d); - this.source.addFeatures(this._esriFormat.readFeatures(d)); - } -} - -nm.LayerBaseVectorEsri = LayerBaseVectorEsri; -export default LayerBaseVectorEsri; diff --git a/_src/layers/LayerBaseVectorGeoJson.js b/_src/layers/LayerBaseVectorGeoJson.js deleted file mode 100644 index 6c2bfa429602c5169f033ee1c097687d8a0e5a05..0000000000000000000000000000000000000000 --- a/_src/layers/LayerBaseVectorGeoJson.js +++ /dev/null @@ -1,108 +0,0 @@ -/** - * Created by gavorhes on 11/2/2015. - */ - -import $ from '../jquery/jquery'; -import LayerBaseVector from './LayerBaseVector'; -import provide from '../util/provide'; -import ol from '../ol/ol'; -let nm = provide('layers'); - -/** - * The Vector GeoJson Layer - * @augments LayerBaseVector - */ -class LayerBaseVectorGeoJson extends LayerBaseVector { - - /** - * @param {string|undefined|null} url - resource url, set to '' to make blank layer - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * - * @param {object} [options.transform={}] SR transform, set as false for no transform - * @param {string} options.transform.dataProjection=EPSG:4326 the data CRS - * @param {string} options.transform.featureProjection=EPSG:3857 the feature/map CRS - * @param {mapMoveMakeGetParams} [options.mapMoveMakeGetParams=function(lyr, extent, zoomLevel){}] function to create additional map move params - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - */ - constructor(url, options) { - url = typeof url == 'string' ? url : ''; - super(url, options); - - this._geoJsonFormat = new ol.format.GeoJSON(); - - this._transform = options.transform || {}; - this._transform.dataProjection = this._transform.dataProjection || "EPSG:4326"; - this._transform.featureProjection = this._transform.featureProjection || "EPSG:3857"; - - if (this.autoLoad || this.visible) { - this._load(); - } - } - - /** - * add feature collection - * @param {object} featureCollection - as geojson object - */ - addFeatures(featureCollection) { - if (this._transform.dataProjection == 'EPSG:3857' && this._transform.featureProjection == 'EPSG:3857') { - this._source.addFeatures(this._geoJsonFormat.readFeatures(featureCollection)); - } else { - this._source.addFeatures(this._geoJsonFormat.readFeatures(featureCollection, this._transform)); - } - } - - /** - * trigger load features - * @protected - * @returns {boolean} if already loaded - */ - _load() { - - if (super._load()) { - return true; - } - - $.get(this._url, - this._params, - (d) => { - this.addFeatures(d); - this.loadCallback(this); - }, 'json').fail( - function () { - this._loaded = false; - } - ); - - return false; - } - - /** - * callback function on map move - * @param {object} d the json response - * @override - */ - mapMoveCallback(d) { - super.mapMoveCallback(d); - this._source.addFeatures(this._geoJsonFormat.readFeatures(d, this._transform)); - } -} - -nm.LayerBaseVectorGeoJson = LayerBaseVectorGeoJson; -export default LayerBaseVectorGeoJson; diff --git a/_src/layers/LayerBaseXyzTile.js b/_src/layers/LayerBaseXyzTile.js deleted file mode 100644 index 88c58565cdb33fa6dd690e9d2748f5802c2175cf..0000000000000000000000000000000000000000 --- a/_src/layers/LayerBaseXyzTile.js +++ /dev/null @@ -1,106 +0,0 @@ -/** - * Created by gavorhes on 12/4/2015. - */ -import $ from '../jquery/jquery'; -import LayerBase from './LayerBase'; -import * as esriToOl from '../olHelpers/esriToOlStyle'; -import provide from '../util/provide'; -import ol from '../ol/ol'; -const nm = provide('layers'); - -/** - * XYZ tile - * @augments LayerBase - */ -class LayerBaseXyzTile extends LayerBase { - - /** - * The XYZ tile layer - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * @param {boolean} [options.useEsriStyle=false] if the map service style should be used - */ - constructor(url, options) { - super(url, options); - this._source = new ol.source.XYZ({url: this.url == '' ? undefined : this.url}); - this._olLayer = new ol.layer.Tile({ - source: this._source, - visible: this.visible, - opacity: this.opacity, - minResolution: this._minResolution, - maxResolution: this._maxResolution, - zIndex: this._zIndex - }); - - - this._useEsriStyle = typeof options.useEsriStyle == 'boolean' ? options.useEsriStyle : false; - - if (this._useEsriStyle) { - this.addLegendContent(); - } - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=''] additional content for legend - */ - addLegendContent(additionalContent) { - if (!this._useEsriStyle) { - super.addLegendContent(additionalContent); - } else { - let urlCopy = this.url; - - let mapServerIndex = urlCopy.toLowerCase().indexOf('mapserver'); - if (mapServerIndex > -1) { - urlCopy = urlCopy.slice(0, mapServerIndex + 9); - } else { - return; - } - - if (urlCopy[urlCopy.length - 1] !== '/') { - urlCopy += '/'; - } - - urlCopy += 'legend?f=pjson&callback=?'; - - let _this = this; - let superAddLegend = super.addLegendContent; - - $.get(urlCopy, {}, function (d) { - let newHtml = esriToOl.makeMapServiceLegend(d); - superAddLegend.call(_this, newHtml); - }, 'json'); - } - } - - /** - * - * @returns {ol.source.XYZ} the vector source - */ - get source() { - return super.source; - } - - /** - * - * @returns {ol.layer.Tile|ol.layer.Base|undefined} the ol layer - */ - get olLayer() { - return super.olLayer; - } -} - -nm.LayerBaseXyzTile = LayerBaseXyzTile; -export default LayerBaseXyzTile; diff --git a/_src/layers/LayerEsriMapServer.js b/_src/layers/LayerEsriMapServer.js deleted file mode 100644 index db799ab2a894b321217854f7591129181231e3d9..0000000000000000000000000000000000000000 --- a/_src/layers/LayerEsriMapServer.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * Created by gavorhes on 12/7/2015. - */ -import $ from '../jquery/jquery'; -import LayerBase from './LayerBase'; -import * as esriToOl from '../olHelpers/esriToOlStyle'; -import mapPopup from '../olHelpers/mapPopup'; -import provide from '../util/provide'; -import ol from '../ol/ol'; -const nm = provide('layers'); - -/** - * esri mapserver layer - * @augments LayerBase - */ -class LayerEsriMapServer extends LayerBase { - /** - * The base layer for all others - * @param {string} url - resource url - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * @param {boolean} [options.addPopup=false] if a popup should be added - * @param {undefined|Array<number>} [options.showLayers=undefined] if a popup should be added - */ - constructor(url, options) { - super(url, options); - this._source = new ol.source.TileArcGISRest( - { - url: this.url == '' ? undefined : this.url, - params: typeof options.showLayers == 'undefined' ? undefined : {layers: 'show:' + options.showLayers.join(',')} - } - ); - - this._olLayer = new ol.layer.Tile({ - source: this._source, - visible: this.visible, - opacity: this.opacity, - minResolution: this._minResolution, - maxResolution: this._maxResolution, - zIndex: this._zIndex - }); - - options.addPopup = typeof options.addPopup == 'boolean' ? options.addPopup : false; - - this._esriFormat = new ol.format.EsriJSON(); - this._popupRequest = null; - - this.addLegendContent(); - - if (options.addPopup) { - mapPopup.addMapServicePopup(this); - } - } - - /** - * add additional content to the legend - * @param {string} [additionalContent=''] additional content for legend - */ - addLegendContent(additionalContent) { - let urlCopy = this.url; - - if (urlCopy[urlCopy.length - 1] !== '/') { - urlCopy += '/'; - } - - urlCopy += 'legend?f=pjson&callback=?'; - - let _this = this; - let superAddLegend = super.addLegendContent; - - $.get(urlCopy, {}, function (d) { - let newHtml = esriToOl.makeMapServiceLegend(d); - superAddLegend.call(_this, newHtml); - }, 'json'); - } - - - getPopupInfo(queryParams) { - if (!this.visible) { - return; - } - - let urlCopy = this.url; - - if (urlCopy[urlCopy.length - 1] != '/') { - urlCopy += '/'; - } - - urlCopy += 'identify?callback=?'; - - let _this = this; - - if (this._popupRequest != null) { - this._popupRequest.abort(); - } - - this._popupRequest = $.get(urlCopy, queryParams, function (d) { - for (let r of d['results']) { - - let popupHtml = '<table class="esri-popup-table">'; - - for (let a in r['attributes']) { - if (r['attributes'].hasOwnProperty(a)) { - let attrVal = r['attributes'][a]; - - if (attrVal == null || attrVal.toString().toLowerCase() == 'null') { - continue; - } - - let attr = a; - if (attr.length > 14) { - attr = attr.slice(0, 11) + '...'; - } - - popupHtml += `<tr><td>${attr}</td><td>${attrVal}</td></tr>`; - } - } - - popupHtml += '</table>'; - - mapPopup.addMapServicePopupContent(_this._esriFormat.readFeature(r), _this, popupHtml, r['layerName']); - } - }, 'json').always(function () { - _this._popupRequest = null; - }); - } - - /** - * overwrite the base load - * @protected - */ - _load() { - } - - /** - * - * @returns {ol.source.TileArcGISRest} the vector source - */ - get source() { - return super.source; - } - - /** - * - * @returns {ol.layer.Tile|ol.layer.Base|undefined} the ol layer - */ - get olLayer() { - return super.olLayer; - } -} -nm.LayerEsriMapServer = LayerEsriMapServer; -export default LayerEsriMapServer; diff --git a/_src/layers/LayerItsInventory.js b/_src/layers/LayerItsInventory.js deleted file mode 100644 index f41a62417954cc5d9f79d62eda4f604be3f0296c..0000000000000000000000000000000000000000 --- a/_src/layers/LayerItsInventory.js +++ /dev/null @@ -1,337 +0,0 @@ -/** - * Created by gavorhes on 12/8/2015. - */ - -import $ from '../jquery/jquery'; -import LayerBaseVectorGeoJson from './LayerBaseVectorGeoJson'; -import mapPopup from '../olHelpers/mapPopup'; -import provide from '../util/provide'; -import ol from '../ol/ol'; -let nm = provide('layers'); - - -function checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig) { - "use strict"; - - //make sure one and only one configuration is defined; - let configCount = 0; - if (typeof itsIcon == 'string') { - configCount++; - } - - if (typeof itsLineStyle == 'object') { - itsLineStyle.width = typeof itsLineStyle.width == 'number' ? itsLineStyle.width : 5; - itsLineStyle.color = typeof itsLineStyle.color == 'string' ? itsLineStyle.color : 'red'; - configCount++; - } - - if (typeof itsIconConfig == 'object') { - itsIconConfig.defaultName = itsIconConfig.defaultName || 'Other'; - - if (typeof itsIconConfig.iconArray == 'undefined') { - itsIconConfig.iconArray = []; - } - - configCount++; - } - - if (typeof itsLineConfig == 'object') { - itsLineConfig.defaultName = itsLineConfig.defaultName || 'Other'; - itsLineConfig.defaultWidth = itsLineConfig.defaultWidth || 5; - itsLineConfig.defaultColor = itsLineConfig.defaultColor || 'red'; - - - if (typeof itsLineConfig.lineArray == 'undefined') { - itsLineConfig.lineArray = []; - } - - // set the width if not defined - for (let i = 0; i < itsLineConfig.lineArray.length; i++) { - if (itsLineConfig.lineArray[i].length == 3) { - itsLineConfig.lineArray[i].push(5); - } - } - - configCount++; - } - - if (configCount > 1) { - throw 'Only one style config can be defined'; - } -} - -/** - * - * @param {string} [itsIcon=undefined] the ITS device type icon image see http://transportal.cee.wisc.edu/its/inventory/icons/ - * - * @param {object} [itsLineStyle=undefined] A single line style - * @param {string} itsLineStyle.color the line color as rgb or hex - * @param {number} [itsLineStyle.width=5] the line width - * - * @param {object} [itsIconConfig=undefined] The icon subtype configuration - * @param {string} itsIconConfig.prop The property used to define icon attribute symbolization - * @param {string} itsIconConfig.defaultName The default name to be used if no other match is found - * @param {string} itsIconConfig.defaultIcon The default icon to be used for no other matches - * @param {object} [itsIconConfig.iconArray=[]] an array, items with format [property, name, img] - * - * @param {object} [itsLineConfig=undefined] The property used to define icon attribute symbolization - * @param {string} itsLineConfig.prop The property used to define icon attribute symbolization - * @param {string} [itsLineConfig.defaultName=Other] The default name to be used if no other match is found - * @param {string} [itsLineConfig.defaultColor=red] The default line color to be used for no other matches - * @param {number} [itsLineConfig.defaultWidth=5] The default line width to be used for no other matches - * @param {object} [itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width] - * @returns {*} undefined, style, or style function - */ -function defineStyle(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig) { - "use strict"; - checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig); - - let _iconUrlRoot = 'http://transportal.cee.wisc.edu/its/inventory/icons/'; - - if (itsIcon) { - return new ol.style.Style({ - image: new ol.style.Icon( - { - src: _iconUrlRoot + itsIcon, - crossOrigin: 'anonymous' - } - ) - }); - } else if (itsLineStyle) { - return new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: itsLineStyle.color, - width: itsLineStyle.width - }) - }); - } else if (itsIconConfig) { - return function (feature) { - let symbolProp = feature.getProperties()[itsIconConfig.prop]; - let iconUrl = _iconUrlRoot + itsIconConfig.defaultIcon; - - for (let i = 0; i < itsIconConfig.iconArray.length; i++) { - let thisProp = itsIconConfig.iconArray[i]; - - if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) { - iconUrl = _iconUrlRoot + thisProp[2]; - break; - } - } - - return [new ol.style.Style({ - image: new ol.style.Icon( - { - src: iconUrl, - crossOrigin: 'anonymous' - } - ) - })]; - }; - } else if (itsLineConfig) { - return function (feature) { - let symbolProp = feature.getProperties()[itsLineConfig.prop]; - let colr = itsLineConfig.defaultColor || 'red'; - let width = itsLineConfig.defaultWidth || 5; - - for (let i = 0; i < itsLineConfig.lineArray.length; i++) { - let thisProp = itsLineConfig.lineArray[i]; - - if (symbolProp.trim().toLocaleLowerCase() == thisProp[0].trim().toLocaleLowerCase()) { - colr = thisProp[2]; - width = thisProp[3]; - break; - } - } - - return [new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: colr, - width: width - }) - })]; - }; - } else { - return undefined; - } -} - -/** - * - * @param {string} [itsIcon=undefined] the ITS device type icon image see http://transportal.cee.wisc.edu/its/inventory/icons/ - * - * @param {object} [itsLineStyle=undefined] A single line style - * @param {string} itsLineStyle.color the line color as rgb or hex - * @param {number} [itsLineStyle.width=5] the line width - * - * @param {object} [itsIconConfig=undefined] The icon subtype configuration - * @param {string} itsIconConfig.prop The property used to define icon attribute symbolization - * @param {string} itsIconConfig.defaultName The default name to be used if no other match is found - * @param {string} itsIconConfig.defaultIcon The default icon to be used for no other matches - * @param {object} [itsIconConfig.iconArray=[]] an array, items with format [property, name, img] - * - * @param {object} [itsLineConfig=undefined] The property used to define icon attribute symbolization - * @param {string} itsLineConfig.prop The property used to define icon attribute symbolization - * @param {string} [itsLineConfig.defaultName=Other] The default name to be used if no other match is found - * @param {string} [itsLineConfig.defaultColor=red] The default line color to be used for no other matches - * @param {number} [itsLineConfig.defaultWidth=5] The default line width to be used for no other matches - * @param {object} [itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width] - * @returns {string} html to be added to the legend - */ -function defineLegend(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig) { - "use strict"; - - let iconHeight = 17; - - checkStyleNumber(itsIcon, itsLineStyle, itsIconConfig, itsLineConfig); - - let _iconUrlRoot = 'http://transportal.cee.wisc.edu/its/inventory/icons/'; - - if (itsIcon) { - return `<img src="${_iconUrlRoot + itsIcon}" class="legend-layer-icon" height="${iconHeight}">`; - } else if (itsLineStyle) { - return `<hr style="height: ${itsLineStyle.width}px; background-color: ${itsLineStyle.color}">`; - } else if (itsIconConfig) { - let outHtml = ''; - outHtml += '<ul>'; - - for (let a of itsIconConfig.iconArray) { - outHtml += `<li><span class="legend-layer-subitem">${a[1]}</span><img src="${_iconUrlRoot + a[2]}" class="legend-layer-icon" height="${iconHeight}">`; - } - outHtml += `<li><span class="legend-layer-subitem">${itsIconConfig.defaultName}</span>` + - `<img src="${_iconUrlRoot + itsIconConfig.defaultIcon}" class="legend-layer-icon" height="${iconHeight}"></li>`; - outHtml += '</ul>'; - - return outHtml; - } else if (itsLineConfig) { - let outHtml = ''; - outHtml += '<ul>'; - for (let ls of itsLineConfig.lineArray) { - outHtml += `<li><span class="legend-layer-subitem">${ls[1]}</span>` + - `<hr style="height: ${ls[3]}px; background-color: ${ls[2]}">`; - } - outHtml += `<li><span class="legend-layer-subitem">${itsLineConfig.defaultName}</span>` + - `<hr style="height: ${itsLineConfig.defaultWidth}px; background-color: ${itsLineConfig.defaultColor}"></li>`; - outHtml += '</ul>'; - - return outHtml; - } else { - return ''; - } -} - -/** - * Its Layer class - * @augments LayerBaseVectorGeoJson - */ -class LayerItsInventory extends LayerBaseVectorGeoJson { - - /** - * ITS device layer, types available at http://transportal.cee.wisc.edu/its/inventory/ - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object|*} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - * @param {string} options.itsType the ITS device type, use the url flag at http://transportal.cee.wisc.edu/its/inventory/ - * @param {boolean} [options.addPopup=true] if the popup should be added automatically - * - * @param {string} [options.itsIcon=undefined] the ITS device type icon image see http://transportal.cee.wisc.edu/its/inventory/icons/ - * - * @param {object} [options.itsLineStyle=undefined] A single line style - * @param {string} options.itsLineStyle.color the line color as rgb or hex - * @param {number} [options.itsLineStyle.width=5] the line width - * - * @param {object} [options.itsIconConfig=undefined] The icon subtype configuration - * @param {string} options.itsIconConfig.prop The property used to define icon attribute symbolization - * @param {string} options.itsIconConfig.defaultName The default name to be used if no other match is found - * @param {string} options.itsIconConfig.defaultIcon The default icon to be used for no other matches - * @param {object} [options.itsIconConfig.iconArray=[]] an array, items with format [property, name, img] - * - * @param {object} [options.itsLineConfig=undefined] The property used to define icon attribute symbolization - * @param {string} options.itsLineConfig.prop The property used to define icon attribute symbolization - * @param {string} [options.itsLineConfig.defaultName=Other] The default name to be used if no other match is found - * @param {string} [options.itsLineConfig.defaultColor=red] The default line color to be used for no other matches - * @param {number} [options.itsLineConfig.defaultWidth] The default line width to be used for no other matches - * @param {object} [options.itsLineConfig.lineArray=[]] an array, items with format [property, name, color, optional width = 5] - */ - constructor(options) { - if (typeof options.itsType !== 'string') { - throw 'its type must be defined'; - } - - let addToLegend = ''; - - // define a style with the helper function if it is not explicitly defined - if (typeof options.style == 'undefined') { - options.style = defineStyle( - options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig - ); - addToLegend = defineLegend( - options.itsIcon, options.itsLineStyle, options.itsIconConfig, options.itsLineConfig - ); - } - - options.params = typeof options.params == 'object' ? options.params : {}; - $.extend(options.params, {format: 'JSON', resource: options.itsType}); - - super('http://transportal.cee.wisc.edu/its/inventory/', options); - - //add any additional content to the legend - this.addLegendContent(addToLegend); - - options.addPopup = typeof options.addPopup == 'boolean' ? options.addPopup : true; - - if (options.addPopup) { - mapPopup.addVectorPopup(this, function (props) { - return `<iframe src="http://transportal.cee.wisc.edu/its/inventory/?feature=${props['featureGuid']}" ` + - `height="250" width="350"></iframe>`; - }); - } - } - - /** - * callback to generate the parameters passed in the get request - * @callback makeGetParams - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - */ - mapMoveMakeGetParams(extent, zoomLevel) { - super.mapMoveMakeGetParams(extent, zoomLevel); - let lowerLeft = new ol.geom.Point([extent.minX, extent.minY]); - lowerLeft.transform(this.mapCrs, "EPSG:4326"); - let lowerLeftCoordinates = lowerLeft.getCoordinates(); - let upperRight = new ol.geom.Point([extent.maxX, extent.maxY]); - upperRight.transform(this.mapCrs, "EPSG:4326"); - let upperRightCoordinates = upperRight.getCoordinates(); - - $.extend(this.mapMoveParams, - { - L: lowerLeftCoordinates[0], - R: upperRightCoordinates[0], - B: lowerLeftCoordinates[1], - T: upperRightCoordinates[1] - }); - } -} - -nm.LayerItsInventory = LayerItsInventory; -export default LayerItsInventory; diff --git a/_src/layers/LayerRealEarthTile.js b/_src/layers/LayerRealEarthTile.js deleted file mode 100644 index 46eb2a906e7be5b262e57d526a4c95f0414238d5..0000000000000000000000000000000000000000 --- a/_src/layers/LayerRealEarthTile.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Created by gavorhes on 11/4/2015. - */ - -import $ from '../jquery/jquery'; -import LayerBaseXyzTile from './LayerBaseXyzTile'; -import RealEarthAnimateTile from '../mixin/RealEarthAnimateTile'; -import provide from '../util/provide'; -const mixIns = require('es6-mixins'); -const nm = provide('layers'); - -/** - * Real earth tile - * @augments LayerBaseXyzTile - */ -class LayerRealEarthTile extends LayerBaseXyzTile { - /** - * The base layer for all others - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {string} options.products - the products to request - * @param {boolean} [options.hasTimes=false] If the layer is time dependent, fixed set of dates - * @param {boolean} [options.animate=false] if the layer should be animated - */ - constructor(options) { - options.animate = typeof options.animate == 'boolean' ? options.animate : false; - if (!options.animate) { - super(`http://realearth.ssec.wisc.edu/api/image?products=${options.products}&x={x}&y={y}&z={z}`, options); - this._products = options.products; - } else { - super('', options); - this._products = options.products; - - if (!this.timeInit){ - mixIns([RealEarthAnimateTile], this); - } - this.timeInit(); - } - } -} - -nm.LayerRealEarthTile = LayerRealEarthTile; -export default LayerRealEarthTile; diff --git a/_src/mixin/RealEarthAnimate.js b/_src/mixin/RealEarthAnimate.js deleted file mode 100644 index 949a867e9c98407e2c5f6dc6d23f9dc011026ce0..0000000000000000000000000000000000000000 --- a/_src/mixin/RealEarthAnimate.js +++ /dev/null @@ -1,151 +0,0 @@ -/** - * Created by gavorhes on 12/4/2015. - */ -import provide from '../util/provide'; -import mapPopup from '../olHelpers/mapPopup'; -import $ from '../jquery/jquery'; -const nm = provide('mixin'); - - -/** - * The GMT offset time in minutes - * @type {number} - */ -let offsetMinutes = (new Date()).getTimezoneOffset(); - -/** - * Mixin to get the product times - * Be sure to call getTimeInit after the mixin has been applied - */ -class RealEarthAnimate { - - /** - * override base layer load - */ - load(){}; - - /** - * Call this after the mixin has been applied - */ - timeInit() { - if (!this._products) { - throw 'this mixin must be applied to one of the RealEarth layer objects with this.products defined'; - } - - this._rawDateStrings = []; - this._localDates = []; - this.localTimes = []; - this._animateEnabled = true; - this._loaded = true; - this._currentTime = undefined; - this._currentIndex = undefined; - - let _this = this; - - $.get('http://realearth.ssec.wisc.edu/api/products', {products: this._products}, function (d) { - if (d.length == 0) { - console.log(`${this._products} layer not available or does not have times`); - - return; - } - d = d[0]; - for (let i = 0; i < d['times'].length; i++) { - _this._loadDates.call(_this, d['times'][i]); - } - _this.loadCallback.call(_this); - _this._loadLatest.call(_this); - }, 'json'); - } - - - /** - * - * @returns {boolean} if animation enabled - */ - get animationEnabled(){ - return this._animateEnabled; - } - - /** - * Given the raw time string, add to the arrays to keep track of dates and cache - * @param {string} inString - input string to parse - * @returns {string} the converted string - * @protected - */ - _loadDates(inString) { - let yr = inString.slice(0, 4); - let month = inString.slice(4, 6); - let d = inString.slice(6, 8); - let hr = inString.slice(9, 11); - let mn = inString.slice(11, 13); - let sec = inString.slice(13, 15); - - let rawDateStr = inString.replace('.', '_'); - this._rawDateStrings.push(rawDateStr); - - let dteStr = `${month}/${d}/${yr} ${hr}:${mn}:${sec}`; - let newDte = new Date(dteStr); - newDte.setMinutes(newDte.getMinutes() - offsetMinutes); - this._localDates.push(newDte); - this.localTimes.push(newDte.getTime()); - - return rawDateStr; - } - - /** - * - * @protected - * @returns {boolean} if should continue - */ - _loadLatest(){ - mapPopup.closePopup(); - if (this.localTimes.length > 0){ - this._currentIndex = this.localTimes.length -1; - - return true; - } else { - return false; - } - } - - /** - * - * @param {number} theTime - the time - * @returns {boolean} true if new index, false if the same or below lowest value - */ - setLayerTime(theTime){ - if (!this.visible){ - return false; - } - - this._currentTime = theTime; - - let newIndex; - - if (theTime < this.localTimes[0]){ - return false; - } else if (theTime > this.localTimes[this.localTimes.length - 1]){ - newIndex = this.localTimes.length - 1; - } - - for (let i = 0; i < this.localTimes.length; i++){ - if (this.localTimes[i] >= theTime){ - newIndex = i; - break; - } - } - - if (newIndex == this._currentIndex){ - return false; - } else { - this._currentIndex = newIndex; - mapPopup.closePopup(); - - return true; - } - } -} - -nm.RealEarthAnimate = RealEarthAnimate; -export default RealEarthAnimate; - diff --git a/_src/mixin/RealEarthAnimateVector.js b/_src/mixin/RealEarthAnimateVector.js deleted file mode 100644 index 944223884ae7e5af602fa2c34ceb6c5c8ee4d587..0000000000000000000000000000000000000000 --- a/_src/mixin/RealEarthAnimateVector.js +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Created by gavorhes on 12/4/2015. - */ -import RealEarthAnimate from './RealEarthAnimate'; -import provide from '../util/provide'; -const nm = provide('mixin'); -const $ = require('jquery'); - - -/** - * class mixin to animate RealEarth vector layers - * @augments RealEarthAnimate - */ -class RealEarthAnimateVector extends RealEarthAnimate { - - /** - * override base layer load - */ - load() { - super.load(); - }; - - /** - * Call this after the mixin has been applied - */ - timeInit() { - super.timeInit(); - this._rawTimesLookup = {}; - this._dataCache = []; - } - - /** - * Given the raw time string, add to the arrays to keep track of dates and cache - * @param {string} inString - input date string - * @protected - */ - _loadDates(inString) { - let rawDte = super._loadDates(inString); - this._dataCache.push(null); - this._rawTimesLookup[rawDte] = null; - } - - /** - * @protected - */ - _loadLatest() { - if(super._loadLatest()){ - this._loadAtTimeIndex.call(this, this._currentIndex); - } - } - // - //http://realearth.ssec.wisc.edu/api/image?products=nexrhres_20160108_212500&x=1&y=5&z=4 - // - // 20160108.205500 - // http://realearth.ssec.wisc.edu/api/image?products=nexrhres_20160108_205500&x=34&y=46&z=7 - - /** - * Load the features at the date index specified - * @param {number} i the index of the features to be loaded by date - * @param {boolean} [setAsSource=true] set to false to trigger cache load only - * @private - */ - _loadAtTimeIndex(i, setAsSource) { - setAsSource = typeof setAsSource == 'boolean' ? setAsSource : true; - if (this._dataCache[i] != null) { - this.source.clear(); - this._loadFeatures(this._dataCache[i]); - } else { - let _this = this; - $.get('http://realearth.ssec.wisc.edu:80/api/shapes', - {products: `${this._products}_${this._rawDateStrings[i]}`}, - function (d) { - _this._dataCache[i] = d; - _this._rawTimesLookup[_this._rawDateStrings[i]] = d; - if (setAsSource) { - _this.source.clear(); - _this._loadFeatures.call(_this, _this._dataCache[i]); - } - }, 'json' - ); - } - } - - /** - * helper to load the features at the index specified - * @param {object} geojObj - the geojson object - * @private - */ - _loadFeatures(geojObj) { - this.source.addFeatures(this._geoJsonFormat.readFeatures(geojObj, this._transform)); - } - - setLayerTime(theTime) { - if (super.setLayerTime(theTime)){ - this._loadAtTimeIndex(this._currentIndex); - } else { - this.source.clear(); - } - } -} - -nm.RealEarthAnimateVector = RealEarthAnimateVector; -export default RealEarthAnimateVector; diff --git a/_src/ol/ol-build.js b/_src/ol/ol-build.js deleted file mode 100644 index a7280d86053c612d07ede905dc79b1760667a729..0000000000000000000000000000000000000000 --- a/_src/ol/ol-build.js +++ /dev/null @@ -1,408 +0,0 @@ -// OpenLayers 3. See http://openlayers.org/ -// License: https://raw.githubusercontent.com/openlayers/ol3/master/LICENSE.md -(function (root, factory) { - if (typeof exports === "object") { - module.exports = factory(); - } else if (typeof define === "function" && define.amd) { - define([], factory); - } else { - root.ol = factory(); - } -}(this, function () { - var OPENLAYERS = {}; - var n,x=this;function E(b,c,d){b=b.split(".");d=d||x;b[0]in d||!d.execScript||d.execScript("var "+b[0]);for(var e;b.length&&(e=b.shift());)b.length||void 0===c?d[e]?d=d[e]:d=d[e]={}:d[e]=c}function aa(b){b.qa=function(){return b.rc?b.rc:b.rc=new b}} -function ba(b){var c=typeof b;if("object"==c)if(b){if(b instanceof Array)return"array";if(b instanceof Object)return c;var d=Object.prototype.toString.call(b);if("[object Window]"==d)return"object";if("[object Array]"==d||"number"==typeof b.length&&"undefined"!=typeof b.splice&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("splice"))return"array";if("[object Function]"==d||"undefined"!=typeof b.call&&"undefined"!=typeof b.propertyIsEnumerable&&!b.propertyIsEnumerable("call"))return"function"}else return"null"; -else if("function"==c&&"undefined"==typeof b.call)return"object";return c}function ca(b){var c=ba(b);return"array"==c||"object"==c&&"number"==typeof b.length}function da(b){return"string"==typeof b}function ea(b){return"number"==typeof b}function ga(b){return"function"==ba(b)}function ha(b){var c=typeof b;return"object"==c&&null!=b||"function"==c}function I(b){return b[ia]||(b[ia]=++ja)}var ia="closure_uid_"+(1E9*Math.random()>>>0),ja=0;function ka(b,c,d){return b.call.apply(b.bind,arguments)} -function la(b,c,d){if(!b)throw Error();if(2<arguments.length){var e=Array.prototype.slice.call(arguments,2);return function(){var d=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(d,e);return b.apply(c,d)}}return function(){return b.apply(c,arguments)}}function ma(b,c,d){ma=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ka:la;return ma.apply(null,arguments)} -function na(b,c){var d=Array.prototype.slice.call(arguments,1);return function(){var c=d.slice();c.push.apply(c,arguments);return b.apply(this,c)}}function M(b,c){function d(){}d.prototype=c.prototype;b.Y=c.prototype;b.prototype=new d;b.prototype.constructor=b;b.Me=function(b,d,g){for(var h=Array(arguments.length-2),k=2;k<arguments.length;k++)h[k-2]=arguments[k];return c.prototype[d].apply(b,h)}};var oa;function N(){};var pa;var qa=String.prototype.trim?function(b){return b.trim()}:function(b){return b.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};function sa(b){if(!ta.test(b))return b;-1!=b.indexOf("&")&&(b=b.replace(ua,"&"));-1!=b.indexOf("<")&&(b=b.replace(va,"<"));-1!=b.indexOf(">")&&(b=b.replace(wa,">"));-1!=b.indexOf('"')&&(b=b.replace(xa,"""));-1!=b.indexOf("'")&&(b=b.replace(ya,"'"));-1!=b.indexOf("\x00")&&(b=b.replace(za,"�"));return b}var ua=/&/g,va=/</g,wa=/>/g,xa=/"/g,ya=/'/g,za=/\x00/g,ta=/[\x00&<>"']/; -function Aa(b,c){return b<c?-1:b>c?1:0};function Ba(b,c,d){return Math.min(Math.max(b,c),d)}var Ca=function(){var b;"cosh"in Math?b=Math.cosh:b=function(b){b=Math.exp(b);return(b+1/b)/2};return b}();function Da(b,c){var d=b%c;return 0>d*c?d+c:d};function Ea(b){return function(c){if(c)return[Ba(c[0],b[0],b[2]),Ba(c[1],b[1],b[3])]}}function Fa(b){return b};function Ga(b,c){return b>c?1:b<c?-1:0}function Ha(b,c,d){var e=b.length;if(b[0]<=c)return 0;if(!(c<=b[e-1]))if(0<d)for(d=1;d<e;++d){if(b[d]<c)return d-1}else if(0>d)for(d=1;d<e;++d){if(b[d]<=c)return d}else for(d=1;d<e;++d){if(b[d]==c)return d;if(b[d]<c)return b[d-1]-c<c-b[d]?d-1:d}return e-1}function Ia(b){return b.reduce(function(b,d){return Array.isArray(d)?b.concat(Ia(d)):b.concat(d)},[])}function Ja(b,c){var d,e=ca(c)?c:[c],f=e.length;for(d=0;d<f;d++)b[b.length]=e[d]} -function Ka(b,c){var d=b.indexOf(c),e=-1<d;e&&b.splice(d,1);return e}function La(b,c){var d=b.length;if(d!==c.length)return!1;for(var e=0;e<d;e++)if(b[e]!==c[e])return!1;return!0}function Ma(b){var c=Na,d=b.length,e=Array(b.length),f;for(f=0;f<d;f++)e[f]={index:f,value:b[f]};e.sort(function(b,d){return c(b.value,d.value)||b.index-d.index});for(f=0;f<b.length;f++)b[f]=e[f].value};function Oa(b){return function(c,d,e){if(void 0!==c)return c=Ha(b,c,e),c=Ba(c+d,0,b.length-1),b[c]}}function Pa(b,c,d){return function(e,f,g){if(void 0!==e)return e=Math.max(Math.floor(Math.log(c/e)/Math.log(b)+(0<g?0:0>g?1:.5))+f,0),void 0!==d&&(e=Math.min(e,d)),c/Math.pow(b,e)}};function Qa(b){if(void 0!==b)return 0}function Ra(b,c){if(void 0!==b)return b+c}function Sa(b){var c=2*Math.PI/b;return function(b,e){if(void 0!==b)return b=Math.floor((b+e)/c+.5)*c}}function Ta(){var b=5*Math.PI/180;return function(c,d){if(void 0!==c)return Math.abs(c+d)<=b?0:c+d}};function Ua(b,c,d){this.center=b;this.resolution=c;this.rotation=d};var Va="function"===typeof Object.assign?Object.assign:function(b,c){if(void 0===b||null===b)throw new TypeError("Cannot convert undefined or null to object");for(var d=Object(b),e=1,f=arguments.length;e<f;++e){var g=arguments[e];if(void 0!==g&&null!==g)for(var h in g)g.hasOwnProperty(h)&&(d[h]=g[h])}return d};function Wa(b){for(var c in b)delete b[c]}function Xa(b){var c=[],d;for(d in b)c.push(b[d]);return c}function Za(b){for(var c in b)return!1;return!c};var $a="olm_"+(1E4*Math.random()|0);function ab(b){function c(c){var e=b.listener,f=b.bc||b.target;b.ec&&P(b);return e.call(f,c)}return b.cc=c}function bb(b,c,d,e){for(var f,g=0,h=b.length;g<h;++g)if(f=b[g],f.listener===c&&f.bc===d)return e&&(f.deleteIndex=g),f}function cb(b,c){var d=b[$a];return d?d[c]:void 0}function db(b){var c=b[$a];c||(c=b[$a]={});return c} -function eb(b,c){var d=cb(b,c);if(d){for(var e=0,f=d.length;e<f;++e)b.removeEventListener(c,d[e].cc),Wa(d[e]);d.length=0;if(d=b[$a])delete d[c],0===Object.keys(d).length&&delete b[$a]}}function R(b,c,d,e,f){var g=db(b),h=g[c];h||(h=g[c]=[]);(g=bb(h,d,e,!1))?f||(g.ec=!1):(g={bc:e,ec:!!f,listener:d,target:b,type:c},b.addEventListener(c,ab(g)),h.push(g));return g}function fb(b,c,d,e){(b=cb(b,c))&&(d=bb(b,d,e,!0))&&P(d)} -function P(b){if(b&&b.target){b.target.removeEventListener(b.type,b.cc);var c=cb(b.target,b.type);if(c){var d="deleteIndex"in b?b.deleteIndex:c.indexOf(b);-1!==d&&c.splice(d,1);0===c.length&&eb(b.target,b.type)}Wa(b)}}function gb(b){var c=db(b),d;for(d in c)eb(b,d)};function hb(){}hb.prototype.ha=!1;function ib(b){b.ha||(b.ha=!0,b.K())}hb.prototype.K=N;function S(b,c){this.type=b;this.target=c||null}S.prototype.preventDefault=S.prototype.stopPropagation=function(){this.me=!0};function jb(b){b.stopPropagation()}function kb(b){b.preventDefault()};function lb(){this.H={};this.B={}}M(lb,hb);lb.prototype.addEventListener=function(b,c){var d=this.B[b];d||(d=this.B[b]=[]);-1===d.indexOf(c)&&d.push(c)};function T(b,c){var d="string"===typeof c?new S(c):c,e=d.type;d.target=b;var f=b.B[e],g;if(f){e in b.H||(b.H[e]=0);for(var h=0,k=f.length;h<k;++h)if(!1===f[h].call(b,d)||d.me){g=!1;break}d=b.H[e];for(delete b.H[e];d--;)b.removeEventListener(e,N);return g}}lb.prototype.K=function(){gb(this)}; -function mb(b,c){return c?c in b.B:0<Object.keys(b.B).length}lb.prototype.removeEventListener=function(b,c){var d=this.B[b];if(d){var e=d.indexOf(c);b in this.H?(d[e]=N,++this.H[b]):(d.splice(e,1),0===d.length&&delete this.B[b])}};function nb(){lb.call(this);this.f=0}M(nb,lb);nb.prototype.w=function(){++this.f;T(this,"change")};nb.prototype.V=function(b,c,d){if(Array.isArray(b)){for(var e=b.length,f=Array(e),g=0;g<e;++g)f[g]=R(this,b[g],c,d);return f}return R(this,b,c,d)};nb.prototype.Rc=function(b,c,d){if(Array.isArray(b)){for(var e=b.length,f=Array(e),g=0;g<e;++g)f[g]=R(this,b[g],c,d,!0);return f}return R(this,b,c,d,!0)};function ob(b,c,d){S.call(this,b);this.key=c;this.oldValue=d}M(ob,S);function U(b){nb.call(this);I(this);this.I={};void 0!==b&&this.l(b)}M(U,nb);var pb={};function qb(b){return pb.hasOwnProperty(b)?pb[b]:pb[b]="change:"+b}U.prototype.get=function(b){var c;this.I.hasOwnProperty(b)&&(c=this.I[b]);return c};U.prototype.ua=function(){return Va({},this.I)};U.prototype.set=function(b,c,d){d?this.I[b]=c:(d=this.I[b],this.I[b]=c,d!==c&&(c=qb(b),T(this,new ob(c,b,d)),T(this,new ob("propertychange",b,d))))}; -U.prototype.l=function(b,c){for(var d in b)this.set(d,b[d],c)};function rb(b,c,d){void 0===d&&(d=[0,0]);d[0]=b[0]*c+.5|0;d[1]=b[1]*c+.5|0;return d}function sb(b,c){if(Array.isArray(b))return b;void 0===c?c=[b,b]:(c[0]=b,c[1]=b);return c};function tb(b,c){b[0]+=c[0];b[1]+=c[1]}function ub(b,c){var d=Math.cos(c),e=Math.sin(c),f=b[1]*d+b[0]*e;b[0]=b[0]*d-b[1]*e;b[1]=f};function vb(b){this.length=b.length||b;for(var c=0;c<this.length;c++)this[c]=b[c]||0}vb.prototype.BYTES_PER_ELEMENT=4;vb.prototype.set=function(b,c){c=c||0;for(var d=0;d<b.length&&c+d<this.length;d++)this[c+d]=b[d]};vb.prototype.toString=Array.prototype.join;"undefined"==typeof Float32Array&&(vb.BYTES_PER_ELEMENT=4,vb.prototype.BYTES_PER_ELEMENT=vb.prototype.BYTES_PER_ELEMENT,vb.prototype.set=vb.prototype.set,vb.prototype.toString=vb.prototype.toString,E("Float32Array",vb,void 0));function wb(b){this.length=b.length||b;for(var c=0;c<this.length;c++)this[c]=b[c]||0}wb.prototype.BYTES_PER_ELEMENT=8;wb.prototype.set=function(b,c){c=c||0;for(var d=0;d<b.length&&c+d<this.length;d++)this[c+d]=b[d]};wb.prototype.toString=Array.prototype.join;if("undefined"==typeof Float64Array){try{wb.BYTES_PER_ELEMENT=8}catch(b){}wb.prototype.BYTES_PER_ELEMENT=wb.prototype.BYTES_PER_ELEMENT;wb.prototype.set=wb.prototype.set;wb.prototype.toString=wb.prototype.toString;E("Float64Array",wb,void 0)};function xb(b,c,d,e,f){b[0]=c;b[1]=d;b[2]=e;b[3]=f};function yb(){var b=Array(16);zb(b,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return b}function Ab(){var b=Array(16);zb(b,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return b}function zb(b,c,d,e,f,g,h,k,l,m,p,q,r,u,w,y,z){b[0]=c;b[1]=d;b[2]=e;b[3]=f;b[4]=g;b[5]=h;b[6]=k;b[7]=l;b[8]=m;b[9]=p;b[10]=q;b[11]=r;b[12]=u;b[13]=w;b[14]=y;b[15]=z} -function Bb(b,c){b[0]=c[0];b[1]=c[1];b[2]=c[2];b[3]=c[3];b[4]=c[4];b[5]=c[5];b[6]=c[6];b[7]=c[7];b[8]=c[8];b[9]=c[9];b[10]=c[10];b[11]=c[11];b[12]=c[12];b[13]=c[13];b[14]=c[14];b[15]=c[15]}function Cb(b){b[0]=1;b[1]=0;b[2]=0;b[3]=0;b[4]=0;b[5]=1;b[6]=0;b[7]=0;b[8]=0;b[9]=0;b[10]=1;b[11]=0;b[12]=0;b[13]=0;b[14]=0;b[15]=1} -function Db(b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],k=b[5],l=b[6],m=b[7],p=b[8],q=b[9],r=b[10],u=b[11],w=b[12],y=b[13],z=b[14],D=b[15],t=d*k-e*h,v=d*l-f*h,B=d*m-g*h,F=e*l-f*k,C=e*m-g*k,G=f*m-g*l,J=p*y-q*w,A=p*z-r*w,H=p*D-u*w,O=q*z-r*y,Q=q*D-u*y,L=r*D-u*z,K=t*L-v*Q+B*O+F*H-C*A+G*J;0!=K&&(K=1/K,c[0]=(k*L-l*Q+m*O)*K,c[1]=(-e*L+f*Q-g*O)*K,c[2]=(y*G-z*C+D*F)*K,c[3]=(-q*G+r*C-u*F)*K,c[4]=(-h*L+l*H-m*A)*K,c[5]=(d*L-f*H+g*A)*K,c[6]=(-w*G+z*B-D*v)*K,c[7]=(p*G-r*B+u*v)*K,c[8]=(h*Q-k*H+m*J)*K,c[9]=(-d*Q+ -e*H-g*J)*K,c[10]=(w*C-y*B+D*t)*K,c[11]=(-p*C+q*B-u*t)*K,c[12]=(-h*O+k*A-l*J)*K,c[13]=(d*O-e*A+f*J)*K,c[14]=(-w*F+y*v-z*t)*K,c[15]=(p*F-q*v+r*t)*K)}function Eb(b,c,d){var e=b[1]*c+b[5]*d+0*b[9]+b[13],f=b[2]*c+b[6]*d+0*b[10]+b[14],g=b[3]*c+b[7]*d+0*b[11]+b[15];b[12]=b[0]*c+b[4]*d+0*b[8]+b[12];b[13]=e;b[14]=f;b[15]=g}function Fb(b,c,d){zb(b,b[0]*c,b[1]*c,b[2]*c,b[3]*c,b[4]*d,b[5]*d,b[6]*d,b[7]*d,1*b[8],1*b[9],1*b[10],1*b[11],b[12],b[13],b[14],b[15])} -function Gb(b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],k=b[5],l=b[6],m=b[7],p=Math.cos(c),q=Math.sin(c);b[0]=d*p+h*q;b[1]=e*p+k*q;b[2]=f*p+l*q;b[3]=g*p+m*q;b[4]=d*-q+h*p;b[5]=e*-q+k*p;b[6]=f*-q+l*p;b[7]=g*-q+m*p}new Float64Array(3);new Float64Array(3);new Float64Array(4);new Float64Array(4);new Float64Array(4);new Float64Array(16);function Hb(b){for(var c=Ib(),d=0,e=b.length;d<e;++d)Jb(c,b[d]);return c}function Kb(b,c,d){return d?(d[0]=b[0]-c,d[1]=b[1]-c,d[2]=b[2]+c,d[3]=b[3]+c,d):[b[0]-c,b[1]-c,b[2]+c,b[3]+c]}function Lb(b,c){return c?(c[0]=b[0],c[1]=b[1],c[2]=b[2],c[3]=b[3],c):b.slice()}function Mb(b,c){return b[0]<=c[0]&&c[2]<=b[2]&&b[1]<=c[1]&&c[3]<=b[3]}function Ib(){return[Infinity,Infinity,-Infinity,-Infinity]}function Nb(b,c,d,e,f){return f?(f[0]=b,f[1]=c,f[2]=d,f[3]=e,f):[b,c,d,e]} -function Ob(b){return Nb(Infinity,Infinity,-Infinity,-Infinity,b)}function Pb(b,c){var d=b[0],e=b[1];return Nb(d,e,d,e,c)}function Qb(b,c){return b[0]==c[0]&&b[2]==c[2]&&b[1]==c[1]&&b[3]==c[3]}function Rb(b,c){c[0]<b[0]&&(b[0]=c[0]);c[2]>b[2]&&(b[2]=c[2]);c[1]<b[1]&&(b[1]=c[1]);c[3]>b[3]&&(b[3]=c[3])}function Jb(b,c){c[0]<b[0]&&(b[0]=c[0]);c[0]>b[2]&&(b[2]=c[0]);c[1]<b[1]&&(b[1]=c[1]);c[1]>b[3]&&(b[3]=c[1])} -function Sb(b,c,d,e,f){for(;d<e;d+=f){var g=b,h=c[d],k=c[d+1];g[0]=Math.min(g[0],h);g[1]=Math.min(g[1],k);g[2]=Math.max(g[2],h);g[3]=Math.max(g[3],k)}return b}function Tb(b){var c=0;b[2]<b[0]||b[3]<b[1]||(c=Ub(b)*Vb(b));return c}function Wb(b){return[b[0],b[1]]}function Xb(b){return[(b[0]+b[2])/2,(b[1]+b[3])/2]} -function Yb(b,c,d,e){var f=c*e[0]/2;e=c*e[1]/2;c=Math.cos(d);var g=Math.sin(d);d=f*c;f*=g;c*=e;var h=e*g,k=b[0],l=b[1];b=k-d+h;e=k-d-h;g=k+d-h;d=k+d+h;var h=l-f-c,k=l-f+c,m=l+f+c,f=l+f-c;return Nb(Math.min(b,e,g,d),Math.min(h,k,m,f),Math.max(b,e,g,d),Math.max(h,k,m,f),void 0)}function Vb(b){return b[3]-b[1]}function Zb(b,c){var d=Ib();$b(b,c)&&(d[0]=b[0]>c[0]?b[0]:c[0],d[1]=b[1]>c[1]?b[1]:c[1],d[2]=b[2]<c[2]?b[2]:c[2],d[3]=b[3]<c[3]?b[3]:c[3]);return d}function ac(b){return[b[0],b[3]]} -function Ub(b){return b[2]-b[0]}function $b(b,c){return b[0]<=c[2]&&b[2]>=c[0]&&b[1]<=c[3]&&b[3]>=c[1]};function bc(){return!0}function cc(){return!1};/* - - Latitude/longitude spherical geodesy formulae taken from - http://www.movable-type.co.uk/scripts/latlong.html - Licensed under CC-BY-3.0. -*/ -function dc(b){this.radius=b}function ec(b,c){var d=b[1]*Math.PI/180,e=c[1]*Math.PI/180,f=(e-d)/2,g=(c[0]-b[0])*Math.PI/180/2,d=Math.sin(f)*Math.sin(f)+Math.sin(g)*Math.sin(g)*Math.cos(d)*Math.cos(e);return 2*fc.radius*Math.atan2(Math.sqrt(d),Math.sqrt(1-d))} -dc.prototype.offset=function(b,c,d){var e=b[1]*Math.PI/180;c/=this.radius;var f=Math.asin(Math.sin(e)*Math.cos(c)+Math.cos(e)*Math.sin(c)*Math.cos(d));return[180*(b[0]*Math.PI/180+Math.atan2(Math.sin(d)*Math.sin(c)*Math.cos(e),Math.cos(c)-Math.sin(e)*Math.sin(f)))/Math.PI,180*f/Math.PI]};var fc=new dc(6370997);var gc={};gc.degrees=2*Math.PI*fc.radius/360;gc.ft=.3048;gc.m=1;gc["us-ft"]=1200/3937; -function hc(b){this.na=b.code;this.b=b.units;this.h=void 0!==b.extent?b.extent:null;this.f=void 0!==b.global?b.global:!1;this.a=!(!this.f||!this.h);this.i=void 0!==b.getPointResolution?b.getPointResolution:this.j;this.c=null;this.g=b.metersPerUnit;var c=ic,d=b.code,e=jc||x.proj4;if("function"==typeof e&&void 0===c[d]){var f=e.defs(d);if(void 0!==f){void 0===b.metersPerUnit&&(this.g=f.to_meter);void 0===b.units&&(this.b=f.units);var g,h;for(g in c)if(b=e.defs(g),void 0!==b)if(c=kc(g),b===f)lc([c,this]); -else{h=e(g,d);b=h.forward;h=h.inverse;var c=kc(c),k=kc(this);mc(c,k,nc(b));mc(k,c,nc(h))}}}}hc.prototype.l=function(){return this.na};hc.prototype.C=function(){return this.h};function oc(b){return b.g||gc[b.b]}hc.prototype.j=function(b,c){if("degrees"==this.b)return b;var d=pc(this,kc("EPSG:4326")),e=[c[0]-b/2,c[1],c[0]+b/2,c[1],c[0],c[1]-b/2,c[0],c[1]+b/2],e=d(e,e,2),d=(ec(e.slice(0,2),e.slice(2,4))+ec(e.slice(4,6),e.slice(6,8)))/2,e=oc(this);void 0!==e&&(d/=e);return d}; -hc.prototype.getPointResolution=function(b,c){return this.i(b,c)};var ic={},qc={},jc=null;function lc(b){rc(b);b.forEach(function(c){b.forEach(function(b){c!==b&&mc(c,b,sc)})})}function tc(b){ic[b.na]=b;mc(b,b,sc)}function rc(b){var c=[];b.forEach(function(b){c.push(tc(b))})}function uc(b){return b?"string"===typeof b?kc(b):b:kc("EPSG:3857")}function mc(b,c,d){b=b.na;c=c.na;b in qc||(qc[b]={});qc[b][c]=d} -function nc(b){return function(c,d,e){var f=c.length;e=void 0!==e?e:2;d=void 0!==d?d:Array(f);var g,h;for(h=0;h<f;h+=e)for(g=b([c[h],c[h+1]]),d[h]=g[0],d[h+1]=g[1],g=e-1;2<=g;--g)d[h+g]=c[h+g];return d}}function kc(b){var c;if(b instanceof hc)c=b;else if("string"===typeof b){c=ic[b];var d=jc||x.proj4;void 0===c&&"function"==typeof d&&void 0!==d.defs(b)&&(c=new hc({code:b}),tc(c))}else c=null;return c}function vc(b,c){if(b===c)return!0;var d=b.b===c.b;return b.na===c.na?d:pc(b,c)===sc&&d} -function wc(b,c){var d=kc(b),e=kc(c);return pc(d,e)}function pc(b,c){var d=b.na,e=c.na,f;d in qc&&e in qc[d]&&(f=qc[d][e]);void 0===f&&(f=xc);return f}function xc(b,c){if(void 0!==c&&b!==c){for(var d=0,e=b.length;d<e;++d)c[d]=b[d];b=c}return b}function sc(b,c){var d;if(void 0!==c){d=0;for(var e=b.length;d<e;++d)c[d]=b[d];d=c}else d=b.slice();return d};function yc(){U.call(this);this.u=Ib();this.v=-1;this.h={};this.s=this.i=0}M(yc,U);yc.prototype.C=function(b){this.v!=this.f&&(this.u=this.ab(this.u),this.v=this.f);var c=this.u;b?(b[0]=c[0],b[1]=c[1],b[2]=c[2],b[3]=c[3]):b=c;return b};yc.prototype.o=function(b,c){this.wb(wc(b,c));return this};function zc(b,c,d,e,f,g){var h=f[0],k=f[1],l=f[4],m=f[5],p=f[12];f=f[13];for(var q=g?g:[],r=0;c<d;c+=e){var u=b[c],w=b[c+1];q[r++]=h*u+l*w+p;q[r++]=k*u+m*w+f}g&&q.length!=r&&(q.length=r);return q};function Ac(){yc.call(this);this.g="XY";this.b=2;this.a=null}M(Ac,yc);function Bc(b){if("XY"==b)return 2;if("XYZ"==b||"XYM"==b)return 3;if("XYZM"==b)return 4}n=Ac.prototype;n.ab=function(b){var c=this.a,d=this.a.length,e=this.b;b=Ob(b);return Sb(b,c,0,d,e)}; -n.Hb=function(b){this.s!=this.f&&(Wa(this.h),this.i=0,this.s=this.f);if(0>b||0!==this.i&&b<=this.i)return this;var c=b.toString();if(this.h.hasOwnProperty(c))return this.h[c];var d=this.Ea(b);if(d.a.length<this.a.length)return this.h[c]=d;this.i=b;return this};n.Ea=function(){return this};function V(b,c,d){b.b=Bc(c);b.g=c;b.a=d}function Cc(b,c,d,e){if(c)d=Bc(c);else{for(c=0;c<e;++c){if(0===d.length){b.g="XY";b.b=2;return}d=d[0]}d=d.length;c=2==d?"XY":3==d?"XYZ":4==d?"XYZM":void 0}b.g=c;b.b=d} -n.wb=function(b){this.a&&(b(this.a,this.a,this.b),this.w())};n.rotate=function(b,c){var d=this.a;if(d){for(var e=d.length,f=this.b,g=d?d:[],h=Math.cos(b),k=Math.sin(b),l=c[0],m=c[1],p=0,q=0;q<e;q+=f){var r=d[q]-l,u=d[q+1]-m;g[p++]=l+r*h-u*k;g[p++]=m+r*k+u*h;for(r=q+2;r<q+f;++r)g[p++]=d[r]}d&&g.length!=p&&(g.length=p);this.w()}};function Dc(b,c){var d=0,e,f;e=0;for(f=c.length;e<f;++e)b[d++]=c[e];return d}function Ec(b,c,d,e){var f,g;f=0;for(g=d.length;f<g;++f){var h=d[f],k;for(k=0;k<e;++k)b[c++]=h[k]}return c}function Fc(b,c,d,e,f){f=f?f:[];var g=0,h,k;h=0;for(k=d.length;h<k;++h)c=Ec(b,c,d[h],e),f[g++]=c;f.length=g;return f};function Gc(b,c,d,e,f){f=void 0!==f?f:[];for(var g=0;c<d;c+=e)f[g++]=b.slice(c,c+e);f.length=g;return f}function Hc(b,c,d,e,f){f=void 0!==f?f:[];var g=0,h,k;h=0;for(k=d.length;h<k;++h){var l=d[h];f[g++]=Gc(b,c,l,e,f[g]);c=l}f.length=g;return f};function Ic(b,c,d,e,f,g,h){var k=(d-c)/e;if(3>k){for(;c<d;c+=e)g[h++]=b[c],g[h++]=b[c+1];return h}var l=Array(k);l[0]=1;l[k-1]=1;d=[c,d-e];for(var m=0,p;0<d.length;){var q=d.pop(),r=d.pop(),u=0,w=b[r],y=b[r+1],z=b[q],D=b[q+1];for(p=r+e;p<q;p+=e){var t,v=b[p];t=b[p+1];var B=w,F=y,C=z-B,G=D-F;if(0!==C||0!==G){var J=((v-B)*C+(t-F)*G)/(C*C+G*G);1<J?(B=z,F=D):0<J&&(B+=C*J,F+=G*J)}v=B-v;t=F-t;t=v*v+t*t;t>u&&(m=p,u=t)}u>f&&(l[(m-c)/e]=1,r+e<m&&d.push(r,m),m+e<q&&d.push(m,q))}for(p=0;p<k;++p)l[p]&&(g[h++]= -b[c+p*e],g[h++]=b[c+p*e+1]);return h} -function Jc(b,c,d,e,f,g,h,k){var l,m;l=0;for(m=d.length;l<m;++l){var p=d[l];a:{var q=b,r=p,u=e,w=f,y=g;if(c!=r){var z=w*Math.round(q[c]/w),D=w*Math.round(q[c+1]/w);c+=u;y[h++]=z;y[h++]=D;var t=void 0,v=void 0;do if(t=w*Math.round(q[c]/w),v=w*Math.round(q[c+1]/w),c+=u,c==r){y[h++]=t;y[h++]=v;break a}while(t==z&&v==D);for(;c<r;){var B,F;B=w*Math.round(q[c]/w);F=w*Math.round(q[c+1]/w);c+=u;if(B!=t||F!=v){var C=t-z,G=v-D,J=B-z,A=F-D;C*A==G*J&&(0>C&&J<C||C==J||0<C&&J>C)&&(0>G&&A<G||G==A||0<G&&A>G)||(y[h++]= -t,y[h++]=v,z=t,D=v);t=B;v=F}}y[h++]=t;y[h++]=v}}k.push(h);c=p}return h};function Kc(b,c){Ac.call(this);this.X(b,c)}M(Kc,Ac);n=Kc.prototype;n.clone=function(){var b=new Kc(null);V(b,this.g,this.a.slice());b.w();return b};n.oa=function(){return Gc(this.a,0,this.a.length,this.b)};n.Ea=function(b){var c=[];c.length=Ic(this.a,0,this.a.length,this.b,b,c,0);b=new Kc(null);V(b,"XY",c);b.w();return b};n.U=function(){return"LinearRing"};n.X=function(b,c){b?(Cc(this,c,b,1),this.a||(this.a=[]),this.a.length=Ec(this.a,0,b,this.b)):V(this,"XY",null);this.w()};function Lc(b,c){Ac.call(this);this.X(b,c)}M(Lc,Ac);n=Lc.prototype;n.clone=function(){var b=new Lc(null);V(b,this.g,this.a.slice());b.w();return b};n.oa=function(){return this.a?this.a.slice():[]};n.ab=function(b){return Pb(this.a,b)};n.U=function(){return"Point"};n.X=function(b,c){b?(Cc(this,c,b,0),this.a||(this.a=[]),this.a.length=Dc(this.a,b)):V(this,"XY",null);this.w()};function Mc(b,c,d,e,f,g){for(var h=!1,k=b[d-e],l=b[d-e+1];c<d;c+=e){var m=b[c],p=b[c+1];l>g!=p>g&&f<(m-k)*(g-l)/(p-l)+k&&(h=!h);k=m;l=p}return h};function Nc(b,c,d,e,f,g,h){var k,l,m,p,q,r=f[g+1],u=[],w=d[0];m=b[w-e];q=b[w-e+1];for(k=c;k<w;k+=e){p=b[k];l=b[k+1];if(r<=q&&l<=r||q<=r&&r<=l)m=(r-q)/(l-q)*(p-m)+m,u.push(m);m=p;q=l}w=NaN;q=-Infinity;u.sort(Ga);m=u[0];k=1;for(l=u.length;k<l;++k){p=u[k];var y=Math.abs(p-m);if(y>q){m=(m+p)/2;var z;a:if(0!==d.length&&Mc(b,c,d[0],e,m,r)){var D=z=void 0;z=1;for(D=d.length;z<D;++z)if(Mc(b,d[z-1],d[z],e,m,r)){z=!1;break a}z=!0}else z=!1;z&&(w=m,q=y)}m=p}isNaN(w)&&(w=f[g]);return h?(h.push(w,r),h):[w,r]} -;function Oc(b,c,d,e){for(var f=0,g=b[d-e],h=b[d-e+1];c<d;c+=e)var k=b[c],l=b[c+1],f=f+(k-g)*(l+h),g=k,h=l;return 0<f}function Pc(b,c,d,e){var f=0;e=void 0!==e?e:!1;var g,h;g=0;for(h=c.length;g<h;++g){var k=c[g],f=Oc(b,f,k,d);if(0===g){if(e&&f||!e&&!f)return!1}else if(e&&!f||!e&&f)return!1;f=k}return!0} -function Qc(b,c,d,e,f){f=void 0!==f?f:!1;var g,h;g=0;for(h=d.length;g<h;++g){var k=d[g],l=Oc(b,c,k,e);if(0===g?f&&l||!f&&!l:f&&!l||!f&&l)for(var l=b,m=k,p=e;c<m-p;){var q;for(q=0;q<p;++q){var r=l[c+q];l[c+q]=l[m-p+q];l[m-p+q]=r}c+=p;m-=p}c=k}return c}function Rc(b,c,d,e){var f=0,g,h;g=0;for(h=c.length;g<h;++g)f=Qc(b,f,c[g],d,e);return f};function Sc(b,c){Ac.call(this);this.c=[];this.A=-1;this.D=null;this.G=-1;this.j=null;this.X(b,c)}M(Sc,Ac);n=Sc.prototype;n.clone=function(){var b=new Sc(null);Tc(b,this.g,this.a.slice(),this.c.slice());return b};n.oa=function(b){var c;void 0!==b?(c=Uc(this).slice(),Qc(c,0,this.c,this.b,b)):c=this.a;return Hc(c,0,this.c,this.b)};n.Ta=function(){return this.c};function Vc(b){if(b.A!=b.f){var c=Xb(b.C());b.D=Nc(Uc(b),0,b.c,b.b,c,0);b.A=b.f}return b.D} -function Uc(b){if(b.G!=b.f){var c=b.a;Pc(c,b.c,b.b)?b.j=c:(b.j=c.slice(),b.j.length=Qc(b.j,0,b.c,b.b));b.G=b.f}return b.j}n.Ea=function(b){var c=[],d=[];c.length=Jc(this.a,0,this.c,this.b,Math.sqrt(b),c,0,d);b=new Sc(null);Tc(b,"XY",c,d);return b};n.U=function(){return"Polygon"};n.X=function(b,c){if(b){Cc(this,c,b,2);this.a||(this.a=[]);var d=Fc(this.a,0,b,this.b,this.c);this.a.length=0===d.length?0:d[d.length-1];this.w()}else Tc(this,"XY",null,this.c)};function Tc(b,c,d,e){V(b,c,d);b.c=e;b.w()};function Wc(b){U.call(this);b=b||{};this.g=[0,0];var c={};c.center=void 0!==b.center?b.center:null;this.h=uc(b.projection);var d,e,f,g=void 0!==b.minZoom?b.minZoom:0;d=void 0!==b.maxZoom?b.maxZoom:28;var h=void 0!==b.zoomFactor?b.zoomFactor:2;if(void 0!==b.resolutions)d=b.resolutions,e=d[0],f=d[d.length-1],d=Oa(d);else{e=uc(b.projection);f=e.C();var k=(f?Math.max(Ub(f),Vb(f)):360*gc.degrees/oc(e))/256/Math.pow(2,0),l=k/Math.pow(2,28);e=b.maxResolution;void 0!==e?g=0:e=k/Math.pow(h,g);f=b.minResolution; -void 0===f&&(f=void 0!==b.maxZoom?void 0!==b.maxResolution?e/Math.pow(h,d):k/Math.pow(h,d):l);d=g+Math.floor(Math.log(e/f)/Math.log(h));f=e/Math.pow(h,d-g);d=Pa(h,e,d-g)}this.b=e;this.i=f;this.c=g;g=void 0!==b.extent?Ea(b.extent):Fa;(void 0!==b.enableRotation?b.enableRotation:1)?(e=b.constrainRotation,e=void 0===e||!0===e?Ta():!1===e?Ra:ea(e)?Sa(e):Ra):e=Qa;this.a=new Ua(g,d,e);void 0!==b.resolution?c.resolution=b.resolution:void 0!==b.zoom&&(c.resolution=this.constrainResolution(this.b,b.zoom-this.c)); -c.rotation=void 0!==b.rotation?b.rotation:0;this.l(c)}M(Wc,U);n=Wc.prototype;n.constrainResolution=function(b,c,d){return this.a.resolution(b,c||0,d||0)};n.constrainRotation=function(b,c){return this.a.rotation(b,c||0)};n.ga=function(){return this.get("center")};n.dc=function(b){var c=this.ga(),d=this.J(),e=Xc(this);return Yb(c,d,e,b)};n.ae=function(){return this.h};n.J=function(){return this.get("resolution")};function Yc(b,c){return Math.max(Ub(b)/c[0],Vb(b)/c[1])} -function Xc(b){return b.get("rotation")}n.N=function(){var b=this.ga(),c=this.h,d=this.J(),e=Xc(this);return{center:[Math.round(b[0]/d)*d,Math.round(b[1]/d)*d],projection:void 0!==c?c:null,resolution:d,rotation:e}};n.kd=function(){var b,c=this.J();if(void 0!==c){var d,e=0;do{d=this.constrainResolution(this.b,e);if(d==c){b=e;break}++e}while(d>this.i)}return void 0!==b?this.c+b:b}; -n.fd=function(b,c,d){if(!(b instanceof Ac)){var e=b[0],f=b[1],g=b[2],h=b[3],e=[e,f,e,h,g,h,g,f,e,f],f=new Sc(null);Tc(f,"XY",e,[e.length]);b=f}e=d||{};d=void 0!==e.padding?e.padding:[0,0,0,0];var h=void 0!==e.constrainResolution?e.constrainResolution:!0,f=void 0!==e.nearest?e.nearest:!1,k;void 0!==e.minResolution?k=e.minResolution:void 0!==e.maxZoom?k=this.constrainResolution(this.b,e.maxZoom-this.c,0):k=0;var l=b.a,g=Xc(this),e=Math.cos(-g),g=Math.sin(-g),m=Infinity,p=Infinity,q=-Infinity,r=-Infinity; -b=b.b;for(var u=0,w=l.length;u<w;u+=b)var y=l[u]*e-l[u+1]*g,z=l[u]*g+l[u+1]*e,m=Math.min(m,y),p=Math.min(p,z),q=Math.max(q,y),r=Math.max(r,z);c=Yc([m,p,q,r],[c[0]-d[1]-d[3],c[1]-d[0]-d[2]]);c=isNaN(c)?k:Math.max(c,k);h&&(k=this.constrainResolution(c,0,0),!f&&k<c&&(k=this.constrainResolution(k,-1,0)),c=k);Zc(this,c);g=-g;k=(m+q)/2+(d[1]-d[3])/2*c;c=(p+r)/2+(d[0]-d[2])/2*c;this.ma([k*e-c*g,c*e+k*g])}; -n.rotate=function(b,c){if(void 0!==c){var d,e=this.ga();void 0!==e&&(d=[e[0]-c[0],e[1]-c[1]],ub(d,b-Xc(this)),tb(d,c));this.ma(d)}this.set("rotation",b)};n.ma=function(b){this.set("center",b)};function $c(b,c){b.g[1]+=c}function Zc(b,c){b.set("resolution",c)}n.ue=function(b){b=this.constrainResolution(this.b,b-this.c,0);Zc(this,b)};function ad(b){return 1-Math.pow(1-b,3)}function bd(b){return 3*b*b-2*b*b*b}function cd(b){return b};function dd(b){var c=b.source,d=b.start?b.start:Date.now(),e=c[0],f=c[1],g=void 0!==b.duration?b.duration:1E3,h=b.easing?b.easing:bd;return function(b,c){if(c.time<d)return c.animate=!0,c.viewHints[0]+=1,!0;if(c.time<d+g){var m=1-h((c.time-d)/g),p=e-c.viewState.center[0],q=f-c.viewState.center[1];c.animate=!0;c.viewState.center[0]+=m*p;c.viewState.center[1]+=m*q;c.viewHints[0]+=1;return!0}return!1}} -function ed(b){var c=b.rotation?b.rotation:0,d=b.start?b.start:Date.now(),e=void 0!==b.duration?b.duration:1E3,f=b.easing?b.easing:bd,g=b.anchor?b.anchor:null;return function(b,k){if(k.time<d)return k.animate=!0,k.viewHints[0]+=1,!0;if(k.time<d+e){var l=1-f((k.time-d)/e),l=(c-k.viewState.rotation)*l;k.animate=!0;k.viewState.rotation+=l;if(g){var m=k.viewState.center;m[0]-=g[0];m[1]-=g[1];ub(m,l);tb(m,g)}k.viewHints[0]+=1;return!0}return!1}} -function fd(b){var c=b.resolution,d=b.start?b.start:Date.now(),e=void 0!==b.duration?b.duration:1E3,f=b.easing?b.easing:bd;return function(b,h){if(h.time<d)return h.animate=!0,h.viewHints[0]+=1,!0;if(h.time<d+e){var k=1-f((h.time-d)/e),l=c-h.viewState.resolution;h.animate=!0;h.viewState.resolution+=k*l;h.viewHints[0]+=1;return!0}return!1}};function gd(b,c,d,e){this.a=b;this.b=c;this.f=d;this.c=e}function hd(b,c,d){return b.a<=c&&c<=b.b&&b.f<=d&&d<=b.c}function id(b,c){return b.a==c.a&&b.f==c.f&&b.b==c.b&&b.c==c.c}function jd(b,c){return b.a<=c.b&&b.b>=c.a&&b.f<=c.c&&b.c>=c.f};function kd(b){this.b=b.html;this.a=b.tileRanges?b.tileRanges:null};function ld(b,c,d){S.call(this,b,d);this.element=c}M(ld,S);function md(b){U.call(this);this.a=b?b:[];nd(this)}M(md,U);n=md.prototype;n.clear=function(){for(;0<this.get("length");)this.pop()};function od(b,c,d){b.a.forEach(c,d)}n.item=function(b){return this.a[b]};n.pop=function(){return pd(this,this.get("length")-1)};n.push=function(b){var c=this.a.length;this.a.splice(c,0,b);nd(this);T(this,new ld("add",b,this));return c}; -n.remove=function(b){var c=this.a,d,e;d=0;for(e=c.length;d<e;++d)if(c[d]===b)return pd(this,d)};function pd(b,c){var d=b.a[c];b.a.splice(c,1);nd(b);T(b,new ld("remove",d,b));return d}function nd(b){b.set("length",b.a.length)};function qd(b,c){Array.prototype.forEach.call(b,c,void 0)}function rd(b){var c=b.length;if(0<c){for(var d=Array(c),e=0;e<c;e++)d[e]=b[e];return d}return[]}function sd(b,c,d){return 2>=arguments.length?Array.prototype.slice.call(b,c):Array.prototype.slice.call(b,c,d)};var td=/^#(?:[0-9a-f]{3}){1,2}$/i,ud=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i,vd=/^(?:rgba)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|1|0\.\d{0,10})\)$/i;function wd(b){if("string"!==typeof b){var c=b[0];c!=(c|0)&&(c=c+.5|0);var d=b[1];d!=(d|0)&&(d=d+.5|0);var e=b[2];e!=(e|0)&&(e=e+.5|0);b="rgba("+c+","+d+","+e+","+(void 0===b[3]?1:b[3])+")"}return b} -var yd=function(){var b={},c=0;return function(d){var e;if(b.hasOwnProperty(d))e=b[d];else{if(1024<=c){e=0;for(var f in b)0===(e++&3)&&(delete b[f],--c)}var g,h;td.exec(d)?(h=3==d.length-1?1:2,e=parseInt(d.substr(1+0*h,h),16),f=parseInt(d.substr(1+1*h,h),16),g=parseInt(d.substr(1+2*h,h),16),1==h&&(e=(e<<4)+e,f=(f<<4)+f,g=(g<<4)+g),e=[e,f,g,1]):(h=vd.exec(d))?(e=Number(h[1]),f=Number(h[2]),g=Number(h[3]),h=Number(h[4]),e=[e,f,g,h],e=xd(e,e)):(h=ud.exec(d))?(e=Number(h[1]),f=Number(h[2]),g=Number(h[3]), -e=[e,f,g,1],e=xd(e,e)):e=void 0;b[d]=e;++c}return e}}();function xd(b,c){var d=c||[];d[0]=Ba(b[0]+.5|0,0,255);d[1]=Ba(b[1]+.5|0,0,255);d[2]=Ba(b[2]+.5|0,0,255);d[3]=Ba(b[3],0,1);return d};function zd(b){return"string"===typeof b||b instanceof CanvasPattern||b instanceof CanvasGradient?b:wd(b)};var Ad;a:{var Bd=x.navigator;if(Bd){var Cd=Bd.userAgent;if(Cd){Ad=Cd;break a}}Ad=""}function W(b){return-1!=Ad.indexOf(b)};function Dd(b,c){for(var d in b)c.call(void 0,b[d],d,b)}var Ed="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function Fd(b,c){for(var d,e,f=1;f<arguments.length;f++){e=arguments[f];for(d in e)b[d]=e[d];for(var g=0;g<Ed.length;g++)d=Ed[g],Object.prototype.hasOwnProperty.call(e,d)&&(b[d]=e[d])}};var Gd=W("Opera")||W("OPR"),Hd=W("Trident")||W("MSIE"),Id=W("Edge"),Jd=W("Gecko")&&!(-1!=Ad.toLowerCase().indexOf("webkit")&&!W("Edge"))&&!(W("Trident")||W("MSIE"))&&!W("Edge"),Kd=-1!=Ad.toLowerCase().indexOf("webkit")&&!W("Edge");function Ld(){var b=x.document;return b?b.documentMode:void 0}var Md; -a:{var Nd="",Od=function(){var b=Ad;if(Jd)return/rv\:([^\);]+)(\)|;)/.exec(b);if(Id)return/Edge\/([\d\.]+)/.exec(b);if(Hd)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(b);if(Kd)return/WebKit\/(\S+)/.exec(b);if(Gd)return/(?:Version)[ \/]?(\S+)/.exec(b)}();Od&&(Nd=Od?Od[1]:"");if(Hd){var Pd=Ld();if(null!=Pd&&Pd>parseFloat(Nd)){Md=String(Pd);break a}}Md=Nd}var Qd={}; -function Rd(b){var c;if(!(c=Qd[b])){c=0;for(var d=qa(String(Md)).split("."),e=qa(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",l=RegExp("(\\d*)(\\D*)","g"),m=RegExp("(\\d*)(\\D*)","g");do{var p=l.exec(h)||["","",""],q=m.exec(k)||["","",""];if(0==p[0].length&&0==q[0].length)break;c=Aa(0==p[1].length?0:parseInt(p[1],10),0==q[1].length?0:parseInt(q[1],10))||Aa(0==p[2].length,0==q[2].length)||Aa(p[2],q[2])}while(0==c)}c=Qd[b]=0<=c}return c} -var Sd=x.document,Td=Sd&&Hd?Ld()||("CSS1Compat"==Sd.compatMode?parseInt(Md,10):5):void 0;var Ud=!Hd||9<=Number(Td);!Jd&&!Hd||Hd&&9<=Number(Td)||Jd&&Rd("1.9.1");Hd&&Rd("9");function Vd(b,c){this.x=void 0!==b?b:0;this.y=void 0!==c?c:0}n=Vd.prototype;n.clone=function(){return new Vd(this.x,this.y)};n.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};n.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};n.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};n.scale=function(b,c){var d=ea(c)?c:b;this.x*=b;this.y*=d;return this};function Wd(b,c){this.width=b;this.height=c}n=Wd.prototype;n.clone=function(){return new Wd(this.width,this.height)};n.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};n.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};n.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};n.scale=function(b,c){var d=ea(c)?c:b;this.width*=b;this.height*=d;return this};function Xd(b){return b?new Yd(Zd(b)):pa||(pa=new Yd)}function $d(b){var c=document;return da(b)?c.getElementById(b):b}function ae(b,c){Dd(c,function(c,e){"style"==e?b.style.cssText=c:"class"==e?b.className=c:"for"==e?b.htmlFor=c:be.hasOwnProperty(e)?b.setAttribute(be[e],c):0==e.lastIndexOf("aria-",0)||0==e.lastIndexOf("data-",0)?b.setAttribute(e,c):b[e]=c})} -var be={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"}; -function ce(b,c,d){var e=arguments,f=document,g=e[0],h=e[1];if(!Ud&&h&&(h.name||h.type)){g=["<",g];h.name&&g.push(' name="',sa(h.name),'"');if(h.type){g.push(' type="',sa(h.type),'"');var k={};Fd(k,h);delete k.type;h=k}g.push(">");g=g.join("")}g=f.createElement(g);h&&(da(h)?g.className=h:"array"==ba(h)?g.className=h.join(" "):ae(g,h));2<e.length&&de(f,g,e);return g} -function de(b,c,d){function e(d){d&&c.appendChild(da(d)?b.createTextNode(d):d)}for(var f=2;f<d.length;f++){var g=d[f];!ca(g)||ha(g)&&0<g.nodeType?e(g):qd(ee(g)?rd(g):g,e)}}function fe(b){for(var c;c=b.firstChild;)b.removeChild(c)}function ge(b,c,d){b.insertBefore(c,b.childNodes[d]||null)}function he(b){b&&b.parentNode&&b.parentNode.removeChild(b)}function ie(b,c){var d=c.parentNode;d&&d.replaceChild(b,c)} -function je(b,c){if(!b||!c)return!1;if(b.contains&&1==c.nodeType)return b==c||b.contains(c);if("undefined"!=typeof b.compareDocumentPosition)return b==c||!!(b.compareDocumentPosition(c)&16);for(;c&&b!=c;)c=c.parentNode;return c==b}function Zd(b){return 9==b.nodeType?b:b.ownerDocument||b.document}function ee(b){if(b&&"number"==typeof b.length){if(ha(b))return"function"==typeof b.item||"string"==typeof b.item;if(ga(b))return"function"==typeof b.item}return!1} -function Yd(b){this.a=b||x.document||document}Yd.prototype.appendChild=function(b,c){b.appendChild(c)};function ke(b,c,d,e){this.top=b;this.right=c;this.bottom=d;this.left=e}n=ke.prototype;n.clone=function(){return new ke(this.top,this.right,this.bottom,this.left)};n.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};n.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this}; -n.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this};n.scale=function(b,c){var d=ea(c)?c:b;this.left*=b;this.right*=b;this.top*=d;this.bottom*=d;return this};function le(b,c){var d=Zd(b);return d.defaultView&&d.defaultView.getComputedStyle&&(d=d.defaultView.getComputedStyle(b,null))?d[c]||d.getPropertyValue(c)||"":""}function me(b){var c;try{c=b.getBoundingClientRect()}catch(d){return{left:0,top:0,right:0,bottom:0}}Hd&&b.ownerDocument.body&&(b=b.ownerDocument,c.left-=b.documentElement.clientLeft+b.body.clientLeft,c.top-=b.documentElement.clientTop+b.body.clientTop);return c} -function ne(b){var c=oe;if("none"!=(le(b,"display")||(b.currentStyle?b.currentStyle.display:null)||b.style&&b.style.display))return c(b);var d=b.style,e=d.display,f=d.visibility,g=d.position;d.visibility="hidden";d.position="absolute";d.display="inline";b=c(b);d.display=e;d.position=g;d.visibility=f;return b}function oe(b){var c=b.offsetWidth,d=b.offsetHeight,e=Kd&&!c&&!d;return(void 0===c||e)&&b.getBoundingClientRect?(b=me(b),new Wd(b.right-b.left,b.bottom-b.top)):new Wd(c,d)} -function pe(b,c){b.style.display=c?"":"none"}function qe(b,c,d,e){if(/^\d+px?$/.test(c))return parseInt(c,10);var f=b.style[d],g=b.runtimeStyle[d];b.runtimeStyle[d]=b.currentStyle[d];b.style[d]=c;c=b.style[e];b.style[d]=f;b.runtimeStyle[d]=g;return c}function re(b,c){var d=b.currentStyle?b.currentStyle[c]:null;return d?qe(b,d,"left","pixelLeft"):0}var se={thin:2,medium:4,thick:6}; -function te(b,c){if("none"==(b.currentStyle?b.currentStyle[c+"Style"]:null))return 0;var d=b.currentStyle?b.currentStyle[c+"Width"]:null;return d in se?se[d]:qe(b,d,"left","pixelLeft")};function ue(b,c,d){S.call(this,b);this.map=c;this.frameState=void 0!==d?d:null}M(ue,S);function ve(b){U.call(this);this.element=b.element?b.element:null;this.c=this.A=null;this.h=[];this.render=b.render?b.render:N;b.target&&(this.A=$d(b.target))}M(ve,U);ve.prototype.K=function(){he(this.element);ve.Y.K.call(this)};ve.prototype.setMap=function(b){this.c&&he(this.element);for(var c=0,d=this.h.length;c<d;++c)P(this.h[c]);this.h.length=0;if(this.c=b)(this.A?this.A:b.j).appendChild(this.element),this.render!==N&&this.h.push(R(b,"postrender",this.render,this)),b.render()};function we(){this.f=0;this.c={};this.b=this.a=null}n=we.prototype;n.clear=function(){this.f=0;this.c={};this.b=this.a=null};function xe(b,c){return b.c.hasOwnProperty(c)}function ye(b,c){for(var d=b.a;d;)c.call(void 0,d.Ba,d.Kb,b),d=d.ja}n.get=function(b){b=this.c[b];if(b===this.b)return b.Ba;b===this.a?(this.a=this.a.ja,this.a.Ia=null):(b.ja.Ia=b.Ia,b.Ia.ja=b.ja);b.ja=null;b.Ia=this.b;this.b=this.b.ja=b;return b.Ba}; -n.pop=function(){var b=this.a;delete this.c[b.Kb];b.ja&&(b.ja.Ia=null);this.a=b.ja;this.a||(this.b=null);--this.f;return b.Ba};n.replace=function(b,c){this.get(b);this.c[b].Ba=c};n.set=function(b,c){var d={Kb:b,ja:null,Ia:this.b,Ba:c};this.b?this.b.ja=d:this.a=d;this.b=d;this.c[b]=d;++this.f};function ze(b){we.call(this);this.g=void 0!==b?b:2048}M(ze,we);function Ae(b){return b.f>b.g}function Be(b,c){for(var d,e;Ae(b);){d=b.a.Ba;e=d.L[0].toString();var f;if(f=e in c)d=d.L,f=hd(c[e],d[1],d[2]);if(f)break;else ib(b.pop())}};function Ce(b,c){lb.call(this);this.L=b;this.state=c;this.a=null;this.key=""}M(Ce,lb);function De(b){T(b,"change")}Ce.prototype.getKey=function(){return I(this).toString()};Ce.prototype.N=function(){return this.state};function Ee(b){U.call(this);this.c=kc(b.projection);this.i=Fe(b.attributions);this.v=b.logo;this.A=void 0!==b.state?b.state:"ready";this.j=void 0!==b.wrapX?b.wrapX:!1}M(Ee,U);function Fe(b){if("string"===typeof b)return[new kd({html:b})];if(b instanceof kd)return[b];if(Array.isArray(b)){for(var c=b.length,d=Array(c),e=0;e<c;e++){var f=b[e];d[e]="string"===typeof f?new kd({html:f}):f}return d}return null}Ee.prototype.N=function(){return this.A};Ee.prototype.ra=function(){this.w()};function Ge(b){this.minZoom=void 0!==b.minZoom?b.minZoom:0;this.b=b.resolutions;this.maxZoom=this.b.length-1;this.f=void 0!==b.origin?b.origin:null;this.g=null;void 0!==b.origins&&(this.g=b.origins);var c=b.extent;void 0===c||this.f||this.g||(this.f=ac(c));this.h=null;void 0!==b.tileSizes&&(this.h=b.tileSizes);this.l=void 0!==b.tileSize?b.tileSize:this.h?null:256;this.i=void 0!==c?c:null;this.a=null;void 0!==b.sizes?this.a=b.sizes.map(function(b){return new gd(Math.min(0,b[0]),Math.max(b[0]-1,-1), -Math.min(0,b[1]),Math.max(b[1]-1,-1))},this):c&&He(this,c);this.c=[0,0]}var Ie=[0,0,0];function Je(b,c,d,e,f){f=Ke(b,c,f);for(c=c[0]-1;c>=b.minZoom;){if(d.call(null,c,Le(b,f,c,e)))return!0;--c}return!1}Ge.prototype.C=function(){return this.i};Ge.prototype.fa=function(b){return this.f?this.f:this.g[b]};Ge.prototype.J=function(b){return this.b[b]};Ge.prototype.Gb=function(){return this.b};function Me(b,c,d,e){return c[0]<b.maxZoom?(e=Ke(b,c,e),Le(b,e,c[0]+1,d)):null} -function Ne(b,c,d,e){Oe(b,c[0],c[1],d,!1,Ie);var f=Ie[1],g=Ie[2];Oe(b,c[2],c[3],d,!0,Ie);b=Ie[1];c=Ie[2];void 0!==e?(e.a=f,e.b=b,e.f=g,e.c=c):e=new gd(f,b,g,c);return e}function Le(b,c,d,e){d=b.J(d);return Ne(b,c,d,e)}function Pe(b,c){var d=b.fa(c[0]),e=b.J(c[0]),f=sb(Qe(b,c[0]),b.c);return[d[0]+(c[1]+.5)*f[0]*e,d[1]+(c[2]+.5)*f[1]*e]}function Ke(b,c,d){var e=b.fa(c[0]),f=b.J(c[0]);b=sb(Qe(b,c[0]),b.c);var g=e[0]+c[1]*b[0]*f;c=e[1]+c[2]*b[1]*f;return Nb(g,c,g+b[0]*f,c+b[1]*f,d)} -function Oe(b,c,d,e,f,g){var h=Re(b,e),k=e/b.J(h),l=b.fa(h);b=sb(Qe(b,h),b.c);c=k*Math.floor((c-l[0])/e+(f?.5:0))/b[0];d=k*Math.floor((d-l[1])/e+(f?0:.5))/b[1];f?(c=Math.ceil(c)-1,d=Math.ceil(d)-1):(c=Math.floor(c),d=Math.floor(d));f=c;void 0!==g?(g[0]=h,g[1]=f,g[2]=d):g=[h,f,d];return g}function Se(b,c,d){d=b.J(d);return Oe(b,c[0],c[1],d,!1,void 0)}function Qe(b,c){return b.l?b.l:b.h[c]}function Re(b,c){var d=Ha(b.b,c,0);return Ba(d,b.minZoom,b.maxZoom)} -function He(b,c){for(var d=b.b.length,e=Array(d),f=b.minZoom;f<d;++f)e[f]=Le(b,c,f);b.a=e}function Te(b){var c=b.c;if(!c){var c=Ue(b),d=Ve(c,void 0,void 0),c=new Ge({extent:c,origin:ac(c),resolutions:d,tileSize:void 0});b.c=c}return c}function Ve(b,c,d){c=void 0!==c?c:42;var e=Vb(b);b=Ub(b);d=sb(void 0!==d?d:256);d=Math.max(b/d[0],e/d[1]);c+=1;e=Array(c);for(b=0;b<c;++b)e[b]=d/Math.pow(2,b);return e}function Ue(b){b=kc(b);var c=b.C();c||(b=180*gc.degrees/oc(b),c=Nb(-b,-b,b,b));return c};function We(b){Ee.call(this,{attributions:b.attributions,extent:b.extent,logo:b.logo,projection:b.projection,state:b.state,wrapX:b.wrapX});this.G=void 0!==b.opaque?b.opaque:!1;this.Z=void 0!==b.tilePixelRatio?b.tilePixelRatio:1;this.tileGrid=void 0!==b.tileGrid?b.tileGrid:null;this.a=new ze(b.cacheSize);this.h=[0,0]}M(We,Ee);n=We.prototype;n.Gc=function(){return Ae(this.a)};n.Hc=function(b,c){var d=this.Ua(b);d&&Be(d,c)}; -function Xe(b,c,d,e,f){c=b.Ua(c);if(!c)return!1;for(var g=!0,h,k,l=e.a;l<=e.b;++l)for(var m=e.f;m<=e.c;++m)h=b.cb(d,l,m),k=!1,xe(c,h)&&(h=c.get(h),(k=2===h.N())&&(k=!1!==f(h))),k||(g=!1);return g}n.bb=function(){return 0};n.cb=function(b,c,d){return b+"/"+c+"/"+d};n.Fb=function(){return this.G};n.Gb=function(){return this.tileGrid.Gb()};n.ia=function(b){return this.tileGrid?this.tileGrid:Te(b)};n.Ua=function(b){var c=this.c;return c&&!vc(c,b)?null:this.a};n.eb=function(){return this.Z}; -function Ye(b,c,d,e){e=b.ia(e);d=b.eb(d);c=sb(Qe(e,c),b.h);return 1==d?c:rb(c,d,b.h)}function Ze(b,c,d){var e=void 0!==d?d:b.c;d=b.ia(e);if(b.j&&e.f){var f=c;c=f[0];b=Pe(d,f);var e=Ue(e),g=b[0],h=b[1];e[0]<=g&&g<=e[2]&&e[1]<=h&&h<=e[3]?c=f:(f=Ub(e),b[0]+=f*Math.ceil((e[0]-b[0])/f),c=Se(d,b,c))}e=c[0];b=c[1];f=c[2];d=d.minZoom>e||e>d.maxZoom?!1:(d=(g=d.C())?Le(d,g,e):d.a?d.a[e]:null)?hd(d,b,f):!0;return d?c:null}n.ra=function(){this.a.clear();this.w()};n.Qc=N; -function $e(b,c){S.call(this,b);this.tile=c}M($e,S);function af(b){b=b?b:{};this.s=document.createElement("UL");this.j=document.createElement("LI");this.s.appendChild(this.j);pe(this.j,!1);this.g=void 0!==b.collapsed?b.collapsed:!0;this.i=void 0!==b.collapsible?b.collapsible:!0;this.i||(this.g=!1);var c=void 0!==b.className?b.className:"ol-attribution",d=void 0!==b.tipLabel?b.tipLabel:"Attributions",e=void 0!==b.collapseLabel?b.collapseLabel:"\u00bb";this.u="string"===typeof e?ce("SPAN",{},e):e;e=void 0!==b.label?b.label:"i";this.v="string"===typeof e? -ce("SPAN",{},e):e;d=ce("BUTTON",{type:"button",title:d},this.i&&!this.g?this.u:this.v);R(d,"click",this.G,this);c=ce("DIV",c+" ol-unselectable ol-control"+(this.g&&this.i?" ol-collapsed":"")+(this.i?"":" ol-uncollapsible"),this.s,d);ve.call(this,{element:c,render:b.render?b.render:bf,target:b.target});this.o=!0;this.b={};this.a={};this.D={}}M(af,ve); -function bf(b){if(b=b.frameState){var c,d,e,f,g,h,k,l,m,p,q,r=b.layerStatesArray,u=Va({},b.attributions),w={},y=b.viewState.projection;d=0;for(c=r.length;d<c;d++)if(h=r[d].layer.W())if(p=I(h).toString(),m=h.i)for(e=0,f=m.length;e<f;e++)if(k=m[e],l=I(k).toString(),!(l in u)){if(g=b.usedTiles[p]){var z=h.ia(y);a:{q=k;var D=y;if(q.a){var t=void 0,v=void 0,B=void 0,F=void 0;for(F in g)if(F in q.a)for(var B=g[F],C,t=0,v=q.a[F].length;t<v;++t){C=q.a[F][t];if(jd(C,B)){q=!0;break a}var G=Le(z,Ue(D),parseInt(F, -10)),J=G.b-G.a+1;if(B.a<G.a||B.b>G.b)if(jd(C,new gd(Da(B.a,J),Da(B.b,J),B.f,B.c))||B.b-B.a+1>J&&jd(C,G)){q=!0;break a}}q=!1}else q=!0}}else q=!1;q?(l in w&&delete w[l],u[l]=k):w[l]=k}c=[u,w];d=c[0];c=c[1];for(var A in this.b)A in d?(this.a[A]||(pe(this.b[A],!0),this.a[A]=!0),delete d[A]):A in c?(this.a[A]&&(pe(this.b[A],!1),delete this.a[A]),delete c[A]):(he(this.b[A]),delete this.b[A],delete this.a[A]);for(A in d)e=document.createElement("LI"),e.innerHTML=d[A].b,this.s.appendChild(e),this.b[A]=e, -this.a[A]=!0;for(A in c)e=document.createElement("LI"),e.innerHTML=c[A].b,pe(e,!1),this.s.appendChild(e),this.b[A]=e;A=!Za(this.a)||!Za(b.logos);this.o!=A&&(pe(this.element,A),this.o=A);A&&Za(this.a)?this.element.classList.add("ol-logo-only"):this.element.classList.remove("ol-logo-only");var H;b=b.logos;A=this.D;for(H in A)H in b||(he(A[H]),delete A[H]);for(var O in b)O in A||(H=new Image,H.src=O,d=b[O],""===d?d=H:(d=ce("A",{href:d}),d.appendChild(H)),this.j.appendChild(d),A[O]=d);pe(this.j,!Za(b))}else this.o&& -(pe(this.element,!1),this.o=!1)}af.prototype.G=function(b){b.preventDefault();this.element.classList.toggle("ol-collapsed");this.g?ie(this.u,this.v):ie(this.v,this.u);this.g=!this.g};function cf(b){b=b?b:{};var c=void 0!==b.className?b.className:"ol-rotate",d=void 0!==b.label?b.label:"\u21e7";this.a=null;"string"===typeof d?this.a=ce("SPAN","ol-compass",d):(this.a=d,this.a.classList.add(this.a,"ol-compass"));d=ce("BUTTON",{"class":c+"-reset",type:"button",title:b.tipLabel?b.tipLabel:"Reset rotation"},this.a);R(d,"click",cf.prototype.o,this);c=ce("DIV",c+" ol-unselectable ol-control",d);d=b.render?b.render:df;this.g=b.resetNorth?b.resetNorth:void 0;ve.call(this,{element:c,render:d, -target:b.target});this.i=void 0!==b.duration?b.duration:250;this.b=void 0!==b.autoHide?b.autoHide:!0;this.j=void 0;this.b&&this.element.classList.add("ol-hidden")}M(cf,ve);cf.prototype.o=function(b){b.preventDefault();if(void 0!==this.g)this.g();else{b=this.c;var c=b.O();if(c){var d=Xc(c);void 0!==d&&(0<this.i&&(d%=2*Math.PI,d<-Math.PI&&(d+=2*Math.PI),d>Math.PI&&(d-=2*Math.PI),b.ea(ed({rotation:d,duration:this.i,easing:ad}))),c.set("rotation",0))}}}; -function df(b){if(b=b.frameState){b=b.viewState.rotation;if(b!=this.j){var c="rotate("+b+"rad)";if(this.b){var d=this.element.classList.contains("ol-hidden");d||0!==b?d&&0!==b&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.a.style.msTransform=c;this.a.style.webkitTransform=c;this.a.style.transform=c}this.j=b}};function ef(b){b=b?b:{};var c=void 0!==b.className?b.className:"ol-zoom",d=void 0!==b.delta?b.delta:1,e=void 0!==b.zoomOutLabel?b.zoomOutLabel:"\u2212",f=void 0!==b.zoomOutTipLabel?b.zoomOutTipLabel:"Zoom out",g=ce("BUTTON",{"class":c+"-in",type:"button",title:void 0!==b.zoomInTipLabel?b.zoomInTipLabel:"Zoom in"},void 0!==b.zoomInLabel?b.zoomInLabel:"+");R(g,"click",na(ef.prototype.b,d),this);e=ce("BUTTON",{"class":c+"-out",type:"button",title:f},e);R(e,"click",na(ef.prototype.b,-d),this);c=ce("DIV", -c+" ol-unselectable ol-control",g,e);ve.call(this,{element:c,target:b.target});this.a=void 0!==b.duration?b.duration:250}M(ef,ve);ef.prototype.b=function(b,c){c.preventDefault();var d=this.c,e=d.O();if(e){var f=e.J();f&&(0<this.a&&d.ea(fd({resolution:f,duration:this.a,easing:ad})),d=e.constrainResolution(f,b),Zc(e,d))}};function ff(b){b=b?b:{};var c=new md;(void 0!==b.zoom?b.zoom:1)&&c.push(new ef(b.zoomOptions));(void 0!==b.rotate?b.rotate:1)&&c.push(new cf(b.rotateOptions));(void 0!==b.attribution?b.attribution:1)&&c.push(new af(b.attributionOptions));return c};var gf=Kd?"webkitfullscreenchange":Jd?"mozfullscreenchange":Hd?"MSFullscreenChange":"fullscreenchange";function hf(){var b=Xd().a,c=b.body;return!!(c.webkitRequestFullscreen||c.mozRequestFullScreen&&b.mozFullScreenEnabled||c.msRequestFullscreen&&b.msFullscreenEnabled||c.requestFullscreen&&b.fullscreenEnabled)} -function jf(b){b.webkitRequestFullscreen?b.webkitRequestFullscreen():b.mozRequestFullScreen?b.mozRequestFullScreen():b.msRequestFullscreen?b.msRequestFullscreen():b.requestFullscreen&&b.requestFullscreen()}function kf(){var b=Xd().a;return!!(b.webkitIsFullScreen||b.mozFullScreen||b.msFullscreenElement||b.fullscreenElement)};function lf(b){b=b?b:{};this.a=void 0!==b.className?b.className:"ol-full-screen";var c=void 0!==b.label?b.label:"\u2922";this.b="string"===typeof c?document.createTextNode(c):c;c=void 0!==b.labelActive?b.labelActive:"\u00d7";this.g="string"===typeof c?document.createTextNode(c):c;c=b.tipLabel?b.tipLabel:"Toggle full-screen";c=ce("BUTTON",{"class":this.a+"-"+kf(),type:"button",title:c},this.b);R(c,"click",this.s,this);var d=this.a+" ol-unselectable ol-control "+(hf()?"":"ol-unsupported"),c=ce("DIV", -d,c);ve.call(this,{element:c,target:b.target});this.o=void 0!==b.keys?b.keys:!1;this.i=b.source}M(lf,ve); -lf.prototype.s=function(b){b.preventDefault();hf()&&(b=this.c)&&(kf()?(b=Xd().a,b.webkitCancelFullScreen?b.webkitCancelFullScreen():b.mozCancelFullScreen?b.mozCancelFullScreen():b.msExitFullscreen?b.msExitFullscreen():b.exitFullscreen&&b.exitFullscreen()):(b=this.i?$d(this.i):b.Fa(),this.o?b.mozRequestFullScreenWithKeys?b.mozRequestFullScreenWithKeys():b.webkitRequestFullscreen?b.webkitRequestFullscreen():jf(b):jf(b)))}; -lf.prototype.j=function(){var b=this.element.firstElementChild,c=this.c;kf()?(b.className=this.a+"-true",ie(this.g,this.b)):(b.className=this.a+"-false",ie(this.b,this.g));c&&c.nb()};lf.prototype.setMap=function(b){lf.Y.setMap.call(this,b);b&&this.h.push(R(x.document,gf,this.j,this))};var mf; -function nf(){var b=x.MessageChannel;"undefined"===typeof b&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&!W("Presto")&&(b=function(){var b=document.createElement("IFRAME");b.style.display="none";b.src="";document.documentElement.appendChild(b);var c=b.contentWindow,b=c.document;b.open();b.write("");b.close();var d="callImmediate"+Math.random(),e="file:"==c.location.protocol?"*":c.location.protocol+"//"+c.location.host,b=ma(function(b){if(("*"==e||b.origin==e)&&b.data== -d)this.port1.onmessage()},this);c.addEventListener("message",b,!1);this.port1={};this.port2={postMessage:function(){c.postMessage(d,e)}}});if("undefined"!==typeof b&&!W("Trident")&&!W("MSIE")){var c=new b,d={},e=d;c.port1.onmessage=function(){if(void 0!==d.next){d=d.next;var b=d.fc;d.fc=null;b()}};return function(b){e.next={fc:b};e=e.next;c.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in document.createElement("SCRIPT")?function(b){var c=document.createElement("SCRIPT"); -c.onreadystatechange=function(){c.onreadystatechange=null;c.parentNode.removeChild(c);c=null;b();b=null};document.documentElement.appendChild(c)}:function(b){x.setTimeout(b,0)}};function of(b,c,d){S.call(this,b);this.a=c;b=d?d:{};this.buttons=pf(b);this.pressure=qf(b,this.buttons);this.bubbles="bubbles"in b?b.bubbles:!1;this.cancelable="cancelable"in b?b.cancelable:!1;this.view="view"in b?b.view:null;this.detail="detail"in b?b.detail:null;this.screenX="screenX"in b?b.screenX:0;this.screenY="screenY"in b?b.screenY:0;this.clientX="clientX"in b?b.clientX:0;this.clientY="clientY"in b?b.clientY:0;this.button="button"in b?b.button:0;this.relatedTarget="relatedTarget"in b?b.relatedTarget: -null;this.pointerId="pointerId"in b?b.pointerId:0;this.width="width"in b?b.width:0;this.height="height"in b?b.height:0;this.pointerType="pointerType"in b?b.pointerType:"";this.isPrimary="isPrimary"in b?b.isPrimary:!1;c.preventDefault&&(this.preventDefault=function(){c.preventDefault()})}M(of,S);function pf(b){if(b.buttons||rf)b=b.buttons;else switch(b.which){case 1:b=1;break;case 2:b=4;break;case 3:b=2;break;default:b=0}return b}function qf(b,c){var d=0;b.pressure?d=b.pressure:d=c?.5:0;return d} -var rf=!1;try{rf=1===(new MouseEvent("click",{buttons:1})).buttons}catch(b){};function sf(b,c){var d=document.createElement("CANVAS");b&&(d.width=b);c&&(d.height=c);return d.getContext("2d")} -var tf=function(){var b;return function(){if(void 0===b){var c=document.createElement("P"),d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate(1px,1px)",d=x.getComputedStyle(c).getPropertyValue(e[f]));document.body.removeChild(c);b=d&&"none"!==d}return b}}(),uf=function(){var b;return function(){if(void 0===b){var c=document.createElement("P"), -d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate3d(1px,1px,1px)",d=x.getComputedStyle(c).getPropertyValue(e[f]));document.body.removeChild(c);b=d&&"none"!==d}return b}}(); -function vf(b,c){var d=b.style;d.WebkitTransform=c;d.MozTransform=c;d.a=c;d.msTransform=c;d.transform=c;Hd&&Rd("9.0")&&(b.style.transformOrigin="0 0")}function wf(b,c){var d;if(uf()){var e=Array(16);for(d=0;16>d;++d)e[d]=c[d].toFixed(6);vf(b,"matrix3d("+e.join(",")+")")}else if(tf()){var e=[c[0],c[1],c[4],c[5],c[12],c[13]],f=Array(6);for(d=0;6>d;++d)f[d]=e[d].toFixed(6);vf(b,"matrix("+f.join(",")+")")}else b.style.left=Math.round(c[12])+"px",b.style.top=Math.round(c[13])+"px"};var xf=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function yf(b,c){var d,e,f=xf.length;for(e=0;e<f;++e)try{if(d=b.getContext(xf[e],c))return d}catch(g){}return null};var zf,Af="undefined"!==typeof navigator?navigator.userAgent.toLowerCase():"",Bf=-1!==Af.indexOf("firefox"),Cf=-1!==Af.indexOf("safari")&&-1===Af.indexOf("chrom"),Df=-1!==Af.indexOf("macintosh"),Ef=x.devicePixelRatio||1,Ff=!1,Gf=function(){if(!("HTMLCanvasElement"in x))return!1;try{var b=sf();return b?(void 0!==b.setLineDash&&(Ff=!0),!0):!1}catch(c){return!1}}(),Hf="ontouchstart"in x,If="PointerEvent"in x,Jf=!!x.navigator.msPointerEnabled,Kf=!1,Lf=[]; -if("WebGLRenderingContext"in x)try{var Mf=yf(document.createElement("CANVAS"),{failIfMajorPerformanceCaveat:!0});Mf&&(Kf=!0,Lf=Mf.getSupportedExtensions())}catch(b){}zf=Kf;oa=Lf;function Nf(b,c){this.a=b;this.g=c};function Of(b){Nf.call(this,b,{mousedown:this.Kd,mousemove:this.Ld,mouseup:this.Od,mouseover:this.Nd,mouseout:this.Md});this.b=b.b;this.f=[]}M(Of,Nf);function Pf(b,c){for(var d=b.f,e=c.clientX,f=c.clientY,g=0,h=d.length,k;g<h&&(k=d[g]);g++){var l=Math.abs(f-k[1]);if(25>=Math.abs(e-k[0])&&25>=l)return!0}return!1}function Qf(b){var c=Rf(b,b),d=c.preventDefault;c.preventDefault=function(){b.preventDefault();d()};c.pointerId=1;c.isPrimary=!0;c.pointerType="mouse";return c}n=Of.prototype; -n.Kd=function(b){if(!Pf(this,b)){if((1).toString()in this.b){var c=Qf(b);Sf(this.a,Tf,c,b);delete this.b[(1).toString()]}c=Qf(b);this.b[(1).toString()]=b;Sf(this.a,Uf,c,b)}};n.Ld=function(b){if(!Pf(this,b)){var c=Qf(b);Sf(this.a,Vf,c,b)}};n.Od=function(b){if(!Pf(this,b)){var c=this.b[(1).toString()];c&&c.button===b.button&&(c=Qf(b),Sf(this.a,Wf,c,b),delete this.b[(1).toString()])}};n.Nd=function(b){if(!Pf(this,b)){var c=Qf(b);Xf(this.a,c,b)}}; -n.Md=function(b){if(!Pf(this,b)){var c=Qf(b);Yf(this.a,c,b)}};function Zf(b){Nf.call(this,b,{MSPointerDown:this.Td,MSPointerMove:this.Ud,MSPointerUp:this.Xd,MSPointerOut:this.Vd,MSPointerOver:this.Wd,MSPointerCancel:this.Sd,MSGotPointerCapture:this.Qd,MSLostPointerCapture:this.Rd});this.b=b.b;this.f=["","unavailable","touch","pen","mouse"]}M(Zf,Nf);function $f(b,c){var d=c;ea(c.pointerType)&&(d=Rf(c,c),d.pointerType=b.f[c.pointerType]);return d}n=Zf.prototype;n.Td=function(b){this.b[b.pointerId.toString()]=b;var c=$f(this,b);Sf(this.a,Uf,c,b)}; -n.Ud=function(b){var c=$f(this,b);Sf(this.a,Vf,c,b)};n.Xd=function(b){var c=$f(this,b);Sf(this.a,Wf,c,b);delete this.b[b.pointerId.toString()]};n.Vd=function(b){var c=$f(this,b);Yf(this.a,c,b)};n.Wd=function(b){var c=$f(this,b);Xf(this.a,c,b)};n.Sd=function(b){var c=$f(this,b);Sf(this.a,Tf,c,b);delete this.b[b.pointerId.toString()]};n.Rd=function(b){T(this.a,new of("lostpointercapture",b,b))};n.Qd=function(b){T(this.a,new of("gotpointercapture",b,b))};function ag(b){Nf.call(this,b,{pointerdown:this.he,pointermove:this.ie,pointerup:this.le,pointerout:this.je,pointerover:this.ke,pointercancel:this.ge,gotpointercapture:this.ld,lostpointercapture:this.Jd})}M(ag,Nf);n=ag.prototype;n.he=function(b){bg(this.a,b)};n.ie=function(b){bg(this.a,b)};n.le=function(b){bg(this.a,b)};n.je=function(b){bg(this.a,b)};n.ke=function(b){bg(this.a,b)};n.ge=function(b){bg(this.a,b)};n.Jd=function(b){bg(this.a,b)};n.ld=function(b){bg(this.a,b)};function cg(b,c){Nf.call(this,b,{touchstart:this.ye,touchmove:this.xe,touchend:this.we,touchcancel:this.ve});this.b=b.b;this.l=c;this.f=void 0;this.h=0;this.c=void 0}M(cg,Nf);n=cg.prototype;n.Pc=function(){this.h=0;this.c=void 0}; -function dg(b,c,d){c=Rf(c,d);c.pointerId=d.identifier+2;c.bubbles=!0;c.cancelable=!0;c.detail=b.h;c.button=0;c.buttons=1;c.width=d.webkitRadiusX||d.radiusX||0;c.height=d.webkitRadiusY||d.radiusY||0;c.pressure=d.webkitForce||d.force||.5;c.isPrimary=b.f===d.identifier;c.pointerType="touch";c.clientX=d.clientX;c.clientY=d.clientY;c.screenX=d.screenX;c.screenY=d.screenY;return c} -function eg(b,c,d){function e(){c.preventDefault()}var f=Array.prototype.slice.call(c.changedTouches),g=f.length,h,k;for(h=0;h<g;++h)k=dg(b,c,f[h]),k.preventDefault=e,d.call(b,c,k)} -n.ye=function(b){var c=b.touches,d=Object.keys(this.b),e=d.length;if(e>=c.length){var f=[],g,h,k;for(g=0;g<e;++g){h=d[g];k=this.b[h];var l;if(!(l=1==h))a:{l=c.length;for(var m=void 0,p=0;p<l;p++)if(m=c[p],m.identifier===h-2){l=!0;break a}l=!1}l||f.push(k.out)}for(g=0;g<f.length;++g)this.xb(b,f[g])}c=b.changedTouches[0];d=Object.keys(this.b).length;if(0===d||1===d&&(1).toString()in this.b)this.f=c.identifier,void 0!==this.c&&x.clearTimeout(this.c);fg(this,b);this.h++;eg(this,b,this.fe)}; -n.fe=function(b,c){this.b[c.pointerId]={target:c.target,out:c,Mc:c.target};var d=this.a;c.bubbles=!0;Sf(d,gg,c,b);d=this.a;c.bubbles=!1;Sf(d,hg,c,b);Sf(this.a,Uf,c,b)};n.xe=function(b){b.preventDefault();eg(this,b,this.Pd)};n.Pd=function(b,c){var d=this.b[c.pointerId];if(d){var e=d.out,f=d.Mc;Sf(this.a,Vf,c,b);e&&f!==c.target&&(e.relatedTarget=c.target,c.relatedTarget=f,e.target=f,c.target?(Yf(this.a,e,b),Xf(this.a,c,b)):(c.target=f,c.relatedTarget=null,this.xb(b,c)));d.out=c;d.Mc=c.target}}; -n.we=function(b){fg(this,b);eg(this,b,this.ze)};n.ze=function(b,c){Sf(this.a,Wf,c,b);this.a.out(c,b);var d=this.a;c.bubbles=!1;Sf(d,ig,c,b);delete this.b[c.pointerId];c.isPrimary&&(this.f=void 0,this.c=x.setTimeout(this.Pc.bind(this),200))};n.ve=function(b){eg(this,b,this.xb)};n.xb=function(b,c){Sf(this.a,Tf,c,b);this.a.out(c,b);var d=this.a;c.bubbles=!1;Sf(d,ig,c,b);delete this.b[c.pointerId];c.isPrimary&&(this.f=void 0,this.c=x.setTimeout(this.Pc.bind(this),200))}; -function fg(b,c){var d=b.l.f,e=c.changedTouches[0];if(b.f===e.identifier){var f=[e.clientX,e.clientY];d.push(f);x.setTimeout(function(){Ka(d,f)},2500)}};function jg(b){lb.call(this);this.g=b;this.b={};this.c={};this.a=[];If?kg(this,new ag(this)):Jf?kg(this,new Zf(this)):(b=new Of(this),kg(this,b),Hf&&kg(this,new cg(this,b)));b=this.a.length;for(var c,d=0;d<b;d++)c=this.a[d],lg(this,Object.keys(c.g))}M(jg,lb);function kg(b,c){var d=Object.keys(c.g);d&&(d.forEach(function(b){var d=c.g[b];d&&(this.c[b]=d.bind(c))},b),b.a.push(c))}jg.prototype.f=function(b){var c=this.c[b.type];c&&c(b)}; -function lg(b,c){c.forEach(function(b){R(this.g,b,this.f,this)},b)}function mg(b,c){c.forEach(function(b){fb(this.g,b,this.f,this)},b)}function Rf(b,c){for(var d={},e,f=0,g=ng.length;f<g;f++)e=ng[f][0],d[e]=b[e]||c[e]||ng[f][1];return d}jg.prototype.out=function(b,c){b.bubbles=!0;Sf(this,og,b,c)};function Yf(b,c,d){b.out(c,d);var e=c.relatedTarget;e&&je(c.target,e)||(c.bubbles=!1,Sf(b,ig,c,d))} -function Xf(b,c,d){c.bubbles=!0;Sf(b,gg,c,d);var e=c.relatedTarget;e&&je(c.target,e)||(c.bubbles=!1,Sf(b,hg,c,d))}function Sf(b,c,d,e){T(b,new of(c,e,d))}function bg(b,c){T(b,new of(c.type,c,c))}jg.prototype.K=function(){for(var b=this.a.length,c,d=0;d<b;d++)c=this.a[d],mg(this,Object.keys(c.g));jg.Y.K.call(this)}; -var Vf="pointermove",Uf="pointerdown",Wf="pointerup",gg="pointerover",og="pointerout",hg="pointerenter",ig="pointerleave",Tf="pointercancel",ng=[["bubbles",!1],["cancelable",!1],["view",null],["detail",null],["screenX",0],["screenY",0],["clientX",0],["clientY",0],["ctrlKey",!1],["altKey",!1],["shiftKey",!1],["metaKey",!1],["button",0],["relatedTarget",null],["buttons",0],["pointerId",0],["width",0],["height",0],["pressure",0],["tiltX",0],["tiltY",0],["pointerType",""],["hwTimestamp",0],["isPrimary", -!1],["type",""],["target",null],["currentTarget",null],["which",0]];function pg(b,c,d,e,f){ue.call(this,b,c,f);this.originalEvent=d;this.pixel=c.nc(d);this.coordinate=c.pa(this.pixel);this.dragging=void 0!==e?e:!1}M(pg,ue);pg.prototype.preventDefault=function(){pg.Y.preventDefault.call(this);this.originalEvent.preventDefault()};pg.prototype.stopPropagation=function(){pg.Y.stopPropagation.call(this);this.originalEvent.stopPropagation()};function qg(b,c,d,e,f){pg.call(this,b,c,d.a,e,f);this.a=d}M(qg,pg); -function rg(b){lb.call(this);this.f=b;this.h=0;this.l=!1;this.c=[];this.b=null;b=this.f.a;this.s=0;this.o={};this.g=new jg(b);this.a=null;this.i=R(this.g,Uf,this.xd,this);this.j=R(this.g,Vf,this.ne,this)}M(rg,lb);function sg(b,c){var d;d=new qg(tg,b.f,c);T(b,d);0!==b.h?(x.clearTimeout(b.h),b.h=0,d=new qg(ug,b.f,c),T(b,d)):b.h=x.setTimeout(function(){this.h=0;var b=new qg(vg,this.f,c);T(this,b)}.bind(b),250)} -function wg(b,c){c.type==xg||c.type==yg?delete b.o[c.pointerId]:c.type==zg&&(b.o[c.pointerId]=!0);b.s=Object.keys(b.o).length}n=rg.prototype;n.qc=function(b){wg(this,b);var c=new qg(xg,this.f,b);T(this,c);!this.l&&0===b.button&&sg(this,this.b);0===this.s&&(this.c.forEach(P),this.c.length=0,this.l=!1,this.b=null,ib(this.a),this.a=null)}; -n.xd=function(b){wg(this,b);var c=new qg(zg,this.f,b);T(this,c);this.b=b;0===this.c.length&&(this.a=new jg(document),this.c.push(R(this.a,Ag,this.$d,this),R(this.a,xg,this.qc,this),R(this.g,yg,this.qc,this)))};n.$d=function(b){if(b.clientX!=this.b.clientX||b.clientY!=this.b.clientY){this.l=!0;var c=new qg(Bg,this.f,b,this.l);T(this,c)}b.preventDefault()};n.ne=function(b){T(this,new qg(b.type,this.f,b,!(!this.b||b.clientX==this.b.clientX&&b.clientY==this.b.clientY)))}; -n.K=function(){this.j&&(P(this.j),this.j=null);this.i&&(P(this.i),this.i=null);this.c.forEach(P);this.c.length=0;this.a&&(ib(this.a),this.a=null);this.g&&(ib(this.g),this.g=null);rg.Y.K.call(this)};var vg="singleclick",tg="click",ug="dblclick",Bg="pointerdrag",Ag="pointermove",zg="pointerdown",xg="pointerup",yg="pointercancel",Cg={Le:vg,Ae:tg,Be:ug,Ee:Bg,He:Ag,De:zg,Ke:xg,Je:"pointerover",Ie:"pointerout",Fe:"pointerenter",Ge:"pointerleave",Ce:yg};function Dg(b){U.call(this);var c=Va({},b);c.opacity=void 0!==b.opacity?b.opacity:1;c.visible=void 0!==b.visible?b.visible:!0;c.zIndex=void 0!==b.zIndex?b.zIndex:0;c.maxResolution=void 0!==b.maxResolution?b.maxResolution:Infinity;c.minResolution=void 0!==b.minResolution?b.minResolution:0;this.l(c)}M(Dg,U); -function Eg(b){var c=b.Ob(),d=b.Ib(),e=b.Va(),f=b.C(),g=b.Pb(),h=b.get("maxResolution"),k=b.get("minResolution");return{layer:b,opacity:Ba(c,0,1),Tb:d,visible:e,Wa:!0,extent:f,zIndex:g,maxResolution:h,minResolution:Math.max(k,0)}}n=Dg.prototype;n.C=function(){return this.get("extent")};n.Ob=function(){return this.get("opacity")};n.Va=function(){return this.get("visible")};n.Pb=function(){return this.get("zIndex")};n.vc=function(b){this.set("opacity",b)};n.wc=function(b){this.set("visible",b)}; -n.xc=function(b){this.set("zIndex",b)};function Fg(){};function Gg(b,c,d,e,f,g){S.call(this,b,c);this.vectorContext=d;this.frameState=e;this.context=f;this.glContext=g}M(Gg,S);function Hg(b){var c=Va({},b);delete c.source;Dg.call(this,c);this.h=this.c=this.b=null;b.map&&this.setMap(b.map);R(this,qb("source"),this.Cd,this);this.Sb(b.source?b.source:null)}M(Hg,Dg);function Ig(b,c){return b.visible&&c>=b.minResolution&&c<b.maxResolution}n=Hg.prototype;n.Eb=function(b){b=b?b:[];b.push(Eg(this));return b};n.W=function(){return this.get("source")||null};n.Ib=function(){var b=this.W();return b?b.N():"undefined"};n.be=function(){this.w()}; -n.Cd=function(){this.h&&(P(this.h),this.h=null);var b=this.W();b&&(this.h=R(b,"change",this.be,this));this.w()};n.setMap=function(b){this.b&&(P(this.b),this.b=null);b||this.w();this.c&&(P(this.c),this.c=null);b&&(this.b=R(b,"precompose",function(b){var d=Eg(this);d.Wa=!1;d.zIndex=Infinity;b.frameState.layerStatesArray.push(d);b.frameState.layerStates[I(this)]=d},this),this.c=R(this,"change",b.render,b),this.w())};n.Sb=function(b){this.set("source",b)};function Jg(b,c,d,e,f,g,h,k){Cb(b);0===c&&0===d||Eb(b,c,d);1==e&&1==f||Fb(b,e,f);0!==g&&Gb(b,g);0===h&&0===k||Eb(b,h,k);return b}function Kg(b,c){return b[0]==c[0]&&b[1]==c[1]&&b[4]==c[4]&&b[5]==c[5]&&b[12]==c[12]&&b[13]==c[13]}function Lg(b,c,d){var e=b[1],f=b[5],g=b[13],h=c[0];c=c[1];d[0]=b[0]*h+b[4]*c+b[12];d[1]=e*h+f*c+g;return d};function Mg(b){nb.call(this);this.a=b}M(Mg,nb);Mg.prototype.Xa=N;Mg.prototype.yc=cc;Mg.prototype.l=function(b,c,d){return function(e,f){return Xe(b,c,e,f,function(b){d[e]||(d[e]={});d[e][b.L.toString()]=b})}};function Ng(b){var c=b.a;c.Va()&&"ready"==c.Ib()&&b.w()}function Og(b,c){c.Gc()&&b.postRenderFunctions.push(na(function(b,c,f){c=I(b).toString();b.Hc(f.viewState.projection,f.usedTiles[c])},c))}function Pg(b,c){if(c){var d,e,f;e=0;for(f=c.length;e<f;++e)d=c[e],b[I(d).toString()]=d}} -function Qg(b,c){var d=c.v;void 0!==d&&("string"===typeof d?b.logos[d]="":ha(d)&&(b.logos[d.src]=d.href))}function Rg(b,c,d,e){c=I(c).toString();d=d.toString();c in b?d in b[c]?(b=b[c][d],e.a<b.a&&(b.a=e.a),e.b>b.b&&(b.b=e.b),e.f<b.f&&(b.f=e.f),e.c>b.c&&(b.c=e.c)):b[c][d]=e:(b[c]={},b[c][d]=e)}function Sg(b,c,d){return[c*(Math.round(b[0]/c)+d[0]%2/2),c*(Math.round(b[1]/c)+d[1]%2/2)]} -function Tg(b,c,d,e,f,g,h,k,l,m){var p=I(c).toString();p in b.wantedTiles||(b.wantedTiles[p]={});var q=b.wantedTiles[p];b=b.tileQueue;var r=d.minZoom,u,w,y,z,D,t;for(t=h;t>=r;--t)for(w=Le(d,g,t,w),y=d.J(t),z=w.a;z<=w.b;++z)for(D=w.f;D<=w.c;++D)h-t<=k?(u=Ug(c,t,z,D,e,f),0==u.N()&&(q[u.L.toString()]=!0,u.getKey()in b.f||b.c([u,p,Pe(d,u.L),y])),void 0!==l&&l.call(m,u)):c.Qc(t,z,D,f)};function Vg(b){this.B=b.opacity;this.o=b.rotateWithView;this.s=b.rotation;this.u=b.scale;this.v=b.snapToPixel};function Wg(b){b=b||{};this.g=void 0!==b.anchor?b.anchor:[.5,.5];this.c=null;this.b=void 0!==b.anchorOrigin?b.anchorOrigin:"top-left";this.l=void 0!==b.anchorXUnits?b.anchorXUnits:"fraction";this.i=void 0!==b.anchorYUnits?b.anchorYUnits:"fraction";var c=void 0!==b.crossOrigin?b.crossOrigin:null,d=void 0!==b.img?b.img:null,e=void 0!==b.imgSize?b.imgSize:null,f=b.src;void 0!==f&&0!==f.length||!d||(f=d.src||I(d).toString());var g=void 0!==b.src?0:2,h;void 0!==b.color?(h=b.color,h=Array.isArray(h)?h: -yd(h)):h=null;var k=Xg.qa(),l=k.get(f,c,h);l||(l=new Yg(d,f,e,c,g,h),k.set(f,c,h,l));this.a=l;this.H=void 0!==b.offset?b.offset:[0,0];this.f=void 0!==b.offsetOrigin?b.offsetOrigin:"top-left";this.h=null;this.j=void 0!==b.size?b.size:null;Vg.call(this,{opacity:void 0!==b.opacity?b.opacity:1,rotation:void 0!==b.rotation?b.rotation:0,scale:void 0!==b.scale?b.scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0,rotateWithView:void 0!==b.rotateWithView?b.rotateWithView:!1})}M(Wg,Vg);n=Wg.prototype; -n.Sa=function(){if(this.c)return this.c;var b=this.g,c=this.ya();if("fraction"==this.l||"fraction"==this.i){if(!c)return null;b=this.g.slice();"fraction"==this.l&&(b[0]*=c[0]);"fraction"==this.i&&(b[1]*=c[1])}if("top-left"!=this.b){if(!c)return null;b===this.g&&(b=this.g.slice());if("top-right"==this.b||"bottom-right"==this.b)b[0]=-b[0]+c[0];if("bottom-left"==this.b||"bottom-right"==this.b)b[1]=-b[1]+c[1]}return this.c=b};n.S=function(b){return this.a.S(b)};n.Db=function(){return this.a.b};n.Ya=function(){return this.a.f}; -n.jb=function(){var b=this.a;if(!b.l)if(b.i){var c=b.b[0],d=b.b[1],e=sf(c,d);e.fillRect(0,0,c,d);b.l=e.canvas}else b.l=b.a;return b.l};n.fa=function(){if(this.h)return this.h;var b=this.H;if("top-left"!=this.f){var c=this.ya(),d=this.a.b;if(!c||!d)return null;b=b.slice();if("top-right"==this.f||"bottom-right"==this.f)b[0]=d[0]-c[0]-b[0];if("bottom-left"==this.f||"bottom-right"==this.f)b[1]=d[1]-c[1]-b[1]}return this.h=b};n.ya=function(){return this.j?this.j:this.a.b}; -n.Mb=function(b,c){return R(this.a,"change",b,c)};n.load=function(){this.a.load()};n.Ub=function(b,c){fb(this.a,"change",b,c)};function Yg(b,c,d,e,f,g){lb.call(this);this.l=null;this.a=b?b:new Image;null!==e&&(this.a.crossOrigin=e);this.c=g?document.createElement("CANVAS"):null;this.h=g;this.g=null;this.f=f;this.b=d;this.o=c;this.i=!1;2==this.f&&Zg(this)}M(Yg,lb);function Zg(b){var c=sf(1,1);try{c.drawImage(b.a,0,0),c.getImageData(0,0,1,1)}catch(d){b.i=!0}} -Yg.prototype.j=function(){this.f=3;this.g.forEach(P);this.g=null;T(this,"change")}; -Yg.prototype.s=function(){this.f=2;this.b&&(this.a.width=this.b[0],this.a.height=this.b[1]);this.b=[this.a.width,this.a.height];this.g.forEach(P);this.g=null;Zg(this);if(!this.i&&null!==this.h){this.c.width=this.a.width;this.c.height=this.a.height;var b=this.c.getContext("2d");b.drawImage(this.a,0,0);for(var c=b.getImageData(0,0,this.a.width,this.a.height),d=c.data,e=this.h[0]/255,f=this.h[1]/255,g=this.h[2]/255,h=0,k=d.length;h<k;h+=4)d[h]*=e,d[h+1]*=f,d[h+2]*=g;b.putImageData(c,0,0)}T(this,"change")}; -Yg.prototype.S=function(){return this.c?this.c:this.a};Yg.prototype.load=function(){if(0==this.f){this.f=1;this.g=[R(this.a,"error",this.j,this,!0),R(this.a,"load",this.s,this,!0)];try{this.a.src=this.o}catch(b){this.j()}}};function Xg(){this.a={};this.b=0}aa(Xg);Xg.prototype.clear=function(){this.a={};this.b=0};Xg.prototype.get=function(b,c,d){b=c+":"+b+":"+(d?wd(d):"null");return b in this.a?this.a[b]:null};Xg.prototype.set=function(b,c,d,e){this.a[c+":"+b+":"+(d?wd(d):"null")]=e;++this.b};function $g(b,c){this.h=c;this.f={};this.B={}}M($g,hb);function ah(b){var c=b.viewState,d=b.coordinateToPixelMatrix;Jg(d,b.size[0]/2,b.size[1]/2,1/c.resolution,-1/c.resolution,-c.rotation,-c.center[0],-c.center[1]);Db(d,b.pixelToCoordinateMatrix)}n=$g.prototype;n.K=function(){for(var b in this.f)ib(this.f[b])};function bh(){var b=Xg.qa();if(32<b.b){var c=0,d,e;for(d in b.a)e=b.a[d],0!==(c++&3)||mb(e)||(delete b.a[d],--b.b)}} -n.Qb=function(b,c,d,e,f,g){function h(b,f){var g=I(b).toString(),h=c.layerStates[I(f)].Wa;if(!(g in c.skippedFeatureUids)||h)return d.call(e,b,h?f:null)}var k,l=c.viewState,m=l.resolution,p=l.projection,l=b;if(p.a){var p=p.C(),q=Ub(p),r=b[0];if(r<p[0]||r>p[2])l=[r+q*Math.ceil((p[0]-r)/q),b[1]]}p=c.layerStatesArray;for(q=p.length-1;0<=q;--q){var u=p[q],r=u.layer;if(Ig(u,m)&&f.call(g,r)&&(u=ch(this,r),r.W()&&(k=u.Xa(r.W().j?l:b,c,h,e)),k))return k}}; -n.zc=function(b,c,d,e){return void 0!==this.Qb(b,c,bc,this,d,e)};function ch(b,c){var d=I(c).toString();if(d in b.f)return b.f[d];var e=b.Bb(c);b.f[d]=e;b.B[d]=R(e,"change",b.rd,b);return e}n.rd=function(){this.h.render()};n.kb=N;n.qe=function(b,c){for(var d in this.f)if(!(c&&d in c.layerStates)){var e=d,f=this.f[e];delete this.f[e];P(this.B[e]);delete this.B[e];ib(f)}};function dh(b,c){for(var d in b.f)if(!(d in c.layerStates)){c.postRenderFunctions.push(b.qe.bind(b));break}} -function Na(b,c){return b.zIndex-c.zIndex};function eh(b,c){this.j=b;this.l=c;this.a=[];this.b=[];this.f={}}eh.prototype.clear=function(){this.a.length=0;this.b.length=0;Wa(this.f)};function fh(b){var c=b.a,d=b.b,e=c[0];1==c.length?(c.length=0,d.length=0):(c[0]=c.pop(),d[0]=d.pop(),gh(b,0));c=b.l(e);delete b.f[c];return e}eh.prototype.c=function(b){var c=this.j(b);return Infinity!=c?(this.a.push(b),this.b.push(c),this.f[this.l(b)]=!0,hh(this,0,this.a.length-1),!0):!1}; -function gh(b,c){for(var d=b.a,e=b.b,f=d.length,g=d[c],h=e[c],k=c;c<f>>1;){var l=2*c+1,m=2*c+2,l=m<f&&e[m]<e[l]?m:l;d[c]=d[l];e[c]=e[l];c=l}d[c]=g;e[c]=h;hh(b,k,c)}function hh(b,c,d){var e=b.a;b=b.b;for(var f=e[d],g=b[d];d>c;){var h=d-1>>1;if(b[h]>g)e[d]=e[h],b[d]=b[h],d=h;else break}e[d]=f;b[d]=g}function ih(b){var c=b.j,d=b.a,e=b.b,f=0,g=d.length,h,k,l;for(k=0;k<g;++k)h=d[k],l=c(h),Infinity==l?delete b.f[b.l(h)]:(e[f]=l,d[f++]=h);d.length=f;e.length=f;for(c=(b.a.length>>1)-1;0<=c;c--)gh(b,c)};function jh(b,c){eh.call(this,function(c){return b.apply(null,c)},function(b){return b[0].getKey()});this.B=c;this.h=0;this.g={}}M(jh,eh);jh.prototype.c=function(b){var c=jh.Y.c.call(this,b);c&&R(b[0],"change",this.i,this);return c};jh.prototype.i=function(b){b=b.target;var c=b.N();if(2===c||3===c||4===c||5===c)fb(b,"change",this.i,this),b=b.getKey(),b in this.g&&(delete this.g[b],--this.h),this.B()};function kh(){this.a=[];this.b=this.f=0}function lh(b,c){var d=b.b,e=.05-d,f=Math.log(.05/b.b)/-.005;return dd({source:c,duration:f,easing:function(b){return d*(Math.exp(-.005*b*f)-1)/e}})};function mh(b){U.call(this);this.T=null;this.set("active",!0);this.handleEvent=b.handleEvent}M(mh,U);mh.prototype.setMap=function(b){this.T=b};function nh(b,c,d,e,f){if(void 0!==d){var g=Xc(c),h=c.ga();void 0!==g&&h&&f&&0<f&&(b.ea(ed({rotation:g,duration:f,easing:ad})),e&&b.ea(dd({source:h,duration:f,easing:ad})));c.rotate(d,e)}}function oh(b,c,d,e,f){var g=c.J();d=c.constrainResolution(g,d,0);ph(b,c,d,e,f)} -function ph(b,c,d,e,f){if(d){var g=c.J(),h=c.ga();void 0!==g&&h&&d!==g&&f&&0<f&&(b.ea(fd({resolution:g,duration:f,easing:ad})),e&&b.ea(dd({source:h,duration:f,easing:ad})));if(e){var k;b=c.ga();f=c.J();void 0!==b&&void 0!==f&&(k=[e[0]-d*(e[0]-b[0])/f,e[1]-d*(e[1]-b[1])/f]);c.ma(k)}Zc(c,d)}};function qh(b){b=b?b:{};this.a=b.delta?b.delta:1;mh.call(this,{handleEvent:rh});this.b=void 0!==b.duration?b.duration:250}M(qh,mh);function rh(b){var c=!1,d=b.originalEvent;if(b.type==ug){var c=b.map,e=b.coordinate,d=d.shiftKey?-this.a:this.a,f=c.O();oh(c,f,d,e,this.b);b.preventDefault();c=!0}return!c};function sh(b){b=b.originalEvent;return b.altKey&&!(b.metaKey||b.ctrlKey)&&b.shiftKey}function th(b){b=b.originalEvent;return 0==b.button&&!(Kd&&Df&&b.ctrlKey)}function uh(b){b=b.originalEvent;return!b.altKey&&!(b.metaKey||b.ctrlKey)&&!b.shiftKey}function vh(b){b=b.originalEvent;return!b.altKey&&!(b.metaKey||b.ctrlKey)&&b.shiftKey}function wh(b){b=b.originalEvent.target.tagName;return"INPUT"!==b&&"SELECT"!==b&&"TEXTAREA"!==b}function xh(b){return"mouse"==b.a.pointerType};function yh(b){b=b?b:{};mh.call(this,{handleEvent:b.handleEvent?b.handleEvent:zh});this.ob=b.handleDownEvent?b.handleDownEvent:cc;this.pb=b.handleDragEvent?b.handleDragEvent:N;this.qb=b.handleMoveEvent?b.handleMoveEvent:N;this.rb=b.handleUpEvent?b.handleUpEvent:cc;this.s=!1;this.G={};this.c=[]}M(yh,mh);function Ah(b){for(var c=b.length,d=0,e=0,f=0;f<c;f++)d+=b[f].clientX,e+=b[f].clientY;return[d/c,e/c]} -function zh(b){if(!(b instanceof qg))return!0;var c=!1,d=b.type;if(d===zg||d===Bg||d===xg)d=b.a,b.type==xg?delete this.G[d.pointerId]:b.type==zg?this.G[d.pointerId]=d:d.pointerId in this.G&&(this.G[d.pointerId]=d),this.c=Xa(this.G);this.s&&(b.type==Bg?this.pb(b):b.type==xg&&(this.s=this.rb(b)));b.type==zg?(this.s=b=this.ob(b),c=this.v(b)):b.type==Ag&&this.qb(b);return!c}yh.prototype.v=function(b){return b};function Bh(b){yh.call(this,{handleDownEvent:Ch,handleDragEvent:Dh,handleUpEvent:Eh});b=b?b:{};this.a=b.kinetic;this.b=this.g=null;this.i=b.condition?b.condition:uh;this.h=!1}M(Bh,yh);function Dh(b){var c=Ah(this.c);this.a&&this.a.a.push(c[0],c[1],Date.now());if(this.b){var d=this.b[0]-c[0],e=c[1]-this.b[1];b=b.map;var f=b.O(),g=f.N(),e=d=[d,e],h=g.resolution;e[0]*=h;e[1]*=h;ub(d,g.rotation);tb(d,g.center);d=f.a.center(d);b.render();f.ma(d)}this.b=c} -function Eh(b){b=b.map;var c=b.O();if(0===this.c.length){var d;if(d=!this.h&&this.a)if(d=this.a,6>d.a.length)d=!1;else{var e=Date.now()-100,f=d.a.length-3;if(d.a[f+2]<e)d=!1;else{for(var g=f-3;0<g&&d.a[g+2]>e;)g-=3;var e=d.a[f+2]-d.a[g+2],h=d.a[f]-d.a[g],f=d.a[f+1]-d.a[g+1];d.f=Math.atan2(f,h);d.b=Math.sqrt(h*h+f*f)/e;d=.05<d.b}}d&&(d=(.05-this.a.b)/-.005,f=this.a.f,g=c.ga(),this.g=lh(this.a,g),b.ea(this.g),g=Fh(b,g),d=b.pa([g[0]-d*Math.cos(f),g[1]-d*Math.sin(f)]),d=c.a.center(d),c.ma(d));$c(c,-1); -b.render();return!1}this.b=null;return!0}function Ch(b){if(0<this.c.length&&this.i(b)){var c=b.map,d=c.O();this.b=null;this.s||$c(d,1);c.render();this.g&&Ka(c.A,this.g)&&(d.ma(b.frameState.viewState.center),this.g=null);this.a&&(b=this.a,b.a.length=0,b.f=0,b.b=0);this.h=1<this.c.length;return!0}return!1}Bh.prototype.v=cc;function Gh(b){b=b?b:{};yh.call(this,{handleDownEvent:Hh,handleDragEvent:Ih,handleUpEvent:Jh});this.b=b.condition?b.condition:sh;this.a=void 0;this.g=void 0!==b.duration?b.duration:250}M(Gh,yh);function Ih(b){if(xh(b)){var c=b.map,d=c.Ha();b=b.pixel;d=Math.atan2(d[1]/2-b[1],b[0]-d[0]/2);if(void 0!==this.a){b=d-this.a;var e=c.O(),f=Xc(e);c.render();nh(c,e,f-b)}this.a=d}} -function Jh(b){if(!xh(b))return!0;b=b.map;var c=b.O();$c(c,-1);var d=Xc(c),e=this.g,d=c.constrainRotation(d,0);nh(b,c,d,void 0,e);return!1}function Hh(b){return xh(b)&&th(b)&&this.b(b)?(b=b.map,$c(b.O(),1),b.render(),this.a=void 0,!0):!1}Gh.prototype.v=cc;function Kh(b){this.c=null;this.b=document.createElement("div");this.b.style.position="absolute";this.b.className="ol-box "+b;this.f=this.g=this.a=null}M(Kh,hb);Kh.prototype.K=function(){this.setMap(null)};function Lh(b){var c=b.g,d=b.f;b=b.b.style;b.left=Math.min(c[0],d[0])+"px";b.top=Math.min(c[1],d[1])+"px";b.width=Math.abs(d[0]-c[0])+"px";b.height=Math.abs(d[1]-c[1])+"px"} -Kh.prototype.setMap=function(b){if(this.a){this.a.o.removeChild(this.b);var c=this.b.style;c.left=c.top=c.width=c.height="inherit"}(this.a=b)&&this.a.o.appendChild(this.b)};function Mh(b){var c=b.g,d=b.f,c=[c,[c[0],d[1]],d,[d[0],c[1]]].map(b.a.pa,b.a);c[4]=c[0].slice();b.c?b.c.X([c]):b.c=new Sc([c])}Kh.prototype.M=function(){return this.c};function Nh(b,c,d){S.call(this,b);this.coordinate=c;this.mapBrowserEvent=d}M(Nh,S);function Oh(b){yh.call(this,{handleDownEvent:Ph,handleDragEvent:Qh,handleUpEvent:Rh});b=b?b:{};this.a=new Kh(b.className||"ol-dragbox");this.b=null;this.j=b.condition?b.condition:bc;this.i=b.boxEndCondition?b.boxEndCondition:Sh}M(Oh,yh);function Sh(b,c,d){b=d[0]-c[0];c=d[1]-c[1];return 64<=b*b+c*c} -function Qh(b){if(xh(b)){var c=this.a,d=b.pixel;c.g=this.b;c.f=d;Mh(c);Lh(c);T(this,new Nh("boxdrag",b.coordinate,b))}}Oh.prototype.M=function(){return this.a.M()};Oh.prototype.h=N;function Rh(b){if(!xh(b))return!0;this.a.setMap(null);this.i(b,this.b,b.pixel)&&(this.h(b),T(this,new Nh("boxend",b.coordinate,b)));return!1} -function Ph(b){if(xh(b)&&th(b)&&this.j(b)){this.b=b.pixel;this.a.setMap(b.map);var c=this.a,d=this.b;c.g=this.b;c.f=d;Mh(c);Lh(c);T(this,new Nh("boxstart",b.coordinate,b));return!0}return!1};function Th(b){b=b?b:{};var c=b.condition?b.condition:vh;this.g=void 0!==b.duration?b.duration:200;this.o=void 0!==b.out?b.out:!1;Oh.call(this,{condition:c,className:b.className||"ol-dragzoom"})}M(Th,Oh); -Th.prototype.h=function(){var b=this.T,c=b.O(),d=b.Ha(),e=this.M().C();if(this.o){var f=c.dc(d),e=[Fh(b,Wb(e)),Fh(b,[e[2],e[3]])],g=Ob(void 0),h,k;h=0;for(k=e.length;h<k;++h)Jb(g,e[h]);g=1/Yc(g,d);e=(f[2]-f[0])/2*(g-1);g=(f[3]-f[1])/2*(g-1);f[0]-=e;f[2]+=e;f[1]-=g;f[3]+=g;e=f}d=c.constrainResolution(Yc(e,d));f=c.J();g=c.ga();b.ea(fd({resolution:f,duration:this.g,easing:ad}));b.ea(dd({source:g,duration:this.g,easing:ad}));c.ma(Xb(e));Zc(c,d)};function Uh(b){mh.call(this,{handleEvent:Vh});b=b||{};this.a=function(b){return uh.call(this,b)&&wh.call(this,b)};this.b=void 0!==b.condition?b.condition:this.a;this.c=void 0!==b.duration?b.duration:100;this.g=void 0!==b.pixelDelta?b.pixelDelta:128}M(Uh,mh); -function Vh(b){var c=!1;if("keydown"==b.type){var d=b.originalEvent.keyCode;if(this.b(b)&&(40==d||37==d||39==d||38==d)){var e=b.map,c=e.O(),f=c.J()*this.g,g=0,h=0;40==d?h=-f:37==d?g=-f:39==d?g=f:h=f;d=[g,h];ub(d,Xc(c));f=this.c;if(g=c.ga())f&&0<f&&e.ea(dd({source:g,duration:f,easing:cd})),e=c.a.center([g[0]+d[0],g[1]+d[1]]),c.ma(e);b.preventDefault();c=!0}}return!c};function Wh(b){mh.call(this,{handleEvent:Xh});b=b?b:{};this.b=b.condition?b.condition:wh;this.a=b.delta?b.delta:1;this.c=void 0!==b.duration?b.duration:100}M(Wh,mh);function Xh(b){var c=!1;if("keydown"==b.type||"keypress"==b.type){var d=b.originalEvent.charCode;if(this.b(b)&&(43==d||45==d)){c=b.map;d=43==d?this.a:-this.a;c.render();var e=c.O();oh(c,e,d,void 0,this.c);b.preventDefault();c=!0}}return!c};function Yh(b){mh.call(this,{handleEvent:Zh});b=b||{};this.a=0;this.i=void 0!==b.duration?b.duration:250;this.j=void 0!==b.useAnchor?b.useAnchor:!0;this.c=null;this.g=this.b=void 0}M(Yh,mh); -function Zh(b){var c=!1;if("wheel"==b.type||"mousewheel"==b.type){var c=b.map,d=b.originalEvent;this.j&&(this.c=b.coordinate);var e;"wheel"==b.type?(e=d.deltaY,Bf&&d.deltaMode===x.WheelEvent.DOM_DELTA_PIXEL&&(e/=Ef),d.deltaMode===x.WheelEvent.DOM_DELTA_LINE&&(e*=40)):"mousewheel"==b.type&&(e=-d.wheelDeltaY,Cf&&(e/=3));this.a+=e;void 0===this.b&&(this.b=Date.now());e=Math.max(80-(Date.now()-this.b),0);x.clearTimeout(this.g);this.g=x.setTimeout(this.h.bind(this,c),e);b.preventDefault();c=!0}return!c} -Yh.prototype.h=function(b){var c=Ba(this.a,-1,1),d=b.O();b.render();oh(b,d,-c,this.c,this.i);this.a=0;this.c=null;this.g=this.b=void 0};function $h(b){yh.call(this,{handleDownEvent:ai,handleDragEvent:bi,handleUpEvent:ci});b=b||{};this.b=null;this.g=void 0;this.a=!1;this.h=0;this.j=void 0!==b.threshold?b.threshold:.3;this.i=void 0!==b.duration?b.duration:250}M($h,yh); -function bi(b){var c=0,d=this.c[0],e=this.c[1],d=Math.atan2(e.clientY-d.clientY,e.clientX-d.clientX);void 0!==this.g&&(c=d-this.g,this.h+=c,!this.a&&Math.abs(this.h)>this.j&&(this.a=!0));this.g=d;b=b.map;d=b.a.getBoundingClientRect();e=Ah(this.c);e[0]-=d.left;e[1]-=d.top;this.b=b.pa(e);this.a&&(d=b.O(),e=Xc(d),b.render(),nh(b,d,e+c,this.b))} -function ci(b){if(2>this.c.length){b=b.map;var c=b.O();$c(c,-1);if(this.a){var d=Xc(c),e=this.b,f=this.i,d=c.constrainRotation(d,0);nh(b,c,d,e,f)}return!1}return!0}function ai(b){return 2<=this.c.length?(b=b.map,this.b=null,this.g=void 0,this.a=!1,this.h=0,this.s||$c(b.O(),1),b.render(),!0):!1}$h.prototype.v=cc;function di(b){yh.call(this,{handleDownEvent:ei,handleDragEvent:fi,handleUpEvent:gi});b=b?b:{};this.b=null;this.h=void 0!==b.duration?b.duration:400;this.a=void 0;this.g=1}M(di,yh);function fi(b){var c=1,d=this.c[0],e=this.c[1],f=d.clientX-e.clientX,d=d.clientY-e.clientY,f=Math.sqrt(f*f+d*d);void 0!==this.a&&(c=this.a/f);this.a=f;1!=c&&(this.g=c);b=b.map;var f=b.O(),d=f.J(),e=b.a.getBoundingClientRect(),g=Ah(this.c);g[0]-=e.left;g[1]-=e.top;this.b=b.pa(g);b.render();ph(b,f,d*c,this.b)} -function gi(b){if(2>this.c.length){b=b.map;var c=b.O();$c(c,-1);var d=c.J(),e=this.b,f=this.h,d=c.constrainResolution(d,0,this.g-1);ph(b,c,d,e,f);return!1}return!0}function ei(b){return 2<=this.c.length?(b=b.map,this.b=null,this.a=void 0,this.g=1,this.s||$c(b.O(),1),b.render(),!0):!1}di.prototype.v=cc;function hi(b){var c=b||{};b=Va({},c);delete b.layers;c=c.layers;Dg.call(this,b);this.b=[];this.a={};R(this,qb("layers"),this.td,this);c?Array.isArray(c)&&(c=new md(c.slice())):c=new md;this.set("layers",c)}M(hi,Dg);n=hi.prototype;n.gb=function(){this.Va()&&this.w()}; -n.td=function(){this.b.forEach(P);this.b.length=0;var b=this.get("layers");this.b.push(R(b,"add",this.sd,this),R(b,"remove",this.ud,this));for(var c in this.a)this.a[c].forEach(P);Wa(this.a);var b=b.a,d,e;c=0;for(d=b.length;c<d;c++)e=b[c],this.a[I(e).toString()]=[R(e,"propertychange",this.gb,this),R(e,"change",this.gb,this)];this.w()};n.sd=function(b){b=b.element;var c=I(b).toString();this.a[c]=[R(b,"propertychange",this.gb,this),R(b,"change",this.gb,this)];this.w()}; -n.ud=function(b){b=I(b.element).toString();this.a[b].forEach(P);delete this.a[b];this.w()};n.Eb=function(b){var c=void 0!==b?b:[],d=c.length;od(this.get("layers"),function(b){b.Eb(c)});b=Eg(this);var e,f;for(e=c.length;d<e;d++)f=c[d],f.opacity*=b.opacity,f.visible=f.visible&&b.visible,f.maxResolution=Math.min(f.maxResolution,b.maxResolution),f.minResolution=Math.max(f.minResolution,b.minResolution),void 0!==b.extent&&(f.extent=void 0!==f.extent?Zb(f.extent,b.extent):b.extent);return c};n.Ib=function(){return"ready"};function ii(b){hc.call(this,{code:b,units:"m",extent:ji,global:!0,worldExtent:ki})}M(ii,hc);ii.prototype.getPointResolution=function(b,c){return b/Ca(c[1]/6378137)};var li=6378137*Math.PI,ji=[-li,-li,li,li],ki=[-180,-85,180,85],mi="EPSG:3857 EPSG:102100 EPSG:102113 EPSG:900913 urn:ogc:def:crs:EPSG:6.18:3:3857 urn:ogc:def:crs:EPSG::3857 http://www.opengis.net/gml/srs/epsg.xml#3857".split(" ").map(function(b){return new ii(b)}); -function ni(b,c,d){var e=b.length;d=1<d?d:2;void 0===c&&(2<d?c=b.slice():c=Array(e));for(var f=0;f<e;f+=d)c[f]=6378137*Math.PI*b[f]/180,c[f+1]=6378137*Math.log(Math.tan(Math.PI*(b[f+1]+90)/360));return c}function oi(b,c,d){var e=b.length;d=1<d?d:2;void 0===c&&(2<d?c=b.slice():c=Array(e));for(var f=0;f<e;f+=d)c[f]=180*b[f]/(6378137*Math.PI),c[f+1]=360*Math.atan(Math.exp(b[f+1]/6378137))/Math.PI-90;return c};var pi=new dc(6378137);function qi(b,c){hc.call(this,{code:b,units:"degrees",extent:ri,axisOrientation:c,global:!0,metersPerUnit:si,worldExtent:ri})}M(qi,hc);qi.prototype.getPointResolution=function(b){return b}; -var ri=[-180,-90,180,90],si=Math.PI*pi.radius/180,ti=[new qi("CRS:84"),new qi("EPSG:4326","neu"),new qi("urn:ogc:def:crs:EPSG::4326","neu"),new qi("urn:ogc:def:crs:EPSG:6.6:4326","neu"),new qi("urn:ogc:def:crs:OGC:1.3:CRS84"),new qi("urn:ogc:def:crs:OGC:2:84"),new qi("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new qi("urn:x-ogc:def:crs:EPSG:4326","neu")];function X(b){b=b?b:{};var c=Va({},b);delete c.preload;delete c.useInterimTilesOnError;Hg.call(this,c);this.set("preload",void 0!==b.preload?b.preload:0);this.set("useInterimTilesOnError",void 0!==b.useInterimTilesOnError?b.useInterimTilesOnError:!0)}M(X,Hg);function ui(b){return b.get("useInterimTilesOnError")};var vi=[0,0,0,1],wi=[],xi=[0,0,0,1];function yi(b,c,d,e){0!==c&&(b.translate(d,e),b.rotate(c),b.translate(-d,-e))};function zi(b){b=b||{};this.a=void 0!==b.color?b.color:null;this.b=void 0}function Ai(b){void 0===b.b&&(b.b=b.a instanceof CanvasPattern||b.a instanceof CanvasGradient?I(b.a).toString():"f"+(b.a?wd(b.a):"-"));return b.b};function Bi(){this.b=-1};function Ci(){this.b=-1;this.b=64;this.a=Array(4);this.g=Array(this.b);this.c=this.f=0;this.a[0]=1732584193;this.a[1]=4023233417;this.a[2]=2562383102;this.a[3]=271733878;this.c=this.f=0}M(Ci,Bi); -function Di(b,c,d){d||(d=0);var e=Array(16);if(da(c))for(var f=0;16>f;++f)e[f]=c.charCodeAt(d++)|c.charCodeAt(d++)<<8|c.charCodeAt(d++)<<16|c.charCodeAt(d++)<<24;else for(f=0;16>f;++f)e[f]=c[d++]|c[d++]<<8|c[d++]<<16|c[d++]<<24;c=b.a[0];d=b.a[1];var f=b.a[2],g=b.a[3],h=0,h=c+(g^d&(f^g))+e[0]+3614090360&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[1]+3905402710&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[2]+606105819&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^ -c))+e[3]+3250441966&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[4]+4118548399&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[5]+1200080426&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[6]+2821735955&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[7]+4249261313&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[8]+1770035416&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[9]+2336552879&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+ -(d^g&(c^d))+e[10]+4294925233&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[11]+2304563134&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[12]+1804603682&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[13]+4254626195&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[14]+2792965006&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[15]+1236535329&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(f^g&(d^f))+e[1]+4129170786&4294967295;c=d+(h<<5&4294967295| -h>>>27);h=g+(d^f&(c^d))+e[6]+3225465664&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[11]+643717713&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[0]+3921069994&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[5]+3593408605&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[10]+38016083&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[15]+3634488961&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[4]+3889429448&4294967295;d=f+(h<<20&4294967295| -h>>>12);h=c+(f^g&(d^f))+e[9]+568446438&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[14]+3275163606&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[3]+4107603335&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[8]+1163531501&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[13]+2850285829&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[2]+4243563512&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[7]+1735328473&4294967295;f=g+(h<<14&4294967295| -h>>>18);h=d+(g^c&(f^g))+e[12]+2368359562&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(d^f^g)+e[5]+4294588738&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[8]+2272392833&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[11]+1839030562&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[14]+4259657740&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[1]+2763975236&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[4]+1272893353&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^ -c^d)+e[7]+4139469664&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[10]+3200236656&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[13]+681279174&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[0]+3936430074&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[3]+3572445317&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[6]+76029189&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[9]+3654602809&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[12]+3873151461&4294967295; -g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[15]+530742520&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[2]+3299628645&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(f^(d|~g))+e[0]+4096336452&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[7]+1126891415&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[14]+2878612391&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[5]+4237533241&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[12]+1700485571&4294967295;c=d+ -(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[3]+2399980690&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[10]+4293915773&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[1]+2240044497&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[8]+1873313359&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[15]+4264355552&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[6]+2734768916&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[13]+1309151649&4294967295; -d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[4]+4149444226&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[11]+3174756917&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[2]+718787259&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[9]+3951481745&4294967295;b.a[0]=b.a[0]+c&4294967295;b.a[1]=b.a[1]+(f+(h<<21&4294967295|h>>>11))&4294967295;b.a[2]=b.a[2]+f&4294967295;b.a[3]=b.a[3]+g&4294967295} -function Ei(b,c){var d;void 0===d&&(d=c.length);for(var e=d-b.b,f=b.g,g=b.f,h=0;h<d;){if(0==g)for(;h<=e;)Di(b,c,h),h+=b.b;if(da(c))for(;h<d;){if(f[g++]=c.charCodeAt(h++),g==b.b){Di(b,f);g=0;break}}else for(;h<d;)if(f[g++]=c[h++],g==b.b){Di(b,f);g=0;break}}b.f=g;b.c+=d};function Fi(b){b=b||{};this.b=void 0!==b.color?b.color:null;this.c=b.lineCap;this.a=void 0!==b.lineDash?b.lineDash:null;this.g=b.lineJoin;this.h=b.miterLimit;this.f=b.width;this.l=void 0} -function Gi(b){if(void 0===b.l){var c="s"+(b.b?wd(b.b):"-")+","+(void 0!==b.c?b.c.toString():"-")+","+(b.a?b.a.toString():"-")+","+(void 0!==b.g?b.g:"-")+","+(void 0!==b.h?b.h.toString():"-")+","+(void 0!==b.f?b.f.toString():"-"),d=new Ci;Ei(d,c);var e=Array((56>d.f?d.b:2*d.b)-d.f);e[0]=128;for(c=1;c<e.length-8;++c)e[c]=0;for(var f=8*d.c,c=e.length-8;c<e.length;++c)e[c]=f&255,f/=256;Ei(d,e);e=Array(16);for(c=f=0;4>c;++c)for(var g=0;32>g;g+=8)e[f++]=d.a[c]>>>g&255;if(8192>=e.length)d=String.fromCharCode.apply(null, -e);else for(d="",c=0;c<e.length;c+=8192)d+=String.fromCharCode.apply(null,sd(e,c,c+8192));b.l=d}return b.l};function Hi(b){b=b||{};this.h=this.a=this.c=null;this.g=void 0!==b.fill?b.fill:null;this.b=void 0!==b.stroke?b.stroke:null;this.f=b.radius;this.j=[0,0];this.i=this.H=this.l=null;var c=b.atlasManager,d,e=null,f,g=0;this.b&&(f=wd(this.b.b),g=this.b.f,void 0===g&&(g=1),e=this.b.a,Ff||(e=null));var h=2*(this.f+g)+1;f={strokeStyle:f,Za:g,size:h,lineDash:e};if(void 0===c)this.a=document.createElement("CANVAS"),this.a.height=h,this.a.width=h,d=h=this.a.width,c=this.a.getContext("2d"),this.Jc(f,c,0,0),this.g? -this.h=this.a:(c=this.h=document.createElement("CANVAS"),c.height=f.size,c.width=f.size,c=c.getContext("2d"),this.Ic(f,c,0,0));else{h=Math.round(h);(e=!this.g)&&(d=this.Ic.bind(this,f));var g=this.b?Gi(this.b):"-",k=this.g?Ai(this.g):"-";this.c&&g==this.c[1]&&k==this.c[2]&&this.f==this.c[3]||(this.c=["c"+g+k+(void 0!==this.f?this.f.toString():"-"),g,k,this.f]);f=c.add(this.c[0],h,h,this.Jc.bind(this,f),d);this.a=f.image;this.j=[f.offsetX,f.offsetY];d=f.image.width;this.h=e?f.Id:this.a}this.l=[h/2, -h/2];this.H=[h,h];this.i=[d,d];Vg.call(this,{opacity:1,rotateWithView:!1,rotation:0,scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0})}M(Hi,Vg);n=Hi.prototype;n.Sa=function(){return this.l};n.jb=function(){return this.h};n.S=function(){return this.a};n.Ya=function(){return 2};n.Db=function(){return this.i};n.fa=function(){return this.j};n.ya=function(){return this.H};n.Mb=N;n.load=N;n.Ub=N; -n.Jc=function(b,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();c.arc(b.size/2,b.size/2,this.f,0,2*Math.PI,!0);this.g&&(c.fillStyle=zd(this.g.a),c.fill());this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.stroke());c.closePath()}; -n.Ic=function(b,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();c.arc(b.size/2,b.size/2,this.f,0,2*Math.PI,!0);c.fillStyle=wd(vi);c.fill();this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.stroke());c.closePath()};function Ii(b){b=b||{};this.h=null;this.f=Ji;void 0!==b.geometry&&Ki(this,b.geometry);this.g=void 0!==b.fill?b.fill:null;this.l=void 0!==b.image?b.image:null;this.c=void 0!==b.stroke?b.stroke:null;this.b=void 0!==b.text?b.text:null;this.a=b.zIndex}Ii.prototype.M=function(){return this.h};Ii.prototype.S=function(){return this.l};function Ki(b,c){ga(c)?b.f=c:"string"===typeof c?b.f=function(b){return b.get(c)}:c?void 0!==c&&(b.f=function(){return c}):b.f=Ji;b.h=c} -function Li(b){if(!ga(b)){var c;c=Array.isArray(b)?b:[b];b=function(){return c}}return b}var Mi=null;function Ni(){if(!Mi){var b=new zi({color:"rgba(255,255,255,0.4)"}),c=new Fi({color:"#3399CC",width:1.25});Mi=[new Ii({image:new Hi({fill:b,stroke:c,radius:5}),fill:b,stroke:c})]}return Mi} -function Oi(){var b={},c=[255,255,255,1],d=[0,153,255,1];b.Polygon=[new Ii({fill:new zi({color:[255,255,255,.5]})})];b.MultiPolygon=b.Polygon;b.LineString=[new Ii({stroke:new Fi({color:c,width:5})}),new Ii({stroke:new Fi({color:d,width:3})})];b.MultiLineString=b.LineString;b.Circle=b.Polygon.concat(b.LineString);b.Point=[new Ii({image:new Hi({radius:6,fill:new zi({color:d}),stroke:new Fi({color:c,width:1.5})}),zIndex:Infinity})];b.MultiPoint=b.Point;b.GeometryCollection=b.Polygon.concat(b.LineString, -b.Point);return b}function Ji(b){return b.M()};function Y(b){b=b?b:{};var c=Va({},b);delete c.style;delete c.renderBuffer;delete c.updateWhileAnimating;delete c.updateWhileInteracting;Hg.call(this,c);this.a=void 0!==b.renderBuffer?b.renderBuffer:100;this.o=null;this.g=void 0;this.s(b.style);this.i=void 0!==b.updateWhileAnimating?b.updateWhileAnimating:!1;this.j=void 0!==b.updateWhileInteracting?b.updateWhileInteracting:!1}M(Y,Hg);Y.prototype.s=function(b){this.o=void 0!==b?b:Ni;this.g=null===b?void 0:Li(this.o);this.w()};function Pi(b,c,d,e,f){this.c=b;this.u=c;this.l=d;this.v=e;this.Ca=f;this.g=this.a=this.b=this.Z=this.T=this.R=null;this.aa=this.ha=this.o=this.D=this.I=this.A=0;this.da=!1;this.h=this.ka=0;this.ua=!1;this.V=0;this.f="";this.j=this.H=this.va=this.la=0;this.G=this.B=this.i=null;this.s=[];this.wa=yb()}M(Pi,Fg); -function Qi(b,c,d){if(b.g){c=zc(c,0,d,2,b.v,b.s);d=b.c;var e=b.wa,f=d.globalAlpha;1!=b.o&&(d.globalAlpha=f*b.o);var g=b.ka;b.da&&(g+=b.Ca);var h,k;h=0;for(k=c.length;h<k;h+=2){var l=c[h]-b.A,m=c[h+1]-b.I;b.ua&&(l=Math.round(l),m=Math.round(m));if(0!==g||1!=b.h){var p=l+b.A,q=m+b.I;Jg(e,p,q,b.h,b.h,g,-p,-q);d.setTransform(e[0],e[1],e[4],e[5],e[12],e[13])}d.drawImage(b.g,b.ha,b.aa,b.V,b.D,l,m,b.V,b.D)}0===g&&1==b.h||d.setTransform(1,0,0,1,0,0);1!=b.o&&(d.globalAlpha=f)}} -function Ri(b,c,d,e){var f=0;if(b.G&&""!==b.f){b.i&&Si(b,b.i);b.B&&Ti(b,b.B);var g=b.G,h=b.c,k=b.Z;k?(k.font!=g.font&&(k.font=h.font=g.font),k.textAlign!=g.textAlign&&(k.textAlign=h.textAlign=g.textAlign),k.textBaseline!=g.textBaseline&&(k.textBaseline=h.textBaseline=g.textBaseline)):(h.font=g.font,h.textAlign=g.textAlign,h.textBaseline=g.textBaseline,b.Z={font:g.font,textAlign:g.textAlign,textBaseline:g.textBaseline});c=zc(c,f,d,e,b.v,b.s);for(g=b.c;f<d;f+=e){h=c[f]+b.la;k=c[f+1]+b.va;if(0!==b.H|| -1!=b.j){var l=Jg(b.wa,h,k,b.j,b.j,b.H,-h,-k);g.setTransform(l[0],l[1],l[4],l[5],l[12],l[13])}b.B&&g.strokeText(b.f,h,k);b.i&&g.fillText(b.f,h,k)}0===b.H&&1==b.j||g.setTransform(1,0,0,1,0,0)}}function Ui(b,c,d,e,f,g){var h=b.c;b=zc(c,d,e,f,b.v,b.s);h.moveTo(b[0],b[1]);c=b.length;g&&(c-=2);for(d=2;d<c;d+=2)h.lineTo(b[d],b[d+1]);g&&h.closePath();return e}function Vi(b,c,d,e,f){var g,h;g=0;for(h=e.length;g<h;++g)d=Ui(b,c,d,e[g],f,!0);return d}n=Pi.prototype; -n.hc=function(b){if($b(this.l,b.C())){if(this.b||this.a){this.b&&Si(this,this.b);this.a&&Ti(this,this.a);var c;c=this.v;var d=this.s,e=b.a;c=e?zc(e,0,e.length,b.b,c,d):null;d=c[2]-c[0];e=c[3]-c[1];d=Math.sqrt(d*d+e*e);e=this.c;e.beginPath();e.arc(c[0],c[1],d,0,2*Math.PI);this.b&&e.fill();this.a&&e.stroke()}""!==this.f&&Ri(this,b.a.slice(0,b.b),2,2)}};n.Ra=function(b){var c=b.a;b=b.b;this.g&&Qi(this,c,c.length);""!==this.f&&Ri(this,c,c.length,b)}; -n.Qa=function(b){var c=b.a;b=b.b;this.g&&Qi(this,c,c.length);""!==this.f&&Ri(this,c,c.length,b)};n.ic=function(b){if($b(this.l,b.C())){if(this.a){Ti(this,this.a);var c=this.c,d=b.a;c.beginPath();Ui(this,d,0,d.length,b.b,!1);c.stroke()}""!==this.f&&(b=Wi(b),Ri(this,b,2,2))}}; -n.jc=function(b){var c=b.C();if($b(this.l,c)){if(this.a){Ti(this,this.a);var c=this.c,d=b.a,e=0,f=b.Ta(),g=b.b;c.beginPath();var h,k;h=0;for(k=f.length;h<k;++h)e=Ui(this,d,e,f[h],g,!1);c.stroke()}""!==this.f&&(b=Xi(b),Ri(this,b,b.length,2))}};n.lc=function(b){if($b(this.l,b.C())){if(this.a||this.b){this.b&&Si(this,this.b);this.a&&Ti(this,this.a);var c=this.c;c.beginPath();Vi(this,Uc(b),0,b.Ta(),b.b);this.b&&c.fill();this.a&&c.stroke()}""!==this.f&&(b=Vc(b),Ri(this,b,2,2))}}; -n.kc=function(b){if($b(this.l,b.C())){if(this.a||this.b){this.b&&Si(this,this.b);this.a&&Ti(this,this.a);var c=this.c,d=Yi(b),e=0,f=b.c,g=b.b,h,k;h=0;for(k=f.length;h<k;++h){var l=f[h];c.beginPath();e=Vi(this,d,e,l,g);this.b&&c.fill();this.a&&c.stroke()}}""!==this.f&&(b=Zi(b),Ri(this,b,b.length,2))}};function Si(b,c){var d=b.c,e=b.R;e?e.fillStyle!=c.fillStyle&&(e.fillStyle=d.fillStyle=c.fillStyle):(d.fillStyle=c.fillStyle,b.R={fillStyle:c.fillStyle})} -function Ti(b,c){var d=b.c,e=b.T;e?(e.lineCap!=c.lineCap&&(e.lineCap=d.lineCap=c.lineCap),Ff&&!La(e.lineDash,c.lineDash)&&d.setLineDash(e.lineDash=c.lineDash),e.lineJoin!=c.lineJoin&&(e.lineJoin=d.lineJoin=c.lineJoin),e.lineWidth!=c.lineWidth&&(e.lineWidth=d.lineWidth=c.lineWidth),e.miterLimit!=c.miterLimit&&(e.miterLimit=d.miterLimit=c.miterLimit),e.strokeStyle!=c.strokeStyle&&(e.strokeStyle=d.strokeStyle=c.strokeStyle)):(d.lineCap=c.lineCap,Ff&&d.setLineDash(c.lineDash),d.lineJoin=c.lineJoin,d.lineWidth= -c.lineWidth,d.miterLimit=c.miterLimit,d.strokeStyle=c.strokeStyle,b.T={lineCap:c.lineCap,lineDash:c.lineDash,lineJoin:c.lineJoin,lineWidth:c.lineWidth,miterLimit:c.miterLimit,strokeStyle:c.strokeStyle})} -n.za=function(b,c){if(b){var d=b.a;this.b={fillStyle:zd(d?d:vi)}}else this.b=null;if(c){var d=c.b,e=c.c,f=c.a,g=c.g,h=c.f,k=c.h;this.a={lineCap:void 0!==e?e:"round",lineDash:f?f:wi,lineJoin:void 0!==g?g:"round",lineWidth:this.u*(void 0!==h?h:1),miterLimit:void 0!==k?k:10,strokeStyle:wd(d?d:xi)}}else this.a=null}; -n.Aa=function(b){if(b){var c=b.Sa(),d=b.S(1),e=b.fa(),f=b.ya();this.A=c[0];this.I=c[1];this.D=f[1];this.g=d;this.o=b.B;this.ha=e[0];this.aa=e[1];this.da=b.o;this.ka=b.s;this.h=b.u;this.ua=b.v;this.V=f[0]}else this.g=null}; -n.sa=function(b){if(b){var c=b.c;c?(c=c.a,this.i={fillStyle:zd(c?c:vi)}):this.i=null;var d=b.l;if(d){var c=d.b,e=d.c,f=d.a,g=d.g,h=d.f,d=d.h;this.B={lineCap:void 0!==e?e:"round",lineDash:f?f:wi,lineJoin:void 0!==g?g:"round",lineWidth:void 0!==h?h:1,miterLimit:void 0!==d?d:10,strokeStyle:wd(c?c:xi)}}else this.B=null;var c=b.a,e=b.b,f=b.f,g=b.g,h=b.h,d=b.i,k=b.j;b=b.B;this.G={font:void 0!==c?c:"10px sans-serif",textAlign:void 0!==k?k:"center",textBaseline:void 0!==b?b:"middle"};this.f=void 0!==d?d: -"";this.la=void 0!==e?this.u*e:0;this.va=void 0!==f?this.u*f:0;this.H=void 0!==g?g:0;this.j=this.u*(void 0!==h?h:1)}else this.f=""};function $i(b){Mg.call(this,b);this.I=yb()}M($i,Mg); -$i.prototype.g=function(b,c,d){aj(this,"precompose",d,b,void 0);var e=this.S();if(e){var f=c.extent,g=void 0!==f;if(g){var h=b.pixelRatio,k=b.size[0]*h,l=b.size[1]*h,m=b.viewState.rotation,p=ac(f),q=[f[2],f[3]],r=[f[2],f[1]],f=Wb(f);Lg(b.coordinateToPixelMatrix,p,p);Lg(b.coordinateToPixelMatrix,q,q);Lg(b.coordinateToPixelMatrix,r,r);Lg(b.coordinateToPixelMatrix,f,f);d.save();yi(d,-m,k/2,l/2);d.beginPath();d.moveTo(p[0]*h,p[1]*h);d.lineTo(q[0]*h,q[1]*h);d.lineTo(r[0]*h,r[1]*h);d.lineTo(f[0]*h,f[1]* -h);d.clip();yi(d,m,k/2,l/2)}h=this.D;k=d.globalAlpha;d.globalAlpha=c.opacity;d.drawImage(e,0,0,+e.width,+e.height,Math.round(h[12]),Math.round(h[13]),Math.round(e.width*h[0]),Math.round(e.height*h[5]));d.globalAlpha=k;g&&d.restore()}aj(this,"postcompose",d,b,void 0)}; -function aj(b,c,d,e,f){var g=b.a;if(mb(g,c)){var h=e.size[0]*e.pixelRatio,k=e.size[1]*e.pixelRatio,l=e.viewState.rotation;yi(d,-l,h/2,k/2);b=void 0!==f?f:bj(b,e,0);b=new Pi(d,e.pixelRatio,e.extent,b,e.viewState.rotation);T(g,new Gg(c,g,b,e,d,null));yi(d,l,h/2,k/2)}}function bj(b,c,d){var e=c.viewState,f=c.pixelRatio;return Jg(b.I,f*c.size[0]/2,f*c.size[1]/2,f/e.resolution,-f/e.resolution,-e.rotation,-e.center[0]+d,-e.center[1])};var cj=["Polygon","LineString","Image","Text"];function dj(b,c,d){this.aa=b;this.G=c;this.c=null;this.g=0;this.resolution=d;this.D=this.I=null;this.b=[];this.coordinates=[];this.T=yb();this.a=[];this.R=[];this.Z=yb();this.ha=yb()}M(dj,Fg); -function ej(b,c,d,e,f,g){var h=b.coordinates.length,k=b.Cb(),l=[c[d],c[d+1]],m=[NaN,NaN],p=!0,q,r,u;for(q=d+f;q<e;q+=f){m[0]=c[q];m[1]=c[q+1];u=k[1];var w=k[2],y=k[3],z=m[0],D=m[1],t=0;z<k[0]?t=t|16:z>w&&(t=t|4);D<u?t|=8:D>y&&(t|=2);0===t&&(t=1);u=t;u!==r?(p&&(b.coordinates[h++]=l[0],b.coordinates[h++]=l[1]),b.coordinates[h++]=m[0],b.coordinates[h++]=m[1],p=!1):1===u?(b.coordinates[h++]=m[0],b.coordinates[h++]=m[1],p=!1):p=!0;l[0]=m[0];l[1]=m[1];r=u}q===d+f&&(b.coordinates[h++]=l[0],b.coordinates[h++]= -l[1]);g&&(b.coordinates[h++]=c[d],b.coordinates[h++]=c[d+1]);return h}function fj(b,c){b.I=[0,c,0];b.b.push(b.I);b.D=[0,c,0];b.a.push(b.D)} -function gj(b,c,d,e,f,g,h,k,l){var m;Kg(e,b.T)?m=b.R:(m=zc(b.coordinates,0,b.coordinates.length,2,e,b.R),Bb(b.T,e));e=!Za(g);var p=0,q=h.length,r=0,u,w=b.Z;b=b.ha;for(var y,z,D,t;p<q;){var v=h[p],B,F,C,G;switch(v[0]){case 0:r=v[1];e&&g[I(r).toString()]||!r.M()?p=v[2]:void 0===l||$b(l,r.M().C())?++p:p=v[2];break;case 1:c.beginPath();++p;break;case 2:r=v[1];u=m[r];v=m[r+1];D=m[r+2]-u;r=m[r+3]-v;c.arc(u,v,Math.sqrt(D*D+r*r),0,2*Math.PI,!0);++p;break;case 3:c.closePath();++p;break;case 4:r=v[1];u=v[2]; -B=v[3];C=v[4]*d;var J=v[5]*d,A=v[6];F=v[7];var H=v[8],O=v[9];D=v[11];t=v[12];var Q=v[13],L=v[14];for(v[10]&&(D+=f);r<u;r+=2){v=m[r]-C;G=m[r+1]-J;Q&&(v=Math.round(v),G=Math.round(G));if(1!=t||0!==D){var K=v+C,fa=G+J;Jg(w,K,fa,t,t,D,-K,-fa);c.transform(w[0],w[1],w[4],w[5],w[12],w[13])}K=c.globalAlpha;1!=F&&(c.globalAlpha=K*F);var fa=L+H>B.width?B.width-H:L,ra=A+O>B.height?B.height-O:A;c.drawImage(B,H,O,fa,ra,v,G,fa*d,ra*d);1!=F&&(c.globalAlpha=K);if(1!=t||0!==D)Db(w,b),c.transform(b[0],b[1],b[4],b[5], -b[12],b[13])}++p;break;case 5:r=v[1];u=v[2];C=v[3];J=v[4]*d;A=v[5]*d;D=v[6];t=v[7]*d;B=v[8];for(F=v[9];r<u;r+=2){v=m[r]+J;G=m[r+1]+A;if(1!=t||0!==D)Jg(w,v,G,t,t,D,-v,-G),c.transform(w[0],w[1],w[4],w[5],w[12],w[13]);H=C.split("\n");O=H.length;1<O?(Q=Math.round(1.5*c.measureText("M").width),G-=(O-1)/2*Q):Q=0;for(L=0;L<O;L++)K=H[L],F&&c.strokeText(K,v,G),B&&c.fillText(K,v,G),G+=Q;if(1!=t||0!==D)Db(w,b),c.transform(b[0],b[1],b[4],b[5],b[12],b[13])}++p;break;case 6:if(void 0!==k&&(r=v[1],r=k(r)))return r; -++p;break;case 7:c.fill();++p;break;case 8:r=v[1];u=v[2];v=m[r];G=m[r+1];D=v+.5|0;t=G+.5|0;if(D!==y||t!==z)c.moveTo(v,G),y=D,z=t;for(r+=2;r<u;r+=2)if(v=m[r],G=m[r+1],D=v+.5|0,t=G+.5|0,D!==y||t!==z)c.lineTo(v,G),y=D,z=t;++p;break;case 9:c.fillStyle=v[1];++p;break;case 10:y=void 0!==v[7]?v[7]:!0;z=v[2];c.strokeStyle=v[1];c.lineWidth=y?z*d:z;c.lineCap=v[3];c.lineJoin=v[4];c.miterLimit=v[5];Ff&&c.setLineDash(v[6]);z=y=NaN;++p;break;case 11:c.font=v[1];c.textAlign=v[2];c.textBaseline=v[3];++p;break;case 12:c.stroke(); -++p;break;default:++p}}}function hj(b){var c=b.a;c.reverse();var d,e=c.length,f,g,h=-1;for(d=0;d<e;++d)if(f=c[d],g=f[0],6==g)h=d;else if(0==g){f[2]=d;f=b.a;for(g=d;h<g;){var k=f[h];f[h]=f[g];f[g]=k;++h;--g}h=-1}}function ij(b,c){b.I[2]=b.b.length;b.I=null;b.D[2]=b.a.length;b.D=null;var d=[6,c];b.b.push(d);b.a.push(d)}dj.prototype.ib=N;dj.prototype.Cb=function(){return this.G}; -function jj(b,c,d){dj.call(this,b,c,d);this.i=this.V=null;this.A=this.v=this.H=this.u=this.s=this.o=this.B=this.j=this.l=this.h=this.f=void 0}M(jj,dj);jj.prototype.Ra=function(b,c){if(this.i){fj(this,c);var d=b.a,e=this.coordinates.length,d=ej(this,d,0,d.length,b.b,!1);this.b.push([4,e,d,this.i,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);this.a.push([4,e,d,this.V,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);ij(this,c)}}; -jj.prototype.Qa=function(b,c){if(this.i){fj(this,c);var d=b.a,e=this.coordinates.length,d=ej(this,d,0,d.length,b.b,!1);this.b.push([4,e,d,this.i,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);this.a.push([4,e,d,this.V,this.f,this.h,this.l,this.j,this.B,this.o,this.s,this.u,this.H,this.v,this.A]);ij(this,c)}};jj.prototype.ib=function(){hj(this);this.h=this.f=void 0;this.i=this.V=null;this.A=this.v=this.u=this.s=this.o=this.B=this.j=this.H=this.l=void 0}; -jj.prototype.Aa=function(b){var c=b.Sa(),d=b.ya(),e=b.jb(1),f=b.S(1),g=b.fa();this.f=c[0];this.h=c[1];this.V=e;this.i=f;this.l=d[1];this.j=b.B;this.B=g[0];this.o=g[1];this.s=b.o;this.u=b.s;this.H=b.u;this.v=b.v;this.A=d[0]};function kj(b,c,d){dj.call(this,b,c,d);this.f={Pa:void 0,Ka:void 0,La:null,Ma:void 0,Na:void 0,Oa:void 0,Lb:0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}M(kj,dj); -function lj(b,c,d,e,f){var g=b.coordinates.length;c=ej(b,c,d,e,f,!1);g=[8,g,c];b.b.push(g);b.a.push(g);return e}n=kj.prototype;n.Cb=function(){this.c||(this.c=Lb(this.G),0<this.g&&Kb(this.c,this.resolution*(this.g+1)/2,this.c));return this.c}; -function mj(b){var c=b.f,d=c.strokeStyle,e=c.lineCap,f=c.lineDash,g=c.lineJoin,h=c.lineWidth,k=c.miterLimit;c.Pa==d&&c.Ka==e&&La(c.La,f)&&c.Ma==g&&c.Na==h&&c.Oa==k||(c.Lb!=b.coordinates.length&&(b.b.push([12]),c.Lb=b.coordinates.length),b.b.push([10,d,h,e,g,k,f],[1]),c.Pa=d,c.Ka=e,c.La=f,c.Ma=g,c.Na=h,c.Oa=k)} -n.ic=function(b,c){var d=this.f,e=d.lineWidth;void 0!==d.strokeStyle&&void 0!==e&&(mj(this),fj(this,c),this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash],[1]),d=b.a,lj(this,d,0,d.length,b.b),this.a.push([12]),ij(this,c))}; -n.jc=function(b,c){var d=this.f,e=d.lineWidth;if(void 0!==d.strokeStyle&&void 0!==e){mj(this);fj(this,c);this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash],[1]);var d=b.Ta(),e=b.a,f=b.b,g=0,h,k;h=0;for(k=d.length;h<k;++h)g=lj(this,e,g,d[h],f);this.a.push([12]);ij(this,c)}};n.ib=function(){this.f.Lb!=this.coordinates.length&&this.b.push([12]);hj(this);this.f=null}; -n.za=function(b,c){var d=c.b;this.f.strokeStyle=wd(d?d:xi);d=c.c;this.f.lineCap=void 0!==d?d:"round";d=c.a;this.f.lineDash=d?d:wi;d=c.g;this.f.lineJoin=void 0!==d?d:"round";d=c.f;this.f.lineWidth=void 0!==d?d:1;d=c.h;this.f.miterLimit=void 0!==d?d:10;this.f.lineWidth>this.g&&(this.g=this.f.lineWidth,this.c=null)}; -function nj(b,c,d){dj.call(this,b,c,d);this.f={gc:void 0,Pa:void 0,Ka:void 0,La:null,Ma:void 0,Na:void 0,Oa:void 0,fillStyle:void 0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}M(nj,dj); -function oj(b,c,d,e,f){var g=b.f,h=[1];b.b.push(h);b.a.push(h);var k,h=0;for(k=e.length;h<k;++h){var l=e[h],m=b.coordinates.length;d=ej(b,c,d,l,f,!0);d=[8,m,d];m=[3];b.b.push(d,m);b.a.push(d,m);d=l}c=[7];b.a.push(c);void 0!==g.fillStyle&&b.b.push(c);void 0!==g.strokeStyle&&(g=[12],b.b.push(g),b.a.push(g));return d}n=nj.prototype; -n.hc=function(b,c){var d=this.f,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e){pj(this);fj(this,c);this.a.push([9,wd(vi)]);void 0!==d.strokeStyle&&this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]);var f=b.a,e=this.coordinates.length;ej(this,f,0,f.length,b.b,!1);f=[1];e=[2,e];this.b.push(f,e);this.a.push(f,e);e=[7];this.a.push(e);void 0!==d.fillStyle&&this.b.push(e);void 0!==d.strokeStyle&&(d=[12],this.b.push(d),this.a.push(d));ij(this,c)}}; -n.lc=function(b,c){var d=this.f,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e)pj(this),fj(this,c),this.a.push([9,wd(vi)]),void 0!==d.strokeStyle&&this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]),d=b.Ta(),e=Uc(b),oj(this,e,0,d,b.b),ij(this,c)}; -n.kc=function(b,c){var d=this.f,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e){pj(this);fj(this,c);this.a.push([9,wd(vi)]);void 0!==d.strokeStyle&&this.a.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]);var d=b.c,e=Yi(b),f=b.b,g=0,h,k;h=0;for(k=d.length;h<k;++h)g=oj(this,e,g,d[h],f);ij(this,c)}};n.ib=function(){hj(this);this.f=null;var b=this.aa;if(0!==b){var c=this.coordinates,d,e;d=0;for(e=c.length;d<e;++d)c[d]=b*Math.round(c[d]/b)}}; -n.Cb=function(){this.c||(this.c=Lb(this.G),0<this.g&&Kb(this.c,this.resolution*(this.g+1)/2,this.c));return this.c}; -n.za=function(b,c){var d=this.f;if(b){var e=b.a;d.fillStyle=zd(e?e:vi)}else d.fillStyle=void 0;c?(e=c.b,d.strokeStyle=wd(e?e:xi),e=c.c,d.lineCap=void 0!==e?e:"round",e=c.a,d.lineDash=e?e.slice():wi,e=c.g,d.lineJoin=void 0!==e?e:"round",e=c.f,d.lineWidth=void 0!==e?e:1,e=c.h,d.miterLimit=void 0!==e?e:10,d.lineWidth>this.g&&(this.g=d.lineWidth,this.c=null)):(d.strokeStyle=void 0,d.lineCap=void 0,d.lineDash=null,d.lineJoin=void 0,d.lineWidth=void 0,d.miterLimit=void 0)}; -function pj(b){var c=b.f,d=c.fillStyle,e=c.strokeStyle,f=c.lineCap,g=c.lineDash,h=c.lineJoin,k=c.lineWidth,l=c.miterLimit;void 0!==d&&c.gc!=d&&(b.b.push([9,d]),c.gc=c.fillStyle);void 0===e||c.Pa==e&&c.Ka==f&&c.La==g&&c.Ma==h&&c.Na==k&&c.Oa==l||(b.b.push([10,e,k,f,h,l,g]),c.Pa=e,c.Ka=f,c.La=g,c.Ma=h,c.Na=k,c.Oa=l)}function qj(b,c,d){dj.call(this,b,c,d);this.v=this.H=this.u=null;this.i="";this.s=this.o=this.B=this.j=0;this.l=this.h=this.f=null}M(qj,dj); -function rj(b,c,d,e,f){if(""!==b.i&&b.l&&(b.f||b.h)){if(b.f){var g=b.f,h=b.u;if(!h||h.fillStyle!=g.fillStyle){var k=[9,g.fillStyle];b.b.push(k);b.a.push(k);h?h.fillStyle=g.fillStyle:b.u={fillStyle:g.fillStyle}}}b.h&&(g=b.h,h=b.H,h&&h.lineCap==g.lineCap&&h.lineDash==g.lineDash&&h.lineJoin==g.lineJoin&&h.lineWidth==g.lineWidth&&h.miterLimit==g.miterLimit&&h.strokeStyle==g.strokeStyle||(k=[10,g.strokeStyle,g.lineWidth,g.lineCap,g.lineJoin,g.miterLimit,g.lineDash,!1],b.b.push(k),b.a.push(k),h?(h.lineCap= -g.lineCap,h.lineDash=g.lineDash,h.lineJoin=g.lineJoin,h.lineWidth=g.lineWidth,h.miterLimit=g.miterLimit,h.strokeStyle=g.strokeStyle):b.H={lineCap:g.lineCap,lineDash:g.lineDash,lineJoin:g.lineJoin,lineWidth:g.lineWidth,miterLimit:g.miterLimit,strokeStyle:g.strokeStyle}));g=b.l;h=b.v;h&&h.font==g.font&&h.textAlign==g.textAlign&&h.textBaseline==g.textBaseline||(k=[11,g.font,g.textAlign,g.textBaseline],b.b.push(k),b.a.push(k),h?(h.font=g.font,h.textAlign=g.textAlign,h.textBaseline=g.textBaseline):b.v= -{font:g.font,textAlign:g.textAlign,textBaseline:g.textBaseline});fj(b,f);g=b.coordinates.length;c=ej(b,c,0,d,e,!1);c=[5,g,c,b.i,b.j,b.B,b.o,b.s,!!b.f,!!b.h];b.b.push(c);b.a.push(c);ij(b,f)}} -qj.prototype.sa=function(b){if(b){var c=b.c;c?(c=c.a,c=zd(c?c:vi),this.f?this.f.fillStyle=c:this.f={fillStyle:c}):this.f=null;var d=b.l;if(d){var c=d.b,e=d.c,f=d.a,g=d.g,h=d.f,d=d.h,e=void 0!==e?e:"round",f=f?f.slice():wi,g=void 0!==g?g:"round",h=void 0!==h?h:1,d=void 0!==d?d:10,c=wd(c?c:xi);if(this.h){var k=this.h;k.lineCap=e;k.lineDash=f;k.lineJoin=g;k.lineWidth=h;k.miterLimit=d;k.strokeStyle=c}else this.h={lineCap:e,lineDash:f,lineJoin:g,lineWidth:h,miterLimit:d,strokeStyle:c}}else this.h=null; -var l=b.a,c=b.b,e=b.f,f=b.g,h=b.h,d=b.i,g=b.j,k=b.B;b=void 0!==l?l:"10px sans-serif";g=void 0!==g?g:"center";k=void 0!==k?k:"middle";this.l?(l=this.l,l.font=b,l.textAlign=g,l.textBaseline=k):this.l={font:b,textAlign:g,textBaseline:k};this.i=void 0!==d?d:"";this.j=void 0!==c?c:0;this.B=void 0!==e?e:0;this.o=void 0!==f?f:0;this.s=void 0!==h?h:1}else this.i=""};function sj(b,c,d,e){this.o=b;this.h=c;this.B=d;this.l=e;this.b={};this.i=sf(1,1);this.j=yb()} -function tj(b){for(var c in b.b){var d=b.b[c],e;for(e in d)d[e].ib()}}sj.prototype.g=function(b,c,d,e,f){var g=this.j;Jg(g,.5,.5,1/c,-1/c,-d,-b[0],-b[1]);var h=this.i;h.clearRect(0,0,1,1);var k;void 0!==this.l&&(k=Ib(),Jb(k,b),Kb(k,c*this.l,k));return uj(this,h,g,d,e,function(b){if(0<h.getImageData(0,0,1,1).data[3]){if(b=f(b))return b;h.clearRect(0,0,1,1)}},k)}; -sj.prototype.a=function(b,c){var d=void 0!==b?b.toString():"0",e=this.b[d];void 0===e&&(e={},this.b[d]=e);d=e[c];void 0===d&&(d=new vj[c](this.o,this.h,this.B),e[c]=d);return d};sj.prototype.c=function(){return Za(this.b)}; -sj.prototype.f=function(b,c,d,e,f,g){var h=Object.keys(this.b).map(Number);h.sort(Ga);if(!1!==g){var k=this.h;g=k[0];var l=k[1],m=k[2],k=k[3];g=[g,l,g,k,m,k,m,l];zc(g,0,8,2,d,g);b.save();b.beginPath();b.moveTo(g[0],g[1]);b.lineTo(g[2],g[3]);b.lineTo(g[4],g[5]);b.lineTo(g[6],g[7]);b.closePath();b.clip()}var p,q;g=0;for(l=h.length;g<l;++g)for(p=this.b[h[g].toString()],m=0,k=cj.length;m<k;++m)q=p[cj[m]],void 0!==q&&gj(q,b,c,d,e,f,q.b,void 0);b.restore()}; -function uj(b,c,d,e,f,g,h){var k=Object.keys(b.b).map(Number);k.sort(function(b,c){return c-b});var l,m,p,q,r;l=0;for(m=k.length;l<m;++l)for(q=b.b[k[l].toString()],p=cj.length-1;0<=p;--p)if(r=q[cj[p]],void 0!==r&&(r=gj(r,c,1,d,e,f,r.a,g,h)))return r}var vj={Image:jj,LineString:kj,Polygon:nj,Text:qj};function wj(b,c){return I(b)-I(c)}function xj(b,c){var d=.5*b/c;return d*d}function yj(b,c,d,e,f,g){var h=!1,k,l;if(k=d.S())l=k.Ya(),2==l||3==l?k.Ub(f,g):(0==l&&k.load(),k.Mb(f,g),h=!0);if(f=(0,d.f)(c))e=f.Hb(e),(0,zj[e.U()])(b,e,d,c);return h} -var zj={Point:function(b,c,d,e){var f=d.S();if(f){if(2!=f.Ya())return;var g=b.a(d.a,"Image");g.Aa(f);g.Ra(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,c.a,2,2,e)},LineString:function(b,c,d,e){var f=d.c;if(f){var g=b.a(d.a,"LineString");g.za(null,f);g.ic(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,Wi(c),2,2,e)},Polygon:function(b,c,d,e){var f=d.g,g=d.c;if(f||g){var h=b.a(d.a,"Polygon");h.za(f,g);h.lc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,Vc(c),2,2,e)},MultiPoint:function(b,c,d,e){var f=d.S(); -if(f){if(2!=f.Ya())return;var g=b.a(d.a,"Image");g.Aa(f);g.Qa(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),d=c.a,rj(b,d,d.length,c.b,e)},MultiLineString:function(b,c,d,e){var f=d.c;if(f){var g=b.a(d.a,"LineString");g.za(null,f);g.jc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),c=Xi(c),rj(b,c,c.length,2,e)},MultiPolygon:function(b,c,d,e){var f=d.g,g=d.c;if(g||f){var h=b.a(d.a,"Polygon");h.za(f,g);h.kc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),c=Zi(c),rj(b,c,c.length,2,e)},GeometryCollection:function(b,c,d,e){c= -c.a;var f,g;f=0;for(g=c.length;f<g;++f)(0,zj[c[f].U()])(b,c[f],d,e)},Circle:function(b,c,d,e){var f=d.g,g=d.c;if(f||g){var h=b.a(d.a,"Polygon");h.za(f,g);h.hc(c,e)}if(f=d.b)b=b.a(d.a,"Text"),b.sa(f),rj(b,c.a.slice(0,c.b),2,2,e)}};var Aj=!((W("Chrome")||W("CriOS"))&&!W("Opera")&&!W("OPR")&&!W("Edge"))||W("iPhone")&&!W("iPod")&&!W("iPad")||W("iPad")||W("iPod");function Bj(b,c,d,e){b=d-b;c=e-c;var f=Math.sqrt(b*b+c*c);return[Math.round(d+b/f),Math.round(e+c/f)]} -function Cj(b,c,d,e,f,g,h,k,l,m,p){var q=sf(Math.round(d*b),Math.round(d*c));if(0===l.length)return q.canvas;q.scale(d,d);var r=Ib();l.forEach(function(b){Rb(r,b.extent)});var u=sf(Math.round(d*Ub(r)/e),Math.round(d*Vb(r)/e)),w=d/e;l.forEach(function(b){u.drawImage(b.image,m,m,b.image.width-2*m,b.image.height-2*m,(b.extent[0]-r[0])*w,-(b.extent[3]-r[3])*w,Ub(b.extent)*w,Vb(b.extent)*w)});var y=ac(h);k.c.forEach(function(b){var c=b.source,f=b.target,h=c[1][0],k=c[1][1],l=c[2][0],m=c[2][1];b=(f[0][0]- -y[0])/g;var w=-(f[0][1]-y[1])/g,p=(f[1][0]-y[0])/g,A=-(f[1][1]-y[1])/g,H=(f[2][0]-y[0])/g,O=-(f[2][1]-y[1])/g,f=c[0][0],c=c[0][1],h=h-f,k=k-c,l=l-f,m=m-c;a:{h=[[h,k,0,0,p-b],[l,m,0,0,H-b],[0,0,h,k,A-w],[0,0,l,m,O-w]];k=h.length;for(l=0;l<k;l++){for(var m=l,Q=Math.abs(h[l][l]),L=l+1;L<k;L++){var K=Math.abs(h[L][l]);K>Q&&(Q=K,m=L)}if(0===Q){h=null;break a}Q=h[m];h[m]=h[l];h[l]=Q;for(m=l+1;m<k;m++)for(Q=-h[m][l]/h[l][l],L=l;L<k+1;L++)h[m][L]=l==L?0:h[m][L]+Q*h[l][L]}l=Array(k);for(m=k-1;0<=m;m--)for(l[m]= -h[m][k]/h[m][m],Q=m-1;0<=Q;Q--)h[Q][k]-=h[Q][m]*l[m];h=l}h&&(q.save(),q.beginPath(),Aj?(l=(b+p+H)/3,m=(w+A+O)/3,k=Bj(l,m,b,w),p=Bj(l,m,p,A),H=Bj(l,m,H,O),q.moveTo(k[0],k[1]),q.lineTo(p[0],p[1]),q.lineTo(H[0],H[1])):(q.moveTo(b,w),q.lineTo(p,A),q.lineTo(H,O)),q.closePath(),q.clip(),q.transform(h[0],h[2],h[1],h[3],b,w),q.translate(r[0]-f,r[3]-c),q.scale(e/d,-e/d),q.drawImage(u.canvas,0,0),q.restore())});p&&(q.save(),q.strokeStyle="black",q.lineWidth=1,k.c.forEach(function(b){var c=b.target;b=(c[0][0]- -y[0])/g;var d=-(c[0][1]-y[1])/g,e=(c[1][0]-y[0])/g,f=-(c[1][1]-y[1])/g,h=(c[2][0]-y[0])/g,c=-(c[2][1]-y[1])/g;q.beginPath();q.moveTo(b,d);q.lineTo(e,f);q.lineTo(h,c);q.closePath();q.stroke()}),q.restore());return q.canvas};function Dj(b,c,d,e,f){this.f=b;this.g=c;var g={},h=wc(this.g,this.f);this.b=function(b){var c=b[0]+"/"+b[1];g[c]||(g[c]=h(b));return g[c]};this.h=e;this.B=f*f;this.c=[];this.i=!1;this.j=this.f.a&&!!e&&!!this.f.C()&&Ub(e)==Ub(this.f.C());this.a=this.f.C()?Ub(this.f.C()):null;this.l=this.g.C()?Ub(this.g.C()):null;b=ac(d);c=[d[2],d[3]];e=[d[2],d[1]];d=Wb(d);f=this.b(b);var k=this.b(c),l=this.b(e),m=this.b(d);Ej(this,b,c,e,d,f,k,l,m,10);if(this.i){var p=Infinity;this.c.forEach(function(b){p=Math.min(p, -b.source[0][0],b.source[1][0],b.source[2][0])});this.c.forEach(function(b){if(Math.max(b.source[0][0],b.source[1][0],b.source[2][0])-p>this.a/2){var c=[[b.source[0][0],b.source[0][1]],[b.source[1][0],b.source[1][1]],[b.source[2][0],b.source[2][1]]];c[0][0]-p>this.a/2&&(c[0][0]-=this.a);c[1][0]-p>this.a/2&&(c[1][0]-=this.a);c[2][0]-p>this.a/2&&(c[2][0]-=this.a);Math.max(c[0][0],c[1][0],c[2][0])-Math.min(c[0][0],c[1][0],c[2][0])<this.a/2&&(b.source=c)}},this)}g={}} -function Ej(b,c,d,e,f,g,h,k,l,m){var p=Hb([g,h,k,l]),q=b.a?Ub(p)/b.a:null,r=b.f.a&&.5<q&&1>q,u=!1;if(0<m){if(b.g.f&&b.l)var w=Hb([c,d,e,f]),u=u|.25<Ub(w)/b.l;!r&&b.f.f&&q&&(u|=.25<q)}if(u||!b.h||$b(p,b.h)){if(!(u||isFinite(g[0])&&isFinite(g[1])&&isFinite(h[0])&&isFinite(h[1])&&isFinite(k[0])&&isFinite(k[1])&&isFinite(l[0])&&isFinite(l[1])))if(0<m)u=!0;else return;if(0<m&&(u||(q=b.b([(c[0]+e[0])/2,(c[1]+e[1])/2]),p=r?(Da(g[0],b.a)+Da(k[0],b.a))/2-Da(q[0],b.a):(g[0]+k[0])/2-q[0],q=(g[1]+k[1])/2-q[1], -u=p*p+q*q>b.B),u)){Math.abs(c[0]-e[0])<=Math.abs(c[1]-e[1])?(r=[(d[0]+e[0])/2,(d[1]+e[1])/2],p=b.b(r),q=[(f[0]+c[0])/2,(f[1]+c[1])/2],u=b.b(q),Ej(b,c,d,r,q,g,h,p,u,m-1),Ej(b,q,r,e,f,u,p,k,l,m-1)):(r=[(c[0]+d[0])/2,(c[1]+d[1])/2],p=b.b(r),q=[(e[0]+f[0])/2,(e[1]+f[1])/2],u=b.b(q),Ej(b,c,r,q,f,g,p,u,l,m-1),Ej(b,r,d,e,q,p,h,k,u,m-1));return}if(r){if(!b.j)return;b.i=!0}b.c.push({source:[g,k,l],target:[c,e,f]});b.c.push({source:[g,h,k],target:[c,d,e]})}} -function Fj(b){var c=Ib();b.c.forEach(function(b){b=b.source;Jb(c,b[0]);Jb(c,b[1]);Jb(c,b[2])});return c};function Gj(b){U.call(this);this.g=void 0;this.a="geometry";this.h=null;this.c=void 0;this.b=null;R(this,qb(this.a),this.fb,this);void 0!==b&&(b instanceof yc||!b?Hj(this,b):this.l(b))}M(Gj,U);n=Gj.prototype;n.clone=function(){var b=new Gj(this.ua());Ij(b,this.a);var c=this.M();c&&Hj(b,c.clone());if(c=this.h)b.h=c,b.c=c?Jj(c):void 0,b.w();return b};n.M=function(){return this.get(this.a)};n.Da=function(){return this.g};n.nd=function(){this.w()}; -n.fb=function(){this.b&&(P(this.b),this.b=null);var b=this.M();b&&(this.b=R(b,"change",this.nd,this));this.w()};function Hj(b,c){b.set(b.a,c)}function Ij(b,c){fb(b,qb(b.a),b.fb,b);b.a=c;R(b,qb(b.a),b.fb,b);b.fb()}function Jj(b){if(!ga(b)){var c;c=Array.isArray(b)?b:[b];b=function(){return c}}return b};function Kj(b,c,d){return function(e,f,g){var h=new XMLHttpRequest;h.open("GET",ga(b)?b(e,f,g):b,!0);"arraybuffer"==c.U()&&(h.responseType="arraybuffer");h.onload=function(){if(200<=h.status&&300>h.status){var b=c.U(),e;"json"==b||"text"==b?e=h.responseText:"xml"==b?(e=h.responseXML,e||(b=h.responseText,e=(new DOMParser).parseFromString(b,"application/xml"))):"arraybuffer"==b&&(e=h.response);e&&d.call(this,c.b(e,{featureProjection:g}),c.f(Lj(e)))}}.bind(this);h.send()}} -function Mj(b,c){return Kj(b,c,function(b){this.vb(b)})};function Nj(){return[[-Infinity,-Infinity,Infinity,Infinity]]};var Oj; -(function(){var b={mc:{}};(function(){function c(b,d){if(!(this instanceof c))return new c(b,d);this.tb=Math.max(4,b||9);this.Zb=Math.max(2,Math.ceil(.4*this.tb));d&&this.Xc(d);this.clear()}function d(b,c){b.bbox=e(b,0,b.children.length,c)}function e(b,c,d,e){for(var g=[Infinity,Infinity,-Infinity,-Infinity],h;c<d;c++)h=b.children[c],f(g,b.$?e(h):h.bbox);return g}function f(b,c){b[0]=Math.min(b[0],c[0]);b[1]=Math.min(b[1],c[1]);b[2]=Math.max(b[2],c[2]);b[3]=Math.max(b[3],c[3])}function g(b,c){return b.bbox[0]- -c.bbox[0]}function h(b,c){return b.bbox[1]-c.bbox[1]}function k(b){return(b[2]-b[0])*(b[3]-b[1])}function l(b){return b[2]-b[0]+(b[3]-b[1])}function m(b,c){return b[0]<=c[0]&&b[1]<=c[1]&&c[2]<=b[2]&&c[3]<=b[3]}function p(b,c){return c[0]<=b[2]&&c[1]<=b[3]&&c[2]>=b[0]&&c[3]>=b[1]}function q(b,c,d,e,f){for(var g=[c,d],h;g.length;)d=g.pop(),c=g.pop(),d-c<=e||(h=c+Math.ceil((d-c)/e/2)*e,r(b,c,d,h,f),g.push(c,h,h,d))}function r(b,c,d,e,f){for(var g,h,k,l,m;d>c;){600<d-c&&(g=d-c+1,h=e-c+1,k=Math.log(g), -l=.5*Math.exp(2*k/3),m=.5*Math.sqrt(k*l*(g-l)/g)*(0>h-g/2?-1:1),k=Math.max(c,Math.floor(e-h*l/g+m)),h=Math.min(d,Math.floor(e+(g-h)*l/g+m)),r(b,k,h,e,f));g=b[e];h=c;l=d;u(b,c,e);for(0<f(b[d],g)&&u(b,c,d);h<l;){u(b,h,l);h++;for(l--;0>f(b[h],g);)h++;for(;0<f(b[l],g);)l--}0===f(b[c],g)?u(b,c,l):(l++,u(b,l,d));l<=e&&(c=l+1);e<=l&&(d=l-1)}}function u(b,c,d){var e=b[c];b[c]=b[d];b[d]=e}c.prototype={all:function(){return this.Vb(this.data,[])},search:function(b){var c=this.data,d=[],e=this.ca;if(!p(b,c.bbox))return d; -for(var f=[],g,h,k,l;c;){g=0;for(h=c.children.length;g<h;g++)k=c.children[g],l=c.$?e(k):k.bbox,p(b,l)&&(c.$?d.push(k):m(b,l)?this.Vb(k,d):f.push(k));c=f.pop()}return d},load:function(b){if(!b||!b.length)return this;if(b.length<this.Zb){for(var c=0,d=b.length;c<d;c++)this.xa(b[c]);return this}b=this.Xb(b.slice(),0,b.length-1,0);this.data.children.length?this.data.height===b.height?this.$b(this.data,b):(this.data.height<b.height&&(c=this.data,this.data=b,b=c),this.Yb(b,this.data.height-b.height-1,!0)): -this.data=b;return this},xa:function(b){b&&this.Yb(b,this.data.height-1);return this},clear:function(){this.data={children:[],height:1,bbox:[Infinity,Infinity,-Infinity,-Infinity],$:!0};return this},remove:function(b){if(!b)return this;for(var c=this.data,d=this.ca(b),e=[],f=[],g,h,k,l;c||e.length;){c||(c=e.pop(),h=e[e.length-1],g=f.pop(),l=!0);if(c.$&&(k=c.children.indexOf(b),-1!==k)){c.children.splice(k,1);e.push(c);this.Wc(e);break}l||c.$||!m(c.bbox,d)?h?(g++,c=h.children[g],l=!1):c=null:(e.push(c), -f.push(g),g=0,h=c,c=c.children[0])}return this},ca:function(b){return b},zb:function(b,c){return b[0]-c[0]},Ab:function(b,c){return b[1]-c[1]},toJSON:function(){return this.data},Vb:function(b,c){for(var d=[];b;)b.$?c.push.apply(c,b.children):d.push.apply(d,b.children),b=d.pop();return c},Xb:function(b,c,e,f){var g=e-c+1,h=this.tb,k;if(g<=h)return k={children:b.slice(c,e+1),height:1,bbox:null,$:!0},d(k,this.ca),k;f||(f=Math.ceil(Math.log(g)/Math.log(h)),h=Math.ceil(g/Math.pow(h,f-1)));k={children:[], -height:f,bbox:null,$:!1};var g=Math.ceil(g/h),h=g*Math.ceil(Math.sqrt(h)),l,m,p;for(q(b,c,e,h,this.zb);c<=e;c+=h)for(m=Math.min(c+h-1,e),q(b,c,m,g,this.Ab),l=c;l<=m;l+=g)p=Math.min(l+g-1,m),k.children.push(this.Xb(b,l,p,f-1));d(k,this.ca);return k},Vc:function(b,c,d,e){for(var f,g,h,l,m,p,q,r;;){e.push(c);if(c.$||e.length-1===d)break;q=r=Infinity;f=0;for(g=c.children.length;f<g;f++)h=c.children[f],m=k(h.bbox),p=h.bbox,p=(Math.max(p[2],b[2])-Math.min(p[0],b[0]))*(Math.max(p[3],b[3])-Math.min(p[1], -b[1]))-m,p<r?(r=p,q=m<q?m:q,l=h):p===r&&m<q&&(q=m,l=h);c=l}return c},Yb:function(b,c,d){var e=this.ca;d=d?b.bbox:e(b);var e=[],g=this.Vc(d,this.data,c,e);g.children.push(b);for(f(g.bbox,d);0<=c;)if(e[c].children.length>this.tb)this.Yc(e,c),c--;else break;this.Sc(d,e,c)},Yc:function(b,c){var e=b[c],f=e.children.length,g=this.Zb;this.Tc(e,g,f);f=this.Uc(e,g,f);f={children:e.children.splice(f,e.children.length-f),height:e.height,bbox:null,$:!1};e.$&&(f.$=!0);d(e,this.ca);d(f,this.ca);c?b[c-1].children.push(f): -this.$b(e,f)},$b:function(b,c){this.data={children:[b,c],height:b.height+1,bbox:null,$:!1};d(this.data,this.ca)},Uc:function(b,c,d){var f,g,h,l,m,p,q;m=p=Infinity;for(f=c;f<=d-c;f++)g=e(b,0,f,this.ca),h=e(b,f,d,this.ca),l=Math.max(0,Math.min(g[2],h[2])-Math.max(g[0],h[0]))*Math.max(0,Math.min(g[3],h[3])-Math.max(g[1],h[1])),g=k(g)+k(h),l<m?(m=l,q=f,p=g<p?g:p):l===m&&g<p&&(p=g,q=f);return q},Tc:function(b,c,d){var e=b.$?this.zb:g,f=b.$?this.Ab:h,k=this.Wb(b,c,d,e);c=this.Wb(b,c,d,f);k<c&&b.children.sort(e)}, -Wb:function(b,c,d,g){b.children.sort(g);g=this.ca;var h=e(b,0,c,g),k=e(b,d-c,d,g),m=l(h)+l(k),p,q;for(p=c;p<d-c;p++)q=b.children[p],f(h,b.$?g(q):q.bbox),m+=l(h);for(p=d-c-1;p>=c;p--)q=b.children[p],f(k,b.$?g(q):q.bbox),m+=l(k);return m},Sc:function(b,c,d){for(;0<=d;d--)f(c[d].bbox,b)},Wc:function(b){for(var c=b.length-1,e;0<=c;c--)0===b[c].children.length?0<c?(e=b[c-1].children,e.splice(e.indexOf(b[c]),1)):this.clear():d(b[c],this.ca)},Xc:function(b){var c=["return a"," - b",";"];this.zb=new Function("a", -"b",c.join(b[0]));this.Ab=new Function("a","b",c.join(b[1]));this.ca=new Function("a","return [a"+b.join(", a")+"];")}};"undefined"!==typeof b?b.mc=c:"undefined"!==typeof self?self.a=c:window.a=c})();Oj=b.mc})();function Pj(b){this.a=Oj(b);this.b={}}n=Pj.prototype;n.xa=function(b,c){var d=[b[0],b[1],b[2],b[3],c];this.a.xa(d);this.b[I(c)]=d};n.load=function(b,c){for(var d=Array(c.length),e=0,f=c.length;e<f;e++){var g=b[e],h=c[e],g=[g[0],g[1],g[2],g[3],h];d[e]=g;this.b[I(h)]=g}this.a.load(d)};n.remove=function(b){b=I(b);var c=this.b[b];delete this.b[b];return null!==this.a.remove(c)};function Qj(b){return b.a.all().map(function(b){return b[4]})} -function Rj(b,c){return b.a.search(c).map(function(b){return b[4]})}function Sj(b,c,d,e){return Tj(Rj(b,c),d,e)}function Tj(b,c,d){for(var e,f=0,g=b.length;f<g&&!(e=c.call(d,b[f]));f++);return e}n.clear=function(){this.a.clear();this.b={}};n.C=function(){return this.a.data.bbox};function Uj(b){b=b||{};Ee.call(this,{attributions:b.attributions,logo:b.logo,projection:void 0,state:"ready",wrapX:void 0!==b.wrapX?b.wrapX:!0});this.o=N;this.D=b.format;this.u=b.url;void 0!==b.loader?this.o=b.loader:void 0!==this.u&&(this.o=Mj(this.u,this.D));this.G=void 0!==b.strategy?b.strategy:Nj;var c=void 0!==b.useSpatialIndex?b.useSpatialIndex:!0;this.P=c?new Pj:null;this.s=new Pj;this.ba={};this.b={};this.g={};this.h={};this.a=null;var d,e;b.features instanceof md?(d=b.features,e=d.a):Array.isArray(b.features)&& -(e=b.features);c||void 0!==d||(d=new md(e));void 0!==e&&Vj(this,e);void 0!==d&&Wj(this,d)}M(Uj,Ee);n=Uj.prototype;n.ub=function(b){var c=I(b).toString();if(Xj(this,c,b)){Yj(this,c,b);var d=b.M();d?(c=d.C(),this.P&&this.P.xa(c,b)):this.ba[c]=b;T(this,new Zj("addfeature",b))}this.w()};function Yj(b,c,d){b.h[c]=[R(d,"change",b.oc,b),R(d,"propertychange",b.oc,b)]}function Xj(b,c,d){var e=!0,f=d.Da();void 0!==f?f.toString()in b.b?e=!1:b.b[f.toString()]=d:b.g[c]=d;return e}n.vb=function(b){Vj(this,b);this.w()}; -function Vj(b,c){var d,e,f,g,h=[],k=[],l=[];e=0;for(f=c.length;e<f;e++)g=c[e],d=I(g).toString(),Xj(b,d,g)&&k.push(g);e=0;for(f=k.length;e<f;e++){g=k[e];d=I(g).toString();Yj(b,d,g);var m=g.M();m?(d=m.C(),h.push(d),l.push(g)):b.ba[d]=g}b.P&&b.P.load(h,l);e=0;for(f=k.length;e<f;e++)T(b,new Zj("addfeature",k[e]))} -function Wj(b,c){var d=!1;R(b,"addfeature",function(b){d||(d=!0,c.push(b.feature),d=!1)});R(b,"removefeature",function(b){d||(d=!0,c.remove(b.feature),d=!1)});R(c,"add",function(b){d||(b=b.element,d=!0,this.ub(b),d=!1)},b);R(c,"remove",function(b){if(!d){b=b.element;d=!0;var c=I(b).toString();c in this.ba?delete this.ba[c]:this.P&&this.P.remove(b);this.Rb(b);this.w();d=!1}},b);b.a=c} -n.clear=function(b){if(b){for(var c in this.h)this.h[c].forEach(P);this.a||(this.h={},this.b={},this.g={})}else if(this.P){b=this.Rb;Tj(Qj(this.P),b,this);for(var d in this.ba)this.Rb(this.ba[d])}this.a&&this.a.clear();this.P&&this.P.clear();this.s.clear();this.ba={};T(this,new Zj("clear"));this.w()};n.gd=function(b,c){if(this.P)return Tj(Qj(this.P),b,c);if(this.a)return od(this.a,b,c)};function ak(b,c,d,e){b.P?Sj(b.P,c,d,e):b.a&&od(b.a,d,e)} -n.ee=function(){var b;this.a?b=this.a.a:this.P&&(b=Qj(this.P),Za(this.ba)||Ja(b,Xa(this.ba)));return b};n.C=function(){return this.P.C()}; -n.oc=function(b){b=b.target;var c=I(b).toString(),d=b.M();if(d)if(d=d.C(),c in this.ba)delete this.ba[c],this.P&&this.P.xa(d,b);else{if(this.P){var e=this.P,f=I(b);Qb(e.b[f].slice(0,4),d)||(e.remove(b),e.xa(d,b))}}else c in this.ba||(this.P&&this.P.remove(b),this.ba[c]=b);d=b.Da();void 0!==d?(d=d.toString(),c in this.g?(delete this.g[c],this.b[d]=b):this.b[d]!==b&&(bk(this,b),this.b[d]=b)):c in this.g||(bk(this,b),this.g[c]=b);this.w();T(this,new Zj("changefeature",b))}; -function ck(b,c,d,e){var f=b.s;c=b.G(c,d);var g,h;g=0;for(h=c.length;g<h;++g){var k=c[g];Sj(f,k,function(b){return Mb(b.extent,k)})||(b.o.call(b,k,d,e),f.xa(k,{extent:k.slice()}))}}n.Rb=function(b){var c=I(b).toString();this.h[c].forEach(P);delete this.h[c];var d=b.Da();void 0!==d?delete this.b[d.toString()]:delete this.g[c];T(this,new Zj("removefeature",b))};function bk(b,c){for(var d in b.b)if(b.b[d]===c){delete b.b[d];break}}function Zj(b,c){S.call(this,b);this.feature=c}M(Zj,S);function dk(b){$i.call(this,b);this.c=sf();this.b=null;this.j=Ib();this.h=yb()}M(dk,$i); -dk.prototype.g=function(b,c,d){var e=b.pixelRatio,f=b.viewState,g=f.center,h=f.projection,k=f.rotation,l=b.size,m=Math.round(e*l[0]/2),p=Math.round(e*l[1]/2),q=e/f.resolution,r=this.a,u=r.W(),w=u.bb(h),f=bj(this,b,0);aj(this,"precompose",d,b,f);var l=d,r=mb(r,"render"),y,z,D,t;if(k||r){l=this.c;y=l.canvas;D=u.eb(e)/e;var v=d.canvas.width*D;z=d.canvas.height*D;t=Math.round(Math.sqrt(v*v+z*z));y.width!=t?y.width=y.height=t:l.clearRect(0,0,t,t);y=(t-v)/2/D;z=(t-z)/2/D;q*=D;m=Math.round(D*(m+y));p=Math.round(D* -(p+z))}v=l.globalAlpha;l.globalAlpha=c.opacity;var B=u.ia(h),F=this.b,C;c=u.Fb(h)&&1==c.opacity;c||(F.reverse(),C=[]);for(var G=0,J=F.length;G<J;++G){var A=F[G],H=A.L,O=Ke(B,H,this.j),Q=H[0],L=Wb(Ke(B,Se(B,g,Q))),H=Math.round(Ub(O)*q),K=Math.round(Vb(O)*q),fa=Math.round((O[0]-L[0])*q/H)*H+m+Math.round((L[0]-g[0])*q),O=Math.round((L[1]-O[3])*q/K)*K+p+Math.round((g[1]-L[1])*q);if(!c){L=[fa,O,fa+H,O+K];l.save();for(var ra=0,$l=C.length;ra<$l;++ra){var Ya=C[ra];$b(L,Ya)&&(l.beginPath(),l.moveTo(L[0], -L[1]),l.lineTo(L[0],L[3]),l.lineTo(L[2],L[3]),l.lineTo(L[2],L[1]),l.moveTo(Ya[0],Ya[1]),l.lineTo(Ya[2],Ya[1]),l.lineTo(Ya[2],Ya[3]),l.lineTo(Ya[0],Ya[3]),l.closePath(),l.clip())}C.push(L)}Q=Ye(u,Q,e,h);l.drawImage(A.S(),w,w,Q[0],Q[1],fa,O,H,K);c||l.restore()}r&&(e=y-m/D+m,h=z-p/D+p,g=Jg(this.h,t/2-e,t/2-h,q,-q,-k,-g[0]+e/q,-g[1]-h/q),aj(this,"render",l,b,g));(k||r)&&d.drawImage(l.canvas,-Math.round(y),-Math.round(z),t/D,t/D);l.globalAlpha=v;aj(this,"postcompose",d,b,f)}; -dk.prototype.i=function(b,c){function d(b){b=b.N();return 2==b||4==b||3==b&&!u}var e=b.pixelRatio,f=b.viewState,g=f.projection,h=this.a,k=h.W(),l=k.ia(g),m=Re(l,f.resolution),p=l.J(m),q=f.center;p==f.resolution?(q=Sg(q,p,b.size),f=Yb(q,p,f.rotation,b.size)):f=b.extent;void 0!==c.extent&&(f=Zb(f,c.extent));if(f[2]<f[0]||f[3]<f[1])return!1;p=Ne(l,f,p);q={};q[m]={};var r=this.l(k,g,q),u=ui(h),w=Ib(),y=new gd(0,0,0,0),z,D,t,v;for(t=p.a;t<=p.b;++t)for(v=p.f;v<=p.c;++v)z=Ug(k,m,t,v,e,g),!d(z)&&z.a&&(z= -z.a),d(z)?q[m][z.L.toString()]=z:(D=Je(l,z.L,r,y,w),D||(z=Me(l,z.L,y,w))&&r(m+1,z));r=Object.keys(q).map(Number);r.sort(Ga);var w=[],B,y=0;for(t=r.length;y<t;++y)for(B in z=r[y],v=q[z],v)z=v[B],2==z.N()&&w.push(z);this.b=w;Rg(b.usedTiles,k,m,p);Tg(b,k,l,e,g,f,m,h.get("preload"));Og(b,k);Qg(b,k);return!0};function ek(b){$i.call(this,b);this.b=!1;this.v=-1;this.u=NaN;this.j=Ib();this.c=this.o=null;this.h=sf()}M(ek,$i); -ek.prototype.g=function(b,c,d){var e=b.extent,f=b.pixelRatio,g=c.Wa?b.skippedFeatureUids:{},h=b.viewState,k=h.projection,h=h.rotation,l=k.C(),m=this.a.W(),p=bj(this,b,0);aj(this,"precompose",d,b,p);var q=this.c;if(q&&!q.c()){var r;mb(this.a,"render")?(this.h.canvas.width=d.canvas.width,this.h.canvas.height=d.canvas.height,r=this.h):r=d;var u=r.globalAlpha;r.globalAlpha=c.opacity;c=b.size[0]*f;var w=b.size[1]*f;yi(r,-h,c/2,w/2);q.f(r,f,p,h,g);if(m.j&&k.a&&!Mb(l,e)){for(var k=e[0],m=Ub(l),y=0;k<l[0];)--y, -p=m*y,p=bj(this,b,p),q.f(r,f,p,h,g),k+=m;y=0;for(k=e[2];k>l[2];)++y,p=m*y,p=bj(this,b,p),q.f(r,f,p,h,g),k-=m;p=bj(this,b,0)}yi(r,h,c/2,w/2);r!=d&&(aj(this,"render",r,b,p),d.drawImage(r.canvas,0,0));r.globalAlpha=u}aj(this,"postcompose",d,b,p)};ek.prototype.Xa=function(b,c,d,e){if(this.c){var f=this.a,g={};return this.c.g(b,c.viewState.resolution,c.viewState.rotation,{},function(b){var c=I(b).toString();if(!(c in g))return g[c]=!0,d.call(e,b,f)})}};ek.prototype.A=function(){Ng(this)}; -ek.prototype.i=function(b){function c(b){var c,e=b.c;e?c=e.call(b,m):(e=d.g)&&(c=e(b,m));if(c){if(c){e=!1;if(Array.isArray(c))for(var f=0,g=c.length;f<g;++f)e=yj(r,b,c[f],xj(m,p),this.A,this)||e;else e=yj(r,b,c,xj(m,p),this.A,this)||e;b=e}else b=!1;this.b=this.b||b}}var d=this.a,e=d.W();Pg(b.attributions,e.i);Qg(b,e);var f=b.viewHints[0],g=b.viewHints[1],h=d.i,k=d.j;if(!this.b&&!h&&f||!k&&g)return!0;var l=b.extent,k=b.viewState,f=k.projection,m=k.resolution,p=b.pixelRatio,g=d.f,q=d.a,h=d.get("renderOrder"); -void 0===h&&(h=wj);l=Kb(l,q*m);q=k.projection.C();e.j&&k.projection.a&&!Mb(q,b.extent)&&(b=Math.max(Ub(l)/2,Ub(q)),l[0]=q[0]-b,l[2]=q[2]+b);if(!this.b&&this.u==m&&this.v==g&&this.o==h&&Mb(this.j,l))return!0;this.c=null;this.b=!1;var r=new sj(.5*m/p,l,m,d.a);ck(e,l,m,f);if(h){var u=[];ak(e,l,function(b){u.push(b)},this);u.sort(h);u.forEach(c,this)}else ak(e,l,c,this);tj(r);this.u=m;this.v=g;this.o=h;this.j=l;this.c=r;return!0};function fk(b,c){var d=/\{z\}/g,e=/\{x\}/g,f=/\{y\}/g,g=/\{-y\}/g;return function(h){if(h)return b.replace(d,h[0].toString()).replace(e,h[1].toString()).replace(f,function(){return(-h[2]-1).toString()}).replace(g,function(){var b=c.a?c.a[h[0]]:null;return(b.c-b.f+1+h[2]).toString()})}}function gk(b,c){for(var d=b.length,e=Array(d),f=0;f<d;++f)e[f]=fk(b[f],c);return hk(e)}function hk(b){return 1===b.length?b[0]:function(c,d,e){if(c)return b[Da((c[1]<<c[0])+c[2],b.length)](c,d,e)}}function ik(){};function jk(b){We.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,extent:b.extent,logo:b.logo,opaque:b.opaque,projection:b.projection,state:b.state,tileGrid:b.tileGrid,tilePixelRatio:b.tilePixelRatio,wrapX:b.wrapX});this.tileLoadFunction=b.tileLoadFunction;this.tileUrlFunction=this.g?this.g.bind(this):ik;this.urls=null;if(b.urls){var c=b.urls;this.urls=c;kk(this,this.g?this.g.bind(this):gk(c,this.tileGrid))}else b.url&&this.s(b.url);b.tileUrlFunction&&kk(this,b.tileUrlFunction)} -M(jk,We);jk.prototype.D=function(b){b=b.target;switch(b.N()){case 1:T(this,new $e("tileloadstart",b));break;case 2:T(this,new $e("tileloadend",b));break;case 3:T(this,new $e("tileloaderror",b))}};function kk(b,c){b.a.clear();b.tileUrlFunction=c;b.w()} -jk.prototype.s=function(b){var c=[],d=/\{(\d)-(\d)\}/.exec(b)||/\{([a-z])-([a-z])\}/.exec(b);if(d){var e=d[2].charCodeAt(0),f;for(f=d[1].charCodeAt(0);f<=e;++f)c.push(b.replace(d[0],String.fromCharCode(f)))}else c.push(b);b=this.urls=c;kk(this,this.g?this.g.bind(this):gk(b,this.tileGrid))};jk.prototype.Qc=function(b,c,d){b=this.cb(b,c,d);xe(this.a,b)&&this.a.get(b)};function lk(b,c){$g.call(this,0,c);this.c=sf();sf();this.a=this.c.canvas;this.a.style.width="100%";this.a.style.height="100%";this.a.className="ol-unselectable";ge(b,this.a,0);this.b=!0;this.g=yb()}M(lk,$g);lk.prototype.Bb=function(b){return b instanceof X?new dk(b):b instanceof Y?new ek(b):null}; -function mk(b,c,d){var e=b.h,f=b.c;if(mb(e,c)){var g=d.extent,h=d.pixelRatio,k=d.viewState.rotation,l=d.pixelRatio,m=d.viewState,p=m.resolution;b=Jg(b.g,b.a.width/2,b.a.height/2,l/p,-l/p,-m.rotation,-m.center[0],-m.center[1]);g=new Pi(f,h,g,b,k);T(e,new Gg(c,e,g,d,f,null))}}lk.prototype.U=function(){return"canvas"}; -lk.prototype.kb=function(b){if(b){var c=this.c,d=b.pixelRatio,e=Math.round(b.size[0]*d),d=Math.round(b.size[1]*d);this.a.width!=e||this.a.height!=d?(this.a.width=e,this.a.height=d):c.clearRect(0,0,e,d);var f=b.viewState.rotation;ah(b);mk(this,"precompose",b);var g=b.layerStatesArray;Ma(g);yi(c,f,e/2,d/2);var h=b.viewState.resolution,k,l,m,p;k=0;for(l=g.length;k<l;++k)p=g[k],m=p.layer,m=ch(this,m),Ig(p,h)&&"ready"==p.Tb&&m.i(b,p)&&m.g(b,p,c);yi(c,-f,e/2,d/2);mk(this,"postcompose",b);this.b||(pe(this.a, -!0),this.b=!0);dh(this,b);b.postRenderFunctions.push(bh)}else this.b&&(pe(this.a,!1),this.b=!1)};function nk(b,c){Mg.call(this,b);this.target=c}M(nk,Mg);nk.prototype.yb=N;nk.prototype.Ac=N;function ok(b){var c=document.createElement("DIV");c.style.position="absolute";nk.call(this,b,c);this.c=!0;this.h=1;this.g=0;this.b={}}M(ok,nk);ok.prototype.yb=function(){fe(this.target);this.g=0}; -ok.prototype.Bc=function(b,c){if(!c.visible)return this.c&&(pe(this.target,!1),this.c=!1),!0;var d=b.pixelRatio,e=b.viewState,f=e.projection,g=this.a,h=g.W(),k=h.ia(f),l=h.bb(f),m=Re(k,e.resolution),p=k.J(m),q=e.center,r;p==e.resolution?(q=Sg(q,p,b.size),r=Yb(q,p,e.rotation,b.size)):r=b.extent;void 0!==c.extent&&(r=Zb(r,c.extent));var p=Ne(k,r,p),u={};u[m]={};var w=this.l(h,f,u),y=ui(g),z=Ib(),D=new gd(0,0,0,0),t,v,B,F;for(B=p.a;B<=p.b;++B)for(F=p.f;F<=p.c;++F)t=Ug(h,m,B,F,d,f),v=t.N(),v=2==v||4== -v||3==v&&!y,!v&&t.a&&(t=t.a),v=t.N(),2==v?u[m][t.L.toString()]=t:4==v||3==v&&!y||(v=Je(k,t.L,w,D,z),v||(t=Me(k,t.L,D,z))&&w(m+1,t));var C;if(this.g!=h.f){for(C in this.b)y=this.b[+C],he(y.target);this.b={};this.g=h.f}z=Object.keys(u).map(Number);z.sort(Ga);var w={},G;B=0;for(F=z.length;B<F;++B){C=z[B];C in this.b?y=this.b[C]:(y=Se(k,q,C),y=new pk(k,y),w[C]=!0,this.b[C]=y);C=u[C];for(G in C){t=y;v=C[G];var J=l,A=v.L,H=A[0],O=A[1],Q=A[2],A=A.toString();if(!(A in t.b)){var H=sb(Qe(t.g,H),t.i),L=v.S(t), -K=L.style;K.maxWidth="none";var fa=void 0,ra=void 0;0<J?(fa=document.createElement("DIV"),ra=fa.style,ra.overflow="hidden",ra.width=H[0]+"px",ra.height=H[1]+"px",K.position="absolute",K.left=-J+"px",K.top=-J+"px",K.width=H[0]+2*J+"px",K.height=H[1]+2*J+"px",fa.appendChild(L)):(K.width=H[0]+"px",K.height=H[1]+"px",fa=L,ra=K);ra.position="absolute";ra.left=(O-t.f[1])*H[0]+"px";ra.top=(t.f[2]-Q)*H[1]+"px";t.a||(t.a=document.createDocumentFragment());t.a.appendChild(fa);t.b[A]=v}}y.a&&(y.target.appendChild(y.a), -y.a=null)}l=Object.keys(this.b).map(Number);l.sort(Ga);B=yb();G=0;for(z=l.length;G<z;++G)if(C=l[G],y=this.b[C],C in u)if(t=y.J(),F=y.fa(),Jg(B,b.size[0]/2,b.size[1]/2,t/e.resolution,t/e.resolution,e.rotation,(F[0]-q[0])/t,(q[1]-F[1])/t),y.setTransform(B),C in w){for(--C;0<=C;--C)if(C in this.b){F=this.b[C].target;F.parentNode&&F.parentNode.insertBefore(y.target,F.nextSibling);break}0>C&&ge(this.target,y.target,0)}else{if(!b.viewHints[0]&&!b.viewHints[1]){v=Le(y.g,r,y.f[0],D);C=[];t=F=void 0;for(t in y.b)F= -y.b[t],J=F.L,hd(v,J[1],J[2])||C.push(F);J=v=void 0;v=0;for(J=C.length;v<J;++v)F=C[v],t=F.L.toString(),he(F.S(y)),delete y.b[t]}}else he(y.target),delete this.b[C];c.opacity!=this.h&&(this.h=this.target.style.opacity=c.opacity);c.visible&&!this.c&&(pe(this.target,!0),this.c=!0);Rg(b.usedTiles,h,m,p);Tg(b,h,k,d,f,r,m,g.get("preload"));Og(b,h);Qg(b,h);return!0}; -function pk(b,c){this.target=document.createElement("DIV");this.target.style.position="absolute";this.target.style.width="100%";this.target.style.height="100%";this.g=b;this.f=c;this.h=ac(Ke(b,c));this.l=b.J(c[0]);this.b={};this.a=null;this.c=Ab();this.i=[0,0]}pk.prototype.fa=function(){return this.h};pk.prototype.J=function(){return this.l};pk.prototype.setTransform=function(b){Kg(b,this.c)||(wf(this.target,b),Bb(this.c,b))};function qk(b){this.g=sf();var c=this.g.canvas;c.style.maxWidth="none";c.style.position="absolute";nk.call(this,b,c);this.b=!1;this.h=-1;this.o=NaN;this.i=Ib();this.c=this.j=null;this.v=yb();this.u=yb()}M(qk,nk);n=qk.prototype;n.yb=function(){var b=this.g.canvas;b.width=b.width;this.h=0}; -n.Ac=function(b,c){var d=b.viewState,e=d.center,f=d.rotation,g=d.resolution,d=b.pixelRatio,h=b.size[0],k=b.size[1],l=h*d,m=k*d,e=Jg(this.v,d*h/2,d*k/2,d/g,-d/g,-f,-e[0],-e[1]),g=this.g;g.canvas.width=l;g.canvas.height=m;h=Jg(this.u,0,0,1/d,1/d,0,-(l-h)/2*d,-(m-k)/2*d);wf(g.canvas,h);rk(this,"precompose",b,e);(h=this.c)&&!h.c()&&(g.globalAlpha=c.opacity,h.f(g,d,e,f,c.Wa?b.skippedFeatureUids:{}),rk(this,"render",b,e));rk(this,"postcompose",b,e)}; -function rk(b,c,d,e){var f=b.g;b=b.a;mb(b,c)&&(e=new Pi(f,d.pixelRatio,d.extent,e,d.viewState.rotation),T(b,new Gg(c,b,e,d,f,null)))}n.Xa=function(b,c,d,e){if(this.c){var f=this.a,g={};return this.c.g(b,c.viewState.resolution,c.viewState.rotation,{},function(b){var c=I(b).toString();if(!(c in g))return g[c]=!0,d.call(e,b,f)})}};n.Cc=function(){Ng(this)}; -n.Bc=function(b){function c(b){var c,e=b.c;e?c=e.call(b,l):(e=d.g)&&(c=e(b,l));if(c){if(c){e=!1;if(Array.isArray(c))for(var f=0,g=c.length;f<g;++f)e=yj(p,b,c[f],xj(l,m),this.Cc,this)||e;else e=yj(p,b,c,xj(l,m),this.Cc,this)||e;b=e}else b=!1;this.b=this.b||b}}var d=this.a,e=d.W();Pg(b.attributions,e.i);Qg(b,e);var f=b.viewHints[0],g=b.viewHints[1],h=d.i,k=d.j;if(!this.b&&!h&&f||!k&&g)return!0;var g=b.extent,h=b.viewState,f=h.projection,l=h.resolution,m=b.pixelRatio;b=d.f;k=d.a;h=d.get("renderOrder"); -void 0===h&&(h=wj);g=Kb(g,k*l);if(!this.b&&this.o==l&&this.h==b&&this.j==h&&Mb(this.i,g))return!0;this.c=null;this.b=!1;var p=new sj(.5*l/m,g,l,d.a);ck(e,g,l,f);if(h){var q=[];ak(e,g,function(b){q.push(b)},this);q.sort(h);q.forEach(c,this)}else ak(e,g,c,this);tj(p);this.o=l;this.h=b;this.j=h;this.i=g;this.c=p;return!0};function sk(b,c){$g.call(this,0,c);this.c=sf();var d=this.c.canvas;d.style.position="absolute";d.style.width="100%";d.style.height="100%";d.className="ol-unselectable";ge(b,d,0);this.g=yb();this.a=document.createElement("DIV");this.a.className="ol-unselectable";d=this.a.style;d.position="absolute";d.width="100%";d.height="100%";R(this.a,"touchstart",kb);ge(b,this.a,0);this.b=!0}M(sk,$g);sk.prototype.K=function(){he(this.a);sk.Y.K.call(this)}; -sk.prototype.Bb=function(b){if(b instanceof X)b=new ok(b);else if(b instanceof Y)b=new qk(b);else return null;return b};function tk(b,c,d){var e=b.h;if(mb(e,c)){var f=d.extent,g=d.pixelRatio,h=d.viewState,k=h.rotation,l=b.c,m=l.canvas;Jg(b.g,m.width/2,m.height/2,g/h.resolution,-g/h.resolution,-h.rotation,-h.center[0],-h.center[1]);b=new Pi(l,g,f,b.g,k);T(e,new Gg(c,e,b,d,l,null))}}sk.prototype.U=function(){return"dom"}; -sk.prototype.kb=function(b){if(b){var c=this.h;if(mb(c,"precompose")||mb(c,"postcompose")){var c=this.c.canvas,d=b.pixelRatio;c.width=b.size[0]*d;c.height=b.size[1]*d}tk(this,"precompose",b);c=b.layerStatesArray;Ma(c);var d=b.viewState.resolution,e,f,g,h;e=0;for(f=c.length;e<f;++e)h=c[e],g=h.layer,g=ch(this,g),ge(this.a,g.target,e),Ig(h,d)&&"ready"==h.Tb?g.Bc(b,h)&&g.Ac(b,h):g.yb();var c=b.layerStates,k;for(k in this.f)k in c||(g=this.f[k],he(g.target));this.b||(pe(this.a,!0),this.b=!0);ah(b);dh(this, -b);b.postRenderFunctions.push(bh);tk(this,"postcompose",b)}else this.b&&(pe(this.a,!1),this.b=!1)};function uk(b){this.a=b}function vk(b){this.a=b}M(vk,uk);vk.prototype.U=function(){return 35632};function wk(b){this.a=b}M(wk,uk);wk.prototype.U=function(){return 35633};function xk(){this.a="precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}"}M(xk,vk);aa(xk); -function yk(){this.a="varying vec2 a;varying float b;attribute vec2 c;attribute vec2 d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;void main(void){mat4 offsetMatrix=i;if(g==1.0){offsetMatrix=i*j;}vec4 offsets=offsetMatrix*vec4(e,0.,0.);gl_Position=h*vec4(c,0.,1.)+offsets;a=d;b=f;}"}M(yk,wk);aa(yk); -function zk(b,c){this.i=b.getUniformLocation(c,"j");this.j=b.getUniformLocation(c,"i");this.h=b.getUniformLocation(c,"k");this.l=b.getUniformLocation(c,"h");this.a=b.getAttribLocation(c,"e");this.b=b.getAttribLocation(c,"f");this.c=b.getAttribLocation(c,"c");this.f=b.getAttribLocation(c,"g");this.g=b.getAttribLocation(c,"d")};function Ak(b){this.a=void 0!==b?b:[]};function Bk(b,c){this.B=b;this.a=c;this.b={};this.g={};this.c={};this.i=this.j=this.h=this.l=null;(this.f=0<=oa.indexOf("OES_element_index_uint"))&&c.getExtension("OES_element_index_uint");R(this.B,"webglcontextlost",this.o,this);R(this.B,"webglcontextrestored",this.s,this)}M(Bk,hb); -function Ck(b,c,d){var e=b.a,f=d.a,g=String(I(d));if(g in b.b)e.bindBuffer(c,b.b[g].buffer);else{var h=e.createBuffer();e.bindBuffer(c,h);var k;34962==c?k=new Float32Array(f):34963==c&&(k=b.f?new Uint32Array(f):new Uint16Array(f));e.bufferData(c,k,35044);b.b[g]={Ne:d,buffer:h}}}function Dk(b,c){var d=b.a,e=String(I(c)),f=b.b[e];d.isContextLost()||d.deleteBuffer(f.buffer);delete b.b[e]} -Bk.prototype.K=function(){gb(this.B);var b=this.a;if(!b.isContextLost()){for(var c in this.b)b.deleteBuffer(this.b[c].buffer);for(c in this.c)b.deleteProgram(this.c[c]);for(c in this.g)b.deleteShader(this.g[c]);b.deleteFramebuffer(this.h);b.deleteRenderbuffer(this.i);b.deleteTexture(this.j)}}; -function Ek(b){if(!b.h){var c=b.a,d=c.createFramebuffer();c.bindFramebuffer(c.FRAMEBUFFER,d);var e=Fk(c,1,1),f=c.createRenderbuffer();c.bindRenderbuffer(c.RENDERBUFFER,f);c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_COMPONENT16,1,1);c.framebufferTexture2D(c.FRAMEBUFFER,c.COLOR_ATTACHMENT0,c.TEXTURE_2D,e,0);c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,f);c.bindTexture(c.TEXTURE_2D,null);c.bindRenderbuffer(c.RENDERBUFFER,null);c.bindFramebuffer(c.FRAMEBUFFER,null);b.h=d; -b.j=e;b.i=f}return b.h}function Gk(b,c){var d=String(I(c));if(d in b.g)return b.g[d];var e=b.a,f=e.createShader(c.U());e.shaderSource(f,c.a);e.compileShader(f);return b.g[d]=f}function Hk(b,c,d){var e=I(c)+"/"+I(d);if(e in b.c)return b.c[e];var f=b.a,g=f.createProgram();f.attachShader(g,Gk(b,c));f.attachShader(g,Gk(b,d));f.linkProgram(g);return b.c[e]=g}Bk.prototype.o=function(){Wa(this.b);Wa(this.g);Wa(this.c);this.i=this.j=this.h=this.l=null};Bk.prototype.s=function(){}; -function Ik(b,c){if(c==b.l)return!1;b.a.useProgram(c);b.l=c;return!0}function Jk(b,c,d){var e=b.createTexture();b.bindTexture(b.TEXTURE_2D,e);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,b.LINEAR);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,b.LINEAR);void 0!==c&&b.texParameteri(3553,10242,c);void 0!==d&&b.texParameteri(3553,10243,d);return e}function Fk(b,c,d){var e=Jk(b,void 0,void 0);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,c,d,0,b.RGBA,b.UNSIGNED_BYTE,null);return e};function Kk(b,c){this.H=this.u=void 0;this.j=Xb(c);this.s=[];this.h=[];this.A=void 0;this.g=[];this.c=[];this.D=this.I=void 0;this.b=[];this.v=this.i=null;this.V=void 0;this.ka=Ab();this.ua=Ab();this.R=this.G=void 0;this.la=Ab();this.ha=this.Z=this.T=void 0;this.da=[];this.l=[];this.a=[];this.o=null;this.f=[];this.B=[];this.aa=void 0}M(Kk,Fg); -function Lk(b,c){var d=b.o,e=b.i,f=b.da,g=b.l,h=c.a;return function(){if(!h.isContextLost()){var b,l;b=0;for(l=f.length;b<l;++b)h.deleteTexture(f[b]);b=0;for(l=g.length;b<l;++b)h.deleteTexture(g[b])}Dk(c,d);Dk(c,e)}} -function Mk(b,c,d,e){var f=b.u,g=b.H,h=b.A,k=b.I,l=b.D,m=b.V,p=b.G,q=b.R,r=b.T?1:0,u=b.Z,w=b.ha,y=b.aa,z=Math.cos(u),u=Math.sin(u),D=b.b.length,t=b.a.length,v,B,F,C,G,J;for(v=0;v<d;v+=e)G=c[v]-b.j[0],J=c[v+1]-b.j[1],B=t/8,F=-w*f,C=-w*(h-g),b.a[t++]=G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=p/l,b.a[t++]=(q+h)/k,b.a[t++]=m,b.a[t++]=r,F=w*(y-f),C=-w*(h-g),b.a[t++]=G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=(p+y)/l,b.a[t++]=(q+h)/k,b.a[t++]=m,b.a[t++]=r,F=w*(y-f),C=w*g,b.a[t++]= -G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=(p+y)/l,b.a[t++]=q/k,b.a[t++]=m,b.a[t++]=r,F=-w*f,C=w*g,b.a[t++]=G,b.a[t++]=J,b.a[t++]=F*z-C*u,b.a[t++]=F*u+C*z,b.a[t++]=p/l,b.a[t++]=q/k,b.a[t++]=m,b.a[t++]=r,b.b[D++]=B,b.b[D++]=B+1,b.b[D++]=B+2,b.b[D++]=B,b.b[D++]=B+2,b.b[D++]=B+3}Kk.prototype.Qa=function(b,c){this.f.push(this.b.length);this.B.push(c);var d=b.a;Mk(this,d,d.length,b.b)};Kk.prototype.Ra=function(b,c){this.f.push(this.b.length);this.B.push(c);var d=b.a;Mk(this,d,d.length,b.b)}; -function Nk(b,c){var d=c.a;b.s.push(b.b.length);b.h.push(b.b.length);b.o=new Ak(b.a);Ck(c,34962,b.o);b.i=new Ak(b.b);Ck(c,34963,b.i);var e={};Ok(b.da,b.g,e,d);Ok(b.l,b.c,e,d);b.u=void 0;b.H=void 0;b.A=void 0;b.g=null;b.c=null;b.I=void 0;b.D=void 0;b.b=null;b.V=void 0;b.G=void 0;b.R=void 0;b.T=void 0;b.Z=void 0;b.ha=void 0;b.a=null;b.aa=void 0} -function Ok(b,c,d,e){var f,g,h,k,l=c.length;for(k=0;k<l;++k){g=c[k];h=I(g).toString();if(h in d)f=d[h];else{f=e;var m=Jk(f,33071,33071);f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,g);f=m;d[h]=f}b[k]=f}} -function Pk(b,c,d,e,f,g,h,k,l,m,p){var q=c.a;Ck(c,34962,b.o);Ck(c,34963,b.i);var r=xk.qa(),u=yk.qa(),u=Hk(c,r,u);b.v?r=b.v:(r=new zk(q,u),b.v=r);Ik(c,u);q.enableVertexAttribArray(r.c);q.vertexAttribPointer(r.c,2,5126,!1,32,0);q.enableVertexAttribArray(r.a);q.vertexAttribPointer(r.a,2,5126,!1,32,8);q.enableVertexAttribArray(r.g);q.vertexAttribPointer(r.g,2,5126,!1,32,16);q.enableVertexAttribArray(r.b);q.vertexAttribPointer(r.b,1,5126,!1,32,24);q.enableVertexAttribArray(r.f);q.vertexAttribPointer(r.f, -1,5126,!1,32,28);u=b.la;Jg(u,0,0,2/(e*g[0]),2/(e*g[1]),-f,-(d[0]-b.j[0]),-(d[1]-b.j[1]));d=b.ua;e=2/g[0];g=2/g[1];Cb(d);d[0]=e;d[5]=g;d[10]=1;d[15]=1;g=b.ka;Cb(g);0!==f&&Gb(g,-f);q.uniformMatrix4fv(r.l,!1,u);q.uniformMatrix4fv(r.j,!1,d);q.uniformMatrix4fv(r.i,!1,g);q.uniform1f(r.h,h);var w;if(void 0===l)Qk(b,q,c,k,b.da,b.s);else{if(m)a:{f=c.f?5125:5123;c=c.f?4:2;g=b.f.length-1;for(h=b.l.length-1;0<=h;--h)for(q.bindTexture(3553,b.l[h]),m=0<h?b.h[h-1]:0,u=b.h[h];0<=g&&b.f[g]>=m;){w=b.f[g];d=b.B[g]; -e=I(d).toString();if(void 0===k[e]&&d.M()&&(void 0===p||$b(p,d.M().C()))&&(q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),q.drawElements(4,u-w,f,w*c),u=l(d))){b=u;break a}u=w;g--}b=void 0}else q.clear(q.COLOR_BUFFER_BIT|q.DEPTH_BUFFER_BIT),Qk(b,q,c,k,b.l,b.h),b=(b=l(null))?b:void 0;w=b}q.disableVertexAttribArray(r.c);q.disableVertexAttribArray(r.a);q.disableVertexAttribArray(r.g);q.disableVertexAttribArray(r.b);q.disableVertexAttribArray(r.f);return w} -function Qk(b,c,d,e,f,g){var h=d.f?5125:5123;d=d.f?4:2;if(Za(e)){var k;b=0;e=f.length;for(k=0;b<e;++b){c.bindTexture(3553,f[b]);var l=g[b];c.drawElements(4,l-k,h,k*d);k=l}}else{k=0;var m,l=0;for(m=f.length;l<m;++l){c.bindTexture(3553,f[l]);for(var p=0<l?g[l-1]:0,q=g[l],r=p;k<b.f.length&&b.f[k]<=q;){var u=I(b.B[k]).toString();void 0!==e[u]?(r!==p&&c.drawElements(4,p-r,h,r*d),p=r=k===b.f.length-1?q:b.f[k+1]):p=k===b.f.length-1?q:b.f[k+1];k++}r!==p&&c.drawElements(4,p-r,h,r*d)}}} -Kk.prototype.Aa=function(b){var c=b.Sa(),d=b.S(1),e=b.Db(),f=b.jb(1),g=b.B,h=b.fa(),k=b.o,l=b.s,m=b.ya();b=b.u;var p;0===this.g.length?this.g.push(d):(p=this.g[this.g.length-1],I(p)!=I(d)&&(this.s.push(this.b.length),this.g.push(d)));0===this.c.length?this.c.push(f):(p=this.c[this.c.length-1],I(p)!=I(f)&&(this.h.push(this.b.length),this.c.push(f)));this.u=c[0];this.H=c[1];this.A=m[1];this.I=e[1];this.D=e[0];this.V=g;this.G=h[0];this.R=h[1];this.Z=l;this.T=k;this.ha=b;this.aa=m[0]}; -function Rk(b,c,d){this.l=c;this.i=b;this.h=d;this.b={}}function Sk(b,c){var d=[],e;for(e in b.b)d.push(Lk(b.b[e],c));return function(){for(var b=d.length,c,e=0;e<b;e++)c=d[e].apply(this,arguments);return c}}function Tk(b,c){for(var d in b.b)Nk(b.b[d],c)}Rk.prototype.a=function(b,c){var d=this.b[c];void 0===d&&(d=new Uk[c](this.i,this.l),this.b[c]=d);return d};Rk.prototype.c=function(){return Za(this.b)}; -Rk.prototype.f=function(b,c,d,e,f,g,h,k){var l,m;g=0;for(l=cj.length;g<l;++g)m=this.b[cj[g]],void 0!==m&&Pk(m,b,c,d,e,f,h,k,void 0,!1)};function Vk(b,c,d,e,f,g,h,k,l,m){var p=Wk,q,r;for(q=cj.length-1;0<=q;--q)if(r=b.b[cj[q]],void 0!==r&&(r=Pk(r,c,d,e,f,p,g,h,k,l,m)))return r} -Rk.prototype.g=function(b,c,d,e,f,g,h,k,l,m){var p=c.a;p.bindFramebuffer(p.FRAMEBUFFER,Ek(c));var q;void 0!==this.h&&(q=Kb(Pb(b),e*this.h));return Vk(this,c,b,e,f,k,l,function(b){var c=new Uint8Array(4);p.readPixels(0,0,1,1,p.RGBA,p.UNSIGNED_BYTE,c);if(0<c[3]&&(b=m(b)))return b},!0,q)};function Xk(b,c,d,e,f,g,h){var k=d.a;k.bindFramebuffer(k.FRAMEBUFFER,Ek(d));return void 0!==Vk(b,d,c,e,f,g,h,function(){var b=new Uint8Array(4);k.readPixels(0,0,1,1,k.RGBA,k.UNSIGNED_BYTE,b);return 0<b[3]},!1)} -var Uk={Image:Kk},Wk=[1,1];function Yk(b,c,d,e,f,g){this.a=b;this.f=c;this.c=g;this.l=f;this.h=e;this.g=d;this.b=null}M(Yk,Fg);Yk.prototype.Ra=function(b,c){var d=this.a,e=(new Rk(1,this.c)).a(0,"Image");e.Aa(this.b);e.Ra(b,c);Nk(e,d);Pk(e,this.a,this.f,this.g,this.h,this.l,1,{},void 0,!1);Lk(e,d)()};Yk.prototype.Qa=function(b,c){var d=this.a,e=(new Rk(1,this.c)).a(0,"Image");e.Aa(this.b);e.Qa(b,c);Nk(e,d);Pk(e,this.a,this.f,this.g,this.h,this.l,1,{},void 0,!1);Lk(e,d)()};Yk.prototype.Aa=function(b){this.b=b};function Zk(){this.a="precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor=texture2D(g,a);gl_FragColor.rgb=texColor.rgb;gl_FragColor.a=texColor.a*f;}"}M(Zk,vk);aa(Zk);function $k(){this.a="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position=e*vec4(b,0.,1.);a=(d*vec4(c,0.,1.)).st;}"}M($k,wk);aa($k); -function al(b,c){this.f=b.getUniformLocation(c,"f");this.c=b.getUniformLocation(c,"e");this.h=b.getUniformLocation(c,"d");this.g=b.getUniformLocation(c,"g");this.a=b.getAttribLocation(c,"b");this.b=b.getAttribLocation(c,"c")};function bl(b,c){Mg.call(this,c);this.c=b;this.G=new Ak([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]);this.i=this.ta=null;this.j=void 0;this.D=yb();this.R=Ab();this.o=null}M(bl,Mg); -function cl(b,c,d){var e=b.c.c;if(void 0===b.j||b.j!=d){c.postRenderFunctions.push(na(function(b,c,d){b.isContextLost()||(b.deleteFramebuffer(c),b.deleteTexture(d))},e,b.i,b.ta));c=Fk(e,d,d);var f=e.createFramebuffer();e.bindFramebuffer(36160,f);e.framebufferTexture2D(36160,36064,3553,c,0);b.ta=c;b.i=f;b.j=d}else e.bindFramebuffer(36160,b.i)} -bl.prototype.Dc=function(b,c,d){dl(this,"precompose",d,b);Ck(d,34962,this.G);var e=d.a,f=Zk.qa(),g=$k.qa(),f=Hk(d,f,g);this.o?g=this.o:this.o=g=new al(e,f);Ik(d,f)&&(e.enableVertexAttribArray(g.a),e.vertexAttribPointer(g.a,2,5126,!1,16,0),e.enableVertexAttribArray(g.b),e.vertexAttribPointer(g.b,2,5126,!1,16,8),e.uniform1i(g.g,0));e.uniformMatrix4fv(g.h,!1,this.D);e.uniformMatrix4fv(g.c,!1,this.R);e.uniform1f(g.f,c.opacity);e.bindTexture(3553,this.ta);e.drawArrays(5,0,4);dl(this,"postcompose",d,b)}; -function dl(b,c,d,e){b=b.a;if(mb(b,c)){var f=e.viewState;T(b,new Gg(c,b,new Yk(d,f.center,f.resolution,f.rotation,e.size,e.extent),e,null,d))}}bl.prototype.s=function(){this.i=this.ta=null;this.j=void 0};function el(){this.a="precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}"}M(el,vk);aa(el);function fl(){this.a="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform vec4 d;void main(void){gl_Position=vec4(b*d.xy+d.zw,0.,1.);a=c;}"}M(fl,wk);aa(fl);function gl(b,c){this.f=b.getUniformLocation(c,"e");this.c=b.getUniformLocation(c,"d");this.a=b.getAttribLocation(c,"b");this.b=b.getAttribLocation(c,"c")};function hl(b,c){bl.call(this,b,c);this.A=el.qa();this.T=fl.qa();this.b=null;this.v=new Ak([0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0]);this.u=this.g=null;this.h=-1;this.I=[0,0]}M(hl,bl);hl.prototype.K=function(){Dk(this.c.g,this.v);hl.Y.K.call(this)};hl.prototype.l=function(b,c,d){var e=this.c;return function(f,g){return Xe(b,c,f,g,function(b){var c=xe(e.b,b.getKey());c&&(d[f]||(d[f]={}),d[f][b.L.toString()]=b);return c})}};hl.prototype.s=function(){hl.Y.s.call(this);this.b=null}; -hl.prototype.Ec=function(b,c,d){var e=this.c,f=d.a,g=b.viewState,h=g.projection,k=this.a,l=k.W(),m=l.ia(h),p=Re(m,g.resolution),q=m.J(p),r=Ye(l,p,b.pixelRatio,h),u=r[0]/sb(Qe(m,p),this.I)[0],w=q/u,y=l.bb(h),z=g.center,D;q==g.resolution?(z=Sg(z,q,b.size),D=Yb(z,q,g.rotation,b.size)):D=b.extent;q=Ne(m,D,q);if(this.g&&id(this.g,q)&&this.h==l.f)w=this.u;else{var t=[q.b-q.a+1,q.c-q.f+1],v=Math.pow(2,Math.ceil(Math.log(Math.max(t[0]*r[0],t[1]*r[1]))/Math.LN2)),t=w*v,B=m.fa(p),F=B[0]+q.a*r[0]*w,w=B[1]+q.f* -r[1]*w,w=[F,w,F+t,w+t];cl(this,b,v);f.viewport(0,0,v,v);f.clearColor(0,0,0,0);f.clear(16384);f.disable(3042);v=Hk(d,this.A,this.T);Ik(d,v);this.b||(this.b=new gl(f,v));Ck(d,34962,this.v);f.enableVertexAttribArray(this.b.a);f.vertexAttribPointer(this.b.a,2,5126,!1,16,0);f.enableVertexAttribArray(this.b.b);f.vertexAttribPointer(this.b.b,2,5126,!1,16,8);f.uniform1i(this.b.f,0);d={};d[p]={};var C=this.l(l,h,d),G=ui(k),v=!0,F=Ib(),J=new gd(0,0,0,0),A,H,O;for(H=q.a;H<=q.b;++H)for(O=q.f;O<=q.c;++O){B=Ug(l, -p,H,O,u,h);if(void 0!==c.extent&&(A=Ke(m,B.L,F),!$b(A,c.extent)))continue;A=B.N();A=2==A||4==A||3==A&&!G;!A&&B.a&&(B=B.a);A=B.N();if(2==A){if(xe(e.b,B.getKey())){d[p][B.L.toString()]=B;continue}}else if(4==A||3==A&&!G)continue;v=!1;A=Je(m,B.L,C,J,F);A||(B=Me(m,B.L,J,F))&&C(p+1,B)}c=Object.keys(d).map(Number);c.sort(Ga);for(var C=new Float32Array(4),Q,L,K,G=0,J=c.length;G<J;++G)for(Q in L=d[c[G]],L)B=L[Q],A=Ke(m,B.L,F),H=2*(A[2]-A[0])/t,O=2*(A[3]-A[1])/t,K=2*(A[0]-w[0])/t-1,A=2*(A[1]-w[1])/t-1,xb(C, -H,O,K,A),f.uniform4fv(this.b.c,C),il(e,B,r,y*u),f.drawArrays(5,0,4);v?(this.g=q,this.u=w,this.h=l.f):(this.u=this.g=null,this.h=-1,b.animate=!0)}Rg(b.usedTiles,l,p,q);var fa=e.i;Tg(b,l,m,u,h,D,p,k.get("preload"),function(b){var c;(c=2!=b.N()||xe(e.b,b.getKey()))||(c=b.getKey()in fa.f);c||fa.c([b,Pe(m,b.L),m.J(b.L[0]),r,y*u])},this);Og(b,l);Qg(b,l);f=this.D;Cb(f);Eb(f,(z[0]-w[0])/(w[2]-w[0]),(z[1]-w[1])/(w[3]-w[1]));0!==g.rotation&&Gb(f,g.rotation);Fb(f,b.size[0]*g.resolution/(w[2]-w[0]),b.size[1]* -g.resolution/(w[3]-w[1]));Eb(f,-.5,-.5);return!0};function jl(b,c){bl.call(this,b,c);this.h=!1;this.I=-1;this.A=NaN;this.u=Ib();this.g=this.b=this.v=null}M(jl,bl);n=jl.prototype;n.Dc=function(b,c,d){this.g=c;var e=b.viewState,f=this.b;f&&!f.c()&&f.f(d,e.center,e.resolution,e.rotation,b.size,b.pixelRatio,c.opacity,c.Wa?b.skippedFeatureUids:{})};n.K=function(){var b=this.b;b&&(Sk(b,this.c.g)(),this.b=null);jl.Y.K.call(this)}; -n.Xa=function(b,c,d,e){if(this.b&&this.g){var f=c.viewState,g=this.a,h={};return this.b.g(b,this.c.g,f.center,f.resolution,f.rotation,c.size,c.pixelRatio,this.g.opacity,{},function(b){var c=I(b).toString();if(!(c in h))return h[c]=!0,d.call(e,b,g)})}};n.yc=function(b,c){if(this.b&&this.g){var d=c.viewState;return Xk(this.b,b,this.c.g,d.resolution,d.rotation,this.g.opacity,c.skippedFeatureUids)}return!1};n.Fc=function(){Ng(this)}; -n.Ec=function(b,c,d){function e(b){var c,d=b.c;d?c=d.call(b,m):(d=f.g)&&(c=d(b,m));if(c){if(c){d=!1;if(Array.isArray(c))for(var e=0,g=c.length;e<g;++e)d=yj(r,b,c[e],xj(m,p),this.Fc,this)||d;else d=yj(r,b,c,xj(m,p),this.Fc,this)||d;b=d}else b=!1;this.h=this.h||b}}var f=this.a;c=f.W();Pg(b.attributions,c.i);Qg(b,c);var g=b.viewHints[0],h=b.viewHints[1],k=f.i,l=f.j;if(!this.h&&!k&&g||!l&&h)return!0;var h=b.extent,k=b.viewState,g=k.projection,m=k.resolution,p=b.pixelRatio,k=f.f,q=f.a,l=f.get("renderOrder"); -void 0===l&&(l=wj);h=Kb(h,q*m);if(!this.h&&this.A==m&&this.I==k&&this.v==l&&Mb(this.u,h))return!0;this.b&&b.postRenderFunctions.push(Sk(this.b,d));this.h=!1;var r=new Rk(.5*m/p,h,f.a);ck(c,h,m,g);if(l){var u=[];ak(c,h,function(b){u.push(b)},this);u.sort(l);u.forEach(e,this)}else ak(c,h,e,this);Tk(r,d);this.A=m;this.I=k;this.v=l;this.u=h;this.b=r;return!0};function kl(b,c){$g.call(this,0,c);this.a=document.createElement("CANVAS");this.a.style.width="100%";this.a.style.height="100%";this.a.className="ol-unselectable";ge(b,this.a,0);this.s=this.u=0;this.H=sf();this.j=!0;this.c=yf(this.a,{antialias:!0,depth:!1,failIfMajorPerformanceCaveat:!0,preserveDrawingBuffer:!1,stencil:!0});this.g=new Bk(this.a,this.c);R(this.a,"webglcontextlost",this.ce,this);R(this.a,"webglcontextrestored",this.de,this);this.b=new we;this.o=null;this.i=new eh(function(b){var c= -b[1];b=b[2];var f=c[0]-this.o[0],c=c[1]-this.o[1];return 65536*Math.log(b)+Math.sqrt(f*f+c*c)/b}.bind(this),function(b){return b[0].getKey()});this.v=function(){if(0!==this.i.a.length){ih(this.i);var b=fh(this.i);il(this,b[0],b[3],b[4])}return!1}.bind(this);this.l=0;ll(this)}M(kl,$g); -function il(b,c,d,e){var f=b.c,g=c.getKey();if(xe(b.b,g))b=b.b.get(g),f.bindTexture(3553,b.ta),9729!=b.sc&&(f.texParameteri(3553,10240,9729),b.sc=9729),9729!=b.tc&&(f.texParameteri(3553,10240,9729),b.tc=9729);else{var h=f.createTexture();f.bindTexture(3553,h);if(0<e){var k=b.H.canvas,l=b.H;b.u!==d[0]||b.s!==d[1]?(k.width=d[0],k.height=d[1],b.u=d[0],b.s=d[1]):l.clearRect(0,0,d[0],d[1]);l.drawImage(c.S(),e,e,d[0],d[1],0,0,d[0],d[1]);f.texImage2D(3553,0,6408,6408,5121,k)}else f.texImage2D(3553,0,6408, -6408,5121,c.S());f.texParameteri(3553,10240,9729);f.texParameteri(3553,10241,9729);f.texParameteri(3553,10242,33071);f.texParameteri(3553,10243,33071);b.b.set(g,{ta:h,sc:9729,tc:9729})}}n=kl.prototype;n.Bb=function(b){return b instanceof X?new hl(this,b):b instanceof Y?new jl(this,b):null};function ml(b,c,d){var e=b.h;if(mb(e,c)){b=b.g;var f=d.viewState;T(e,new Gg(c,e,new Yk(b,f.center,f.resolution,f.rotation,d.size,d.extent),d,null,b))}} -n.K=function(){var b=this.c;b.isContextLost()||ye(this.b,function(c){c&&b.deleteTexture(c.ta)});ib(this.g);kl.Y.K.call(this)};n.ed=function(b,c){for(var d=this.c,e;1024<this.b.f-this.l;){if(e=this.b.a.Ba)d.deleteTexture(e.ta);else if(+this.b.a.Kb==c.index)break;else--this.l;this.b.pop()}};n.U=function(){return"webgl"};n.ce=function(b){b.preventDefault();this.b.clear();this.l=0;b=this.f;for(var c in b)b[c].s()};n.de=function(){ll(this);this.h.render()}; -function ll(b){b=b.c;b.activeTexture(33984);b.blendFuncSeparate(770,771,1,771);b.disable(2884);b.disable(2929);b.disable(3089);b.disable(2960)} -n.kb=function(b){var c=this.g,d=this.c;if(d.isContextLost())return!1;if(!b)return this.j&&(pe(this.a,!1),this.j=!1),!1;this.o=b.focus;this.b.set((-b.index).toString(),null);++this.l;ml(this,"precompose",b);var e=[],f=b.layerStatesArray;Ma(f);var g=b.viewState.resolution,h,k,l,m;h=0;for(k=f.length;h<k;++h)m=f[h],Ig(m,g)&&"ready"==m.Tb&&(l=ch(this,m.layer),l.Ec(b,m,c)&&e.push(m));f=b.size[0]*b.pixelRatio;g=b.size[1]*b.pixelRatio;if(this.a.width!=f||this.a.height!=g)this.a.width=f,this.a.height=g;d.bindFramebuffer(36160, -null);d.clearColor(0,0,0,0);d.clear(16384);d.enable(3042);d.viewport(0,0,this.a.width,this.a.height);h=0;for(k=e.length;h<k;++h)m=e[h],l=ch(this,m.layer),l.Dc(b,m,c);this.j||(pe(this.a,!0),this.j=!0);ah(b);1024<this.b.f-this.l&&b.postRenderFunctions.push(this.ed.bind(this));0!==this.i.a.length&&(b.postRenderFunctions.push(this.v),b.animate=!0);ml(this,"postcompose",b);dh(this,b);b.postRenderFunctions.push(bh)}; -n.Qb=function(b,c,d,e,f,g){var h;if(this.c.isContextLost())return!1;var k=c.viewState,l=c.layerStatesArray,m;for(m=l.length-1;0<=m;--m){h=l[m];var p=h.layer;if(Ig(h,k.resolution)&&f.call(g,p)&&(h=ch(this,p).Xa(b,c,d,e)))return h}};n.zc=function(b,c,d,e){var f=!1;if(this.c.isContextLost())return!1;var g=c.viewState,h=c.layerStatesArray,k;for(k=h.length-1;0<=k;--k){var l=h[k],m=l.layer;if(Ig(l,g.resolution)&&d.call(e,m)&&(f=ch(this,m).yc(b,c)))return!0}return f};var nl=["canvas","webgl","dom"]; -function Z(b){U.call(this);var c=pl(b);this.Ca=void 0!==b.loadTilesWhileAnimating?b.loadTilesWhileAnimating:!1;this.ob=void 0!==b.loadTilesWhileInteracting?b.loadTilesWhileInteracting:!1;this.qb=void 0!==b.pixelRatio?b.pixelRatio:Ef;this.pb=c.logos;this.T=function(){this.g=void 0;this.re.call(this,Date.now())}.bind(this);this.va=yb();this.rb=yb();this.wa=0;this.b=null;this.ka=Ib();this.u=this.G=null;this.a=document.createElement("DIV");this.a.className="ol-viewport"+(Hf?" ol-touch":"");this.a.style.position= -"relative";this.a.style.overflow="hidden";this.a.style.width="100%";this.a.style.height="100%";this.a.style.msTouchAction="none";this.a.style.touchAction="none";this.o=document.createElement("DIV");this.o.className="ol-overlaycontainer";this.a.appendChild(this.o);this.j=document.createElement("DIV");this.j.className="ol-overlaycontainer-stopevent";b=["click","dblclick","mousedown","touchstart","mspointerdown",zg,"mousewheel","wheel"];for(var d=0,e=b.length;d<e;++d)R(this.j,b[d],jb);this.a.appendChild(this.j); -this.aa=new rg(this);for(var f in Cg)R(this.aa,Cg[f],this.pc,this);this.Z=c.keyboardEventTarget;this.i=null;R(this.a,"wheel",this.Ga,this);R(this.a,"mousewheel",this.Ga,this);this.s=c.controls;this.h=c.interactions;this.v=c.overlays;this.Nc={};this.D=new c.te(this.a,this);this.R=null;this.A=[];this.da=[];this.la=new jh(this.jd.bind(this),this.Ed.bind(this));this.sb={};R(this,qb("layergroup"),this.od,this);R(this,qb("view"),this.Fd,this);R(this,qb("size"),this.Bd,this);R(this,qb("target"),this.Dd, -this);this.l(c.values);od(this.s,function(b){b.setMap(this)},this);R(this.s,"add",function(b){b.element.setMap(this)},this);R(this.s,"remove",function(b){b.element.setMap(null)},this);od(this.h,function(b){b.setMap(this)},this);R(this.h,"add",function(b){b.element.setMap(this)},this);R(this.h,"remove",function(b){b.element.setMap(null)},this);od(this.v,this.ac,this);R(this.v,"add",function(b){this.ac(b.element)},this);R(this.v,"remove",function(b){var c=b.element.Da();void 0!==c&&delete this.Nc[c.toString()]; -b.element.setMap(null)},this)}M(Z,U);n=Z.prototype;n.$c=function(b){this.s.push(b)};n.ad=function(b){this.h.push(b)};n.bd=function(b){ql(this).get("layers").push(b)};n.cd=function(b){this.v.push(b)};n.ac=function(b){var c=b.Da();void 0!==c&&(this.Nc[c.toString()]=b);b.setMap(this)};n.ea=function(b){this.render();Array.prototype.push.apply(this.A,arguments)}; -n.K=function(){ib(this.aa);ib(this.D);fb(this.a,"wheel",this.Ga,this);fb(this.a,"mousewheel",this.Ga,this);void 0!==this.c&&(x.removeEventListener("resize",this.c,!1),this.c=void 0);this.g&&(x.cancelAnimationFrame(this.g),this.g=void 0);this.set("target",null);Z.Y.K.call(this)};n.hd=function(b,c,d,e,f){if(this.b)return b=this.pa(b),this.D.Qb(b,this.b,c,void 0!==d?d:null,void 0!==e?e:bc,void 0!==f?f:null)}; -n.Hd=function(b,c,d){if(!this.b)return!1;b=this.pa(b);return this.D.zc(b,this.b,void 0!==c?c:bc,void 0!==d?d:null)};n.nc=function(b){var c=this.a.getBoundingClientRect();b=b.changedTouches?b.changedTouches[0]:b;return[b.clientX-c.left,b.clientY-c.top]};n.Nb=function(){return this.get("target")};n.Fa=function(){var b=this.Nb();return void 0!==b?$d(b):null};n.pa=function(b){var c=this.b;return c?(b=b.slice(),Lg(c.pixelToCoordinateMatrix,b,b)):null};function ql(b){return b.get("layergroup")} -function Fh(b,c){var d=b.b;if(d){var e=c.slice(0,2);return Lg(d.coordinateToPixelMatrix,e,e)}return null}n.Ha=function(){return this.get("size")};n.O=function(){return this.get("view")};n.jd=function(b,c,d,e){var f=this.b;if(!(f&&c in f.wantedTiles&&f.wantedTiles[c][b.L.toString()]))return Infinity;b=d[0]-f.focus[0];d=d[1]-f.focus[1];return 65536*Math.log(e)+Math.sqrt(b*b+d*d)/e};n.Ga=function(b,c){var d=new pg(c||b.type,this,b);this.pc(d)}; -n.pc=function(b){if(this.b){this.R=b.coordinate;b.frameState=this.b;var c=this.h.a,d;if(!1!==T(this,b))for(d=c.length-1;0<=d;d--){var e=c[d];if(e.get("active")&&!e.handleEvent(b))break}}}; -n.Ad=function(){var b=this.b,c=this.la;if(0!==c.a.length){var d=16,e=d;if(b){var f=b.viewHints;f[0]&&(d=this.Ca?8:0,e=2);f[1]&&(d=this.ob?8:0,e=2)}if(c.h<d){ih(c);for(var f=0,g,h;c.h<d&&f<e&&0<c.a.length;)g=fh(c)[0],h=g.getKey(),0!==g.N()||h in c.g||(c.g[h]=!0,++c.h,++f,g.load())}}c=this.da;d=0;for(e=c.length;d<e;++d)c[d](this,b);c.length=0};n.Bd=function(){this.render()}; -n.Dd=function(){var b;this.Nb()&&(b=this.Fa());if(this.i){for(var c=0,d=this.i.length;c<d;++c)P(this.i[c]);this.i=null}b?(b.appendChild(this.a),b=this.Z?this.Z:b,this.i=[R(b,"keydown",this.Ga,this),R(b,"keypress",this.Ga,this)],this.c||(this.c=this.nb.bind(this),x.addEventListener("resize",this.c,!1))):(he(this.a),void 0!==this.c&&(x.removeEventListener("resize",this.c,!1),this.c=void 0));this.nb()};n.Ed=function(){this.render()};n.Gd=function(){this.render()}; -n.Fd=function(){this.G&&(P(this.G),this.G=null);var b=this.O();b&&(this.G=R(b,"propertychange",this.Gd,this));this.render()};n.pd=function(){this.render()};n.qd=function(){this.render()};n.od=function(){this.u&&(this.u.forEach(P),this.u=null);var b=ql(this);b&&(this.u=[R(b,"propertychange",this.qd,this),R(b,"change",this.pd,this)]);this.render()};n.se=function(){this.g&&x.cancelAnimationFrame(this.g);this.T()};n.render=function(){void 0===this.g&&(this.g=x.requestAnimationFrame(this.T))};n.oe=function(b){return this.h.remove(b)}; -n.pe=function(b){return ql(this).get("layers").remove(b)}; -n.re=function(b){var c,d,e,f=this.Ha(),g=this.O(),h=null;if(c=void 0!==f&&0<f[0]&&0<f[1]&&g)c=!!g.ga()&&void 0!==g.J();if(c){var h=g.g.slice(),k=ql(this).Eb(),l={};c=0;for(d=k.length;c<d;++c)l[I(k[c].layer)]=k[c];e=g.N();h={animate:!1,attributions:{},coordinateToPixelMatrix:this.va,extent:null,focus:this.R?this.R:e.center,index:this.wa++,layerStates:l,layerStatesArray:k,logos:Va({},this.pb),pixelRatio:this.qb,pixelToCoordinateMatrix:this.rb,postRenderFunctions:[],size:f,skippedFeatureUids:this.sb, -tileQueue:this.la,time:b,usedTiles:{},viewState:e,viewHints:h,wantedTiles:{}}}if(h){b=this.A;c=f=0;for(d=b.length;c<d;++c)g=b[c],g(this,h)&&(b[f++]=g);b.length=f;h.extent=Yb(e.center,e.resolution,e.rotation,h.size)}this.b=h;this.D.kb(h);h&&(h.animate&&this.render(),Array.prototype.push.apply(this.da,h.postRenderFunctions),0!==this.A.length||h.viewHints[0]||h.viewHints[1]||Qb(h.extent,this.ka)||(T(this,new ue("moveend",this,h)),Lb(h.extent,this.ka)));T(this,new ue("postrender",this,h));c=e=this.Ad; -this&&(c=ma(e,this));!ga(x.setImmediate)||x.Window&&x.Window.prototype&&!W("Edge")&&x.Window.prototype.setImmediate==x.setImmediate?(mf||(mf=nf()),mf(c)):x.setImmediate(c)}; -n.nb=function(){var b=this.Fa();if(b){var c=Zd(b),d=Hd&&b.currentStyle,e;if(e=d)Xd(c),e=!0;if(e&&"auto"!=d.width&&"auto"!=d.height&&!d.boxSizing)c=qe(b,d.width,"width","pixelWidth"),b=qe(b,d.height,"height","pixelHeight"),b=new Wd(c,b);else{d=new Wd(b.offsetWidth,b.offsetHeight);if(Hd){c=re(b,"paddingLeft");e=re(b,"paddingRight");var f=re(b,"paddingTop"),g=re(b,"paddingBottom"),c=new ke(f,e,g,c)}else c=le(b,"paddingLeft"),e=le(b,"paddingRight"),f=le(b,"paddingTop"),g=le(b,"paddingBottom"),c=new ke(parseFloat(f), -parseFloat(e),parseFloat(g),parseFloat(c));!Hd||9<=Number(Td)?(e=le(b,"borderLeftWidth"),f=le(b,"borderRightWidth"),g=le(b,"borderTopWidth"),b=le(b,"borderBottomWidth"),b=new ke(parseFloat(g),parseFloat(f),parseFloat(b),parseFloat(e))):(e=te(b,"borderLeft"),f=te(b,"borderRight"),g=te(b,"borderTop"),b=te(b,"borderBottom"),b=new ke(g,f,b,e));b=new Wd(d.width-b.left-c.left-c.right-b.right,d.height-b.top-c.top-c.bottom-b.bottom)}this.set("size",[b.width,b.height])}else this.set("size",void 0)}; -function pl(b){var c=null;void 0!==b.keyboardEventTarget&&(c="string"===typeof b.keyboardEventTarget?document.getElementById(b.keyboardEventTarget):b.keyboardEventTarget);var d={},e={};if(void 0===b.logo||"boolean"===typeof b.logo&&b.logo)e["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAHGAAABxgEXwfpGAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAhNQTFRF////AP//AICAgP//AFVVQECA////K1VVSbbbYL/fJ05idsTYJFtbbcjbJllmZszWWMTOIFhoHlNiZszTa9DdUcHNHlNlV8XRIVdiasrUHlZjIVZjaMnVH1RlIFRkH1RkH1ZlasvYasvXVsPQH1VkacnVa8vWIVZjIFRjVMPQa8rXIVVkXsXRsNveIFVkIFZlIVVj3eDeh6GmbMvXH1ZkIFRka8rWbMvXIFVkIFVjIFVkbMvWH1VjbMvWIFVlbcvWIFVla8vVIFVkbMvWbMvVH1VkbMvWIFVlbcvWIFVkbcvVbMvWjNPbIFVkU8LPwMzNIFVkbczWIFVkbsvWbMvXIFVkRnB8bcvW2+TkW8XRIFVkIlZlJVloJlpoKlxrLl9tMmJwOWd0Omh1RXF8TneCT3iDUHiDU8LPVMLPVcLPVcPQVsPPVsPQV8PQWMTQWsTQW8TQXMXSXsXRX4SNX8bSYMfTYcfTYsfTY8jUZcfSZsnUaIqTacrVasrVa8jTa8rWbI2VbMvWbcvWdJObdcvUdszUd8vVeJaee87Yfc3WgJyjhqGnitDYjaarldPZnrK2oNbborW5o9bbo9fbpLa6q9ndrL3ArtndscDDutzfu8fJwN7gwt7gxc/QyuHhy+HizeHi0NfX0+Pj19zb1+Tj2uXk29/e3uLg3+Lh3+bl4uXj4ufl4+fl5Ofl5ufl5ujm5+jmySDnBAAAAFp0Uk5TAAECAgMEBAYHCA0NDg4UGRogIiMmKSssLzU7PkJJT1JTVFliY2hrdHZ3foSFhYeJjY2QkpugqbG1tre5w8zQ09XY3uXn6+zx8vT09vf4+Pj5+fr6/P39/f3+gz7SsAAAAVVJREFUOMtjYKA7EBDnwCPLrObS1BRiLoJLnte6CQy8FLHLCzs2QUG4FjZ5GbcmBDDjxJBXDWxCBrb8aM4zbkIDzpLYnAcE9VXlJSWlZRU13koIeW57mGx5XjoMZEUqwxWYQaQbSzLSkYGfKFSe0QMsX5WbjgY0YS4MBplemI4BdGBW+DQ11eZiymfqQuXZIjqwyadPNoSZ4L+0FVM6e+oGI6g8a9iKNT3o8kVzNkzRg5lgl7p4wyRUL9Yt2jAxVh6mQCogae6GmflI8p0r13VFWTHBQ0rWPW7ahgWVcPm+9cuLoyy4kCJDzCm6d8PSFoh0zvQNC5OjDJhQopPPJqph1doJBUD5tnkbZiUEqaCnB3bTqLTFG1bPn71kw4b+GFdpLElKIzRxxgYgWNYc5SCENVHKeUaltHdXx0dZ8uBI1hJ2UUDgq82CM2MwKeibqAvSO7MCABq0wXEPiqWEAAAAAElFTkSuQmCC"]= -"http://openlayers.org/";else{var f=b.logo;"string"===typeof f?e[f]="":ha(f)&&(e[f.src]=f.href)}f=b.layers instanceof hi?b.layers:new hi({layers:b.layers});d.layergroup=f;d.target=b.target;d.view=void 0!==b.view?b.view:new Wc;var f=$g,g;void 0!==b.renderer?Array.isArray(b.renderer)?g=b.renderer:"string"===typeof b.renderer&&(g=[b.renderer]):g=nl;var h,k;h=0;for(k=g.length;h<k;++h){var l=g[h];if("canvas"==l){if(Gf){f=lk;break}}else if("dom"==l){f=sk;break}else if("webgl"==l&&zf){f=kl;break}}var m; -void 0!==b.controls?m=Array.isArray(b.controls)?new md(b.controls.slice()):b.controls:m=ff();if(void 0!==b.interactions)g=Array.isArray(b.interactions)?new md(b.interactions.slice()):b.interactions;else{g={};h=new md;k=new kh;(void 0!==g.altShiftDragRotate?g.altShiftDragRotate:1)&&h.push(new Gh);(void 0!==g.doubleClickZoom?g.doubleClickZoom:1)&&h.push(new qh({delta:g.zoomDelta,duration:g.zoomDuration}));(void 0!==g.dragPan?g.dragPan:1)&&h.push(new Bh({kinetic:k}));(void 0!==g.pinchRotate?g.pinchRotate: -1)&&h.push(new $h);(void 0!==g.pinchZoom?g.pinchZoom:1)&&h.push(new di({duration:g.zoomDuration}));if(void 0!==g.keyboard?g.keyboard:1)h.push(new Uh),h.push(new Wh({delta:g.zoomDelta,duration:g.zoomDuration}));(void 0!==g.mouseWheelZoom?g.mouseWheelZoom:1)&&h.push(new Yh({duration:g.zoomDuration}));(void 0!==g.shiftDragZoom?g.shiftDragZoom:1)&&h.push(new Th({duration:g.zoomDuration}));g=h}b=void 0!==b.overlays?Array.isArray(b.overlays)?new md(b.overlays.slice()):b.overlays:new md;return{controls:m, -interactions:g,keyboardEventTarget:c,logos:e,overlays:b,te:f,values:d}}lc(mi);lc(ti);ti.forEach(function(b){mi.forEach(function(c){mc(b,c,ni);mc(c,b,oi)})});function rl(b){U.call(this);this.j=b.id;this.i=void 0!==b.insertFirst?b.insertFirst:!0;this.o=void 0!==b.stopEvent?b.stopEvent:!0;this.b=document.createElement("DIV");this.b.className="ol-overlay-container";this.b.style.position="absolute";this.autoPan=void 0!==b.autoPan?b.autoPan:!1;this.g=void 0!==b.autoPanAnimation?b.autoPanAnimation:{};this.h=void 0!==b.autoPanMargin?b.autoPanMargin:20;this.a={$a:"",hb:"",lb:"",mb:"",visible:!0};this.c=null;R(this,qb("element"),this.md,this);R(this,qb("map"), -this.vd,this);R(this,qb("offset"),this.wd,this);R(this,qb("position"),this.yd,this);R(this,qb("positioning"),this.zd,this);void 0!==b.element&&this.set("element",b.element);this.set("offset",void 0!==b.offset?b.offset:[0,0]);this.set("positioning",void 0!==b.positioning?b.positioning:"top-left");void 0!==b.position&&this.uc(b.position)}M(rl,U);n=rl.prototype;n.Da=function(){return this.j};n.md=function(){fe(this.b);var b=this.get("element");b&&this.b.appendChild(b)}; -n.vd=function(){this.c&&(he(this.b),P(this.c),this.c=null);var b=this.get("map");b&&(this.c=R(b,"postrender",this.render,this),sl(this),b=this.o?b.j:b.o,this.i?ge(b,this.b,0):b.appendChild(this.b))};n.render=function(){sl(this)};n.wd=function(){sl(this)}; -n.yd=function(){sl(this);if(void 0!==this.get("position")&&this.autoPan){var b=this.get("map");if(void 0!==b&&b.Fa()){var c=tl(b.Fa(),b.Ha()),d=this.get("element"),e=d.offsetWidth,f=d.currentStyle||x.getComputedStyle(d),e=e+(parseInt(f.marginLeft,10)+parseInt(f.marginRight,10)),f=d.offsetHeight,g=d.currentStyle||x.getComputedStyle(d),f=f+(parseInt(g.marginTop,10)+parseInt(g.marginBottom,10)),h=tl(d,[e,f]),d=this.h;Mb(c,h)||(e=h[0]-c[0],f=c[2]-h[2],g=h[1]-c[1],h=c[3]-h[3],c=[0,0],0>e?c[0]=e-d:0>f&& -(c[0]=Math.abs(f)+d),0>g?c[1]=g-d:0>h&&(c[1]=Math.abs(h)+d),0===c[0]&&0===c[1])||(d=b.O().ga(),e=Fh(b,d),c=[e[0]+c[0],e[1]+c[1]],this.g&&(this.g.source=d,b.ea(dd(this.g))),b.O().ma(b.pa(c)))}}};n.zd=function(){sl(this)};n.setMap=function(b){this.set("map",b)};n.uc=function(b){this.set("position",b)}; -function tl(b,c){var d=Zd(b),e=new Vd(0,0),f;f=d?Zd(d):document;var g;(g=!Hd||9<=Number(Td))||(Xd(f),g=!0);b!=(g?f.documentElement:f.body)&&(f=me(b),g=Xd(d).a,d=g.scrollingElement?g.scrollingElement:Kd?g.body||g.documentElement:g.documentElement,g=g.parentWindow||g.defaultView,d=Hd&&Rd("10")&&g.pageYOffset!=d.scrollTop?new Vd(d.scrollLeft,d.scrollTop):new Vd(g.pageXOffset||d.scrollLeft,g.pageYOffset||d.scrollTop),e.x=f.left+d.x,e.y=f.top+d.y);return[e.x,e.y,e.x+c[0],e.y+c[1]]} -function ul(b,c){b.a.visible!==c&&(pe(b.b,c),b.a.visible=c)} -function sl(b){var c=b.get("map"),d=b.get("position");if(void 0!==c&&c.b&&void 0!==d){var d=Fh(c,d),e=c.Ha(),c=b.b.style,f=b.get("offset"),g=b.get("positioning"),h=f[0],f=f[1];if("bottom-right"==g||"center-right"==g||"top-right"==g)""!==b.a.hb&&(b.a.hb=c.left=""),h=Math.round(e[0]-d[0]-h)+"px",b.a.lb!=h&&(b.a.lb=c.right=h);else{""!==b.a.lb&&(b.a.lb=c.right="");if("bottom-center"==g||"center-center"==g||"top-center"==g)h-=ne(b.b).width/2;h=Math.round(d[0]+h)+"px";b.a.hb!=h&&(b.a.hb=c.left=h)}if("bottom-left"== -g||"bottom-center"==g||"bottom-right"==g)""!==b.a.mb&&(b.a.mb=c.top=""),d=Math.round(e[1]-d[1]-f)+"px",b.a.$a!=d&&(b.a.$a=c.bottom=d);else{""!==b.a.$a&&(b.a.$a=c.bottom="");if("center-left"==g||"center-center"==g||"center-right"==g)f-=ne(b.b).height/2;d=Math.round(d[1]+f)+"px";b.a.mb!=d&&(b.a.mb=c.top=d)}ul(b,!0)}else ul(b,!1)};function vl(){this.defaultDataProjection=null}function wl(b,c,d){var e;d&&(e={dataProjection:d.dataProjection?d.dataProjection:b.f(Lj(c)),featureProjection:d.featureProjection});var f;e&&(f={featureProjection:e.featureProjection,dataProjection:e.dataProjection?e.dataProjection:b.defaultDataProjection,rightHanded:e.rightHanded},e.decimals&&(f.decimals=e.decimals));return f} -function xl(b,c){var d=c?kc(c.featureProjection):null,e=c?kc(c.dataProjection):null;if(d&&e&&!vc(d,e))if(b instanceof yc)d=b.o(e,d);else{e=wc(e,d);d=[b[0],b[1],b[0],b[3],b[2],b[1],b[2],b[3]];e(d,d,2);var f=[d[0],d[2],d[4],d[6]],g=[d[1],d[3],d[5],d[7]],d=Math.min.apply(null,f),e=Math.min.apply(null,g),f=Math.max.apply(null,f),g=Math.max.apply(null,g),d=Nb(d,e,f,g,void 0)}else d=b;return d};function yl(){this.defaultDataProjection=null}M(yl,vl);function Lj(b){return ha(b)?b:"string"===typeof b?(b=JSON.parse(b))?b:null:null}yl.prototype.U=function(){return"json"};yl.prototype.g=function(b,c){return this.a(Lj(b),wl(this,b,c))};yl.prototype.b=function(b,c){return this.h(Lj(b),wl(this,b,c))};function zl(b,c,d,e,f){var g=NaN,h=NaN,k=(d-c)/e;if(0!==k)if(1==k)g=b[c],h=b[c+1];else if(2==k)g=.5*b[c]+.5*b[c+e],h=.5*b[c+1]+.5*b[c+e+1];else{var h=b[c],k=b[c+1],l=0,g=[0],m;for(m=c+e;m<d;m+=e){var p=b[m],q=b[m+1],l=l+Math.sqrt((p-h)*(p-h)+(q-k)*(q-k));g.push(l);h=p;k=q}d=.5*l;l=0;m=g.length;for(p=!1;l<m;)h=l+(m-l>>1),k=+Ga(g[h],d),0>k?l=h+1:(m=h,p=!k);h=p?l:~l;0>h?(d=(d-g[-h-2])/(g[-h-1]-g[-h-2]),c+=(-h-2)*e,g=b[c],g=g+d*(b[c+e]-g),h=b[c+1],h=h+d*(b[c+e+1]-h)):(g=b[c+h*e],h=b[c+h*e+1])}return f? -(f[0]=g,f[1]=h,f):[g,h]};function Al(b,c){Ac.call(this);this.c=null;this.j=-1;this.X(b,c)}M(Al,Ac);n=Al.prototype;n.clone=function(){var b=new Al(null);V(b,this.g,this.a.slice());b.w();return b};n.oa=function(){return Gc(this.a,0,this.a.length,this.b)};function Wi(b){if(b.j!=b.f){var c;c=zl(b.a,0,b.a.length,b.b,b.c);b.c=c;b.j=b.f}return b.c}n.Ea=function(b){var c=[];c.length=Ic(this.a,0,this.a.length,this.b,b,c,0);b=new Al(null);V(b,"XY",c);b.w();return b};n.U=function(){return"LineString"}; -n.X=function(b,c){b?(Cc(this,c,b,1),this.a||(this.a=[]),this.a.length=Ec(this.a,0,b,this.b)):V(this,"XY",null);this.w()};function Bl(b,c){Ac.call(this);this.c=[];this.X(b,c)}M(Bl,Ac);n=Bl.prototype;n.clone=function(){var b=new Bl(null),c=this.c.slice();V(b,this.g,this.a.slice());b.c=c;b.w();return b};n.oa=function(){return Hc(this.a,0,this.c,this.b)};n.Ta=function(){return this.c};function Xi(b){var c=[],d=b.a,e=0,f=b.c;b=b.b;var g,h;g=0;for(h=f.length;g<h;++g){var k=f[g],e=zl(d,e,k,b);Ja(c,e);e=k}return c} -n.Ea=function(b){var c=[],d=[],e=this.a,f=this.c,g=this.b,h=0,k=0,l,m;l=0;for(m=f.length;l<m;++l){var p=f[l],k=Ic(e,h,p,g,b,c,k);d.push(k);h=p}c.length=k;b=new Bl(null);V(b,"XY",c);b.c=d;b.w();return b};n.U=function(){return"MultiLineString"};n.X=function(b,c){if(b){Cc(this,c,b,2);this.a||(this.a=[]);var d=Fc(this.a,0,b,this.b,this.c);this.a.length=0===d.length?0:d[d.length-1]}else d=this.c,V(this,"XY",null),this.c=d;this.w()};function Cl(b,c){Ac.call(this);this.X(b,c)}M(Cl,Ac);Cl.prototype.clone=function(){var b=new Cl(null);V(b,this.g,this.a.slice());b.w();return b};Cl.prototype.oa=function(){return Gc(this.a,0,this.a.length,this.b)};Cl.prototype.U=function(){return"MultiPoint"};Cl.prototype.X=function(b,c){b?(Cc(this,c,b,1),this.a||(this.a=[]),this.a.length=Ec(this.a,0,b,this.b)):V(this,"XY",null);this.w()};function Dl(b,c){Ac.call(this);this.c=[];this.A=-1;this.D=null;this.G=-1;this.j=null;this.X(b,c)}M(Dl,Ac);n=Dl.prototype;n.clone=function(){for(var b=new Dl(null),c=this.c.length,d=Array(c),e=0;e<c;++e)d[e]=this.c[e].slice();V(b,this.g,this.a.slice());b.c=d;b.w();return b};n.oa=function(b){var c;void 0!==b?(c=Yi(this).slice(),Rc(c,this.c,this.b,b)):c=this.a;b=c;c=this.c;var d=this.b,e=0,f=[],g=0,h,k;h=0;for(k=c.length;h<k;++h){var l=c[h];f[g++]=Hc(b,e,l,d,f[g]);e=l[l.length-1]}f.length=g;return f}; -function Zi(b){if(b.A!=b.f){var c=b.a,d=b.c,e=b.b,f=0,g=[],h,k,l=Ib();h=0;for(k=d.length;h<k;++h){var m=d[h],l=c,p=m[0],q=e,r=Ob(void 0),l=Sb(r,l,f,p,q);g.push((l[0]+l[2])/2,(l[1]+l[3])/2);f=m[m.length-1]}c=Yi(b);d=b.c;e=b.b;h=0;k=[];m=0;for(l=d.length;m<l;++m)f=d[m],k=Nc(c,h,f,e,g,2*m,k),h=f[f.length-1];b.D=k;b.A=b.f}return b.D} -function Yi(b){if(b.G!=b.f){var c=b.a,d;a:{d=b.c;var e,f;e=0;for(f=d.length;e<f;++e)if(!Pc(c,d[e],b.b,void 0)){d=!1;break a}d=!0}d?b.j=c:(b.j=c.slice(),b.j.length=Rc(b.j,b.c,b.b));b.G=b.f}return b.j}n.Ea=function(b){var c=[],d=[],e=this.a,f=this.c,g=this.b;b=Math.sqrt(b);var h=0,k=0,l,m;l=0;for(m=f.length;l<m;++l){var p=f[l],q=[],k=Jc(e,h,p,g,b,c,k,q);d.push(q);h=p[p.length-1]}c.length=k;e=new Dl(null);V(e,"XY",c);e.c=d;e.w();return e};n.U=function(){return"MultiPolygon"}; -n.X=function(b,c){if(b){Cc(this,c,b,3);this.a||(this.a=[]);var d=this.a,e=this.b,f=this.c,g=0,f=f?f:[],h=0,k,l;k=0;for(l=b.length;k<l;++k)g=Fc(d,g,b[k],e,f[h]),f[h++]=g,g=g[g.length-1];f.length=h;0===f.length?this.a.length=0:(d=f[f.length-1],this.a.length=0===d.length?0:d[d.length-1])}else d=this.c,V(this,"XY",null),this.c=d;this.w()};function El(b){b=b?b:{};this.defaultDataProjection=null;this.c=b.geometryName}M(El,yl);function Fl(b){var c="XY";!0===b.hasZ&&!0===b.hasM?c="XYZM":!0===b.hasZ?c="XYZ":!0===b.hasM&&(c="XYM");return c} -var Gl={Point:function(b){return void 0!==b.m&&void 0!==b.z?new Lc([b.x,b.y,b.z,b.m],"XYZM"):void 0!==b.z?new Lc([b.x,b.y,b.z],"XYZ"):void 0!==b.m?new Lc([b.x,b.y,b.m],"XYM"):new Lc([b.x,b.y])},LineString:function(b){return new Al(b.paths[0],Fl(b))},Polygon:function(b){return new Sc(b.rings,Fl(b))},MultiPoint:function(b){return new Cl(b.points,Fl(b))},MultiLineString:function(b){return new Bl(b.paths,Fl(b))},MultiPolygon:function(b){return new Dl(b.rings,Fl(b))}}; -El.prototype.a=function(b,c){var d;if(d=b.geometry){var e;if(ea(d.x)&&ea(d.y))e="Point";else if(d.points)e="MultiPoint";else if(d.paths)e=1===d.paths.length?"LineString":"MultiLineString";else if(d.rings){var f=d.rings,g=Fl(d),h=[];e=[];var k,l;k=0;for(l=f.length;k<l;++k){var m=Ia(f[k]);Oc(m,0,m.length,g.length)?h.push([f[k]]):e.push(f[k])}for(;e.length;){f=e.shift();g=!1;for(k=h.length-1;0<=k;k--)if(Mb((new Kc(h[k][0])).C(),(new Kc(f)).C())){h[k].push(f);g=!0;break}g||h.push([f.reverse()])}d=Va({}, -d);1===h.length?(e="Polygon",d.rings=h[0]):(e="MultiPolygon",d.rings=h)}d=xl((0,Gl[e])(d),c)}else d=null;h=new Gj;this.c&&Ij(h,this.c);Hj(h,d);c&&c.Jb&&b.attributes[c.Jb]&&(h.g=b.attributes[c.Jb],h.w());b.attributes&&h.l(b.attributes);return h};El.prototype.h=function(b,c){var d=c?c:{};if(b.features){var e=[],f=b.features,g,h;d.Jb=b.objectIdFieldName;g=0;for(h=f.length;g<h;++g)e.push(this.a(f[g],d));return e}return[this.a(b,d)]}; -El.prototype.f=function(b){return b.spatialReference&&b.spatialReference.wkid?kc("EPSG:"+b.spatialReference.wkid):null};function Hl(b){yc.call(this);this.a=b?b:null;Il(this)}M(Hl,yc);function Jl(b){var c,d;if(b.a)for(c=0,d=b.a.length;c<d;++c)fb(b.a[c],"change",b.w,b)}function Il(b){var c,d;if(b.a)for(c=0,d=b.a.length;c<d;++c)R(b.a[c],"change",b.w,b)}n=Hl.prototype;n.clone=function(){var b=new Hl(null),c=this.a,d=[],e,f;e=0;for(f=c.length;e<f;++e)d.push(c[e].clone());Jl(b);b.a=d;Il(b);b.w();return b};n.ab=function(b){Ob(b);for(var c=this.a,d=0,e=c.length;d<e;++d)Rb(b,c[d].C());return b}; -n.Hb=function(b){this.s!=this.f&&(Wa(this.h),this.i=0,this.s=this.f);if(0>b||0!==this.i&&b<this.i)return this;var c=b.toString();if(this.h.hasOwnProperty(c))return this.h[c];var d=[],e=this.a,f=!1,g,h;g=0;for(h=e.length;g<h;++g){var k=e[g],l=k.Hb(b);d.push(l);l!==k&&(f=!0)}if(f)return b=new Hl(null),Jl(b),b.a=d,Il(b),b.w(),this.h[c]=b;this.i=b;return this};n.U=function(){return"GeometryCollection"};n.rotate=function(b,c){for(var d=this.a,e=0,f=d.length;e<f;++e)d[e].rotate(b,c);this.w()}; -n.wb=function(b){var c=this.a,d,e;d=0;for(e=c.length;d<e;++d)c[d].wb(b);this.w()};n.K=function(){Jl(this);Hl.Y.K.call(this)};function Kl(b){b=b?b:{};this.defaultDataProjection=null;this.defaultDataProjection=kc(b.defaultDataProjection?b.defaultDataProjection:"EPSG:4326");this.c=b.geometryName}M(Kl,yl);function Ll(b,c){return b?xl((0,Ml[b.type])(b),c):null} -var Ml={Point:function(b){return new Lc(b.coordinates)},LineString:function(b){return new Al(b.coordinates)},Polygon:function(b){return new Sc(b.coordinates)},MultiPoint:function(b){return new Cl(b.coordinates)},MultiLineString:function(b){return new Bl(b.coordinates)},MultiPolygon:function(b){return new Dl(b.coordinates)},GeometryCollection:function(b,c){var d=b.geometries.map(function(b){return Ll(b,c)});return new Hl(d)}}; -Kl.prototype.a=function(b,c){var d=Ll(b.geometry,c),e=new Gj;this.c&&Ij(e,this.c);Hj(e,d);void 0!==b.id&&(e.g=b.id,e.w());b.properties&&e.l(b.properties);return e};Kl.prototype.h=function(b,c){if("Feature"==b.type)return[this.a(b,c)];if("FeatureCollection"==b.type){var d=[],e=b.features,f,g;f=0;for(g=e.length;f<g;++f)d.push(this.a(e[f],c));return d}return[]};Kl.prototype.f=function(b){return(b=b.crs)?"name"==b.type?kc(b.properties.name):"EPSG"==b.type?kc("EPSG:"+b.properties.code):null:this.defaultDataProjection};function Nl(b,c,d){if("array"==ba(c))for(var e=0;e<c.length;e++)Nl(b,String(c[e]),d);else null!=c&&d.push("&",b,""===c?"":"=",encodeURIComponent(String(c)))};function Ol(b,c,d){Ac.call(this);Pl(this,b,c?c:0,d)}M(Ol,Ac);Ol.prototype.clone=function(){var b=new Ol(null);V(b,this.g,this.a.slice());b.w();return b};Ol.prototype.ab=function(b){var c=this.a,d=c[this.b]-c[0];return Nb(c[0]-d,c[1]-d,c[0]+d,c[1]+d,b)};Ol.prototype.U=function(){return"Circle"};function Pl(b,c,d,e){if(c){Cc(b,e,c,0);b.a||(b.a=[]);e=b.a;c=Dc(e,c);e[c++]=e[0]+d;var f;d=1;for(f=b.b;d<f;++d)e[c++]=e[d];e.length=c}else V(b,"XY",null);b.w()};function Ql(b,c,d,e,f){Ce.call(this,b,c);this.g=d;this.b=new Image;null!==e&&(this.b.crossOrigin=e);this.f={};this.c=null;this.h=f}M(Ql,Ce);n=Ql.prototype;n.K=function(){1==this.state&&Rl(this);this.a&&ib(this.a);this.state=5;De(this);Ql.Y.K.call(this)};n.S=function(b){if(void 0!==b){var c=I(b);if(c in this.f)return this.f[c];b=Za(this.f)?this.b:this.b.cloneNode(!1);return this.f[c]=b}return this.b};n.getKey=function(){return this.g};n.Yd=function(){this.state=3;Rl(this);De(this)}; -n.Zd=function(){this.state=this.b.naturalWidth&&this.b.naturalHeight?2:4;Rl(this);De(this)};n.load=function(){0==this.state&&(this.state=1,De(this),this.c=[R(this.b,"error",this.Yd,this,!0),R(this.b,"load",this.Zd,this,!0)],this.h(this,this.g))};function Rl(b){b.c.forEach(P);b.c=null};function Sl(b,c){S.call(this,b);this.feature=c}M(Sl,S); -function Tl(b){yh.call(this,{handleDownEvent:Ul,handleEvent:Vl,handleUpEvent:Wl});this.R=null;this.o=!1;this.wa=b.source?b.source:null;this.la=b.features?b.features:null;this.Zc=b.snapTolerance?b.snapTolerance:12;this.D=b.type;this.b=Xl(this.D);this.ka=b.minPoints?b.minPoints:this.b===Yl?3:2;this.da=b.maxPoints?b.maxPoints:Infinity;var c=b.geometryFunction;if(!c)if("Circle"===this.D)c=function(b,c){var d=c?c:new Ol([NaN,NaN]),h=b[0],k=b[1],l=h[0]-k[0],h=h[1]-k[1];Pl(d,b[0],Math.sqrt(l*l+h*h));return d}; -else{var d,c=this.b;c===Zl?d=Lc:c===am?d=Al:c===Yl&&(d=Sc);c=function(b,c){var g=c;g?g.X(b):g=new d(b);return g}}this.u=c;this.A=this.i=this.a=this.j=this.g=this.h=null;this.dd=b.clickTolerance?b.clickTolerance*b.clickTolerance:36;this.Z=new Y({source:new Uj({useSpatialIndex:!1,wrapX:b.wrapX?b.wrapX:!1}),style:b.style?b.style:bm()});this.va=b.geometryName;this.sb=b.condition?b.condition:uh;this.aa=b.freehandCondition?b.freehandCondition:vh;R(this,qb("active"),this.Ca,this)}M(Tl,yh); -function bm(){var b=Oi();return function(c){return b[c.M().U()]}}Tl.prototype.setMap=function(b){Tl.Y.setMap.call(this,b);this.Ca()};function Vl(b){this.b!==am&&this.b!==Yl||!this.aa(b)||(this.o=!0);var c=!this.o;this.o&&b.type===Bg?(cm(this,b),c=!1):b.type===Ag?c=dm(this,b):b.type===ug&&(c=!1);return zh.call(this,b)&&c}function Ul(b){return this.sb(b)?(this.R=b.pixel,!0):this.o?(this.R=b.pixel,this.h||em(this,b),!0):!1} -function Wl(b){this.o=!1;var c=this.R,d=b.pixel,e=c[0]-d[0],c=c[1]-d[1],d=!0;e*e+c*c<=this.dd&&(dm(this,b),this.h?this.b===fm?gm(this):hm(this,b)?gm(this):cm(this,b):(em(this,b),this.b===Zl&&gm(this)),d=!1);return d} -function dm(b,c){if(b.h){var d=c.coordinate,e=b.g.M(),f;b.b===Zl?f=b.a:b.b===Yl?(f=b.a[0],f=f[f.length-1],hm(b,c)&&(d=b.h.slice())):(f=b.a,f=f[f.length-1]);f[0]=d[0];f[1]=d[1];b.u(b.a,e);b.j&&b.j.M().X(d);e instanceof Sc&&b.b!==Yl?(b.i||(b.i=new Gj(new Al(null))),0>=e.c.length?e=null:(d=new Kc(null),V(d,e.g,e.a.slice(0,e.c[0])),d.w(),e=d),d=b.i.M(),V(d,e.g,e.a),d.w()):b.A&&(d=b.i.M(),d.X(b.A));im(b)}else e=c.coordinate.slice(),b.j?b.j.M().X(e):(b.j=new Gj(new Lc(e)),im(b));return!0} -function hm(b,c){var d=!1;if(b.g){var e=!1,f=[b.h];b.b===am?e=b.a.length>b.ka:b.b===Yl&&(e=b.a[0].length>b.ka,f=[b.a[0][0],b.a[0][b.a[0].length-2]]);if(e)for(var e=c.map,g=0,h=f.length;g<h;g++){var k=f[g],l=Fh(e,k),m=c.pixel,d=m[0]-l[0],l=m[1]-l[1],m=b.o&&b.aa(c)?1:b.Zc;if(d=Math.sqrt(d*d+l*l)<=m){b.h=k;break}}}return d} -function em(b,c){var d=c.coordinate;b.h=d;b.b===Zl?b.a=d.slice():b.b===Yl?(b.a=[[d.slice(),d.slice()]],b.A=b.a[0]):(b.a=[d.slice(),d.slice()],b.b===fm&&(b.A=b.a));b.A&&(b.i=new Gj(new Al(b.A)));d=b.u(b.a);b.g=new Gj;b.va&&Ij(b.g,b.va);Hj(b.g,d);im(b);T(b,new Sl("drawstart",b.g))} -function cm(b,c){var d=c.coordinate,e=b.g.M(),f,g;if(b.b===am)b.h=d.slice(),g=b.a,g.push(d.slice()),f=g.length>b.da,b.u(g,e);else if(b.b===Yl){g=b.a[0];g.push(d.slice());if(f=g.length>b.da)b.h=g[0];b.u(b.a,e)}im(b);f&&gm(b)} -function gm(b){var c=jm(b),d=b.a,e=c.M();b.b===am?(d.pop(),b.u(d,e)):b.b===Yl&&(d[0].pop(),d[0].push(d[0][0]),b.u(d,e));"MultiPoint"===b.D?Hj(c,new Cl([d])):"MultiLineString"===b.D?Hj(c,new Bl([d])):"MultiPolygon"===b.D&&Hj(c,new Dl([d]));T(b,new Sl("drawend",c));b.la&&b.la.push(c);b.wa&&b.wa.ub(c)}function jm(b){b.h=null;var c=b.g;c&&(b.g=null,b.j=null,b.i=null,b.Z.W().clear(!0));return c}Tl.prototype.v=cc; -function im(b){var c=[];b.g&&c.push(b.g);b.i&&c.push(b.i);b.j&&c.push(b.j);b=b.Z.W();b.clear(!0);b.vb(c)}Tl.prototype.Ca=function(){var b=this.T,c=this.get("active");b&&c||jm(this);this.Z.setMap(c?b:null)};function Xl(b){var c;"Point"===b||"MultiPoint"===b?c=Zl:"LineString"===b||"MultiLineString"===b?c=am:"Polygon"===b||"MultiPolygon"===b?c=Yl:"Circle"===b&&(c=fm);return c}var Zl="Point",am="LineString",Yl="Polygon",fm="Circle";function km(b,c,d,e,f,g,h,k,l,m,p){Ce.call(this,f,0);this.u=void 0!==p?p:!1;this.s=h;this.o=k;this.c=null;this.f={};this.g=c;this.l=e;this.i=g?g:f;this.b=[];this.Ja=null;this.h=0;g=Ke(e,this.i);k=this.l.C();f=this.g.C();g=k?Zb(g,k):g;if(0===Tb(g))this.state=4;else if((k=b.C())&&(f?f=Zb(f,k):f=k),k=e.J(this.i[0]),p=Xb(g),e=wc(d,b)(p,void 0,p.length),k=d.getPointResolution(k,p),p=oc(d),void 0!==p&&(k*=p),p=oc(b),void 0!==p&&(k/=p),e=b.getPointResolution(k,e)/k,isFinite(e)&&0<e&&(k/=e),e=k,!isFinite(e)|| -0>=e)this.state=4;else if(this.j=new Dj(b,d,g,f,e*(void 0!==m?m:.5)),0===this.j.c.length)this.state=4;else if(this.h=Re(c,e),d=Fj(this.j),f&&(b.a?(d[1]=Ba(d[1],f[1],f[3]),d[3]=Ba(d[3],f[1],f[3])):d=Zb(d,f)),Tb(d))if(b=Le(c,d,this.h),100>(b.b-b.a+1)*(b.c-b.f+1)){for(c=b.a;c<=b.b;c++)for(d=b.f;d<=b.c;d++)(m=l(this.h,c,d,h))&&this.b.push(m);0===this.b.length&&(this.state=4)}else this.state=3;else this.state=4}M(km,Ce);km.prototype.K=function(){1==this.state&&(this.Ja.forEach(P),this.Ja=null);km.Y.K.call(this)}; -km.prototype.S=function(b){if(void 0!==b){var c=I(b);if(c in this.f)return this.f[c];b=Za(this.f)?this.c:this.c.cloneNode(!1);return this.f[c]=b}return this.c}; -km.prototype.Oc=function(){var b=[];this.b.forEach(function(c){c&&2==c.N()&&b.push({extent:Ke(this.g,c.L),image:c.S()})},this);this.b.length=0;if(0===b.length)this.state=3;else{var c=this.i[0],d=Qe(this.l,c),e=ea(d)?d:d[0],d=ea(d)?d:d[1],c=this.l.J(c),f=this.g.J(this.h),g=Ke(this.l,this.i);this.c=Cj(e,d,this.s,f,this.g.C(),c,g,this.j,b,this.o,this.u);this.state=2}De(this)}; -km.prototype.load=function(){if(0==this.state){this.state=1;De(this);var b=0;this.Ja=[];this.b.forEach(function(c){var d=c.N();if(0==d||1==d){b++;var e;e=R(c,"change",function(){var d=c.N();if(2==d||3==d||4==d)P(e),b--,0===b&&(this.Ja.forEach(P),this.Ja=null,this.Oc())},this);this.Ja.push(e)}},this);this.b.forEach(function(b){0==b.N()&&b.load()});0===b&&x.setTimeout(this.Oc.bind(this),0)}};function lm(b){jk.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,extent:b.extent,logo:b.logo,opaque:b.opaque,projection:b.projection,state:b.state,tileGrid:b.tileGrid,tileLoadFunction:b.tileLoadFunction?b.tileLoadFunction:mm,tilePixelRatio:b.tilePixelRatio,tileUrlFunction:b.tileUrlFunction,url:b.url,urls:b.urls,wrapX:b.wrapX});this.crossOrigin=void 0!==b.crossOrigin?b.crossOrigin:null;this.tileClass=void 0!==b.tileClass?b.tileClass:Ql;this.b={};this.o={};this.T=b.reprojectionErrorThreshold} -M(lm,jk);n=lm.prototype;n.Gc=function(){if(Ae(this.a))return!0;for(var b in this.b)if(Ae(this.b[b]))return!0;return!1};n.Hc=function(b,c){var d=this.Ua(b);Be(this.a,this.a==d?c:{});for(var e in this.b){var f=this.b[e];Be(f,f==d?c:{})}};n.bb=function(){return 0};n.Fb=function(b){return this.c&&b&&!vc(this.c,b)?!1:lm.Y.Fb.call(this,b)};n.ia=function(b){var c=this.c;return!this.tileGrid||c&&!vc(c,b)?(c=I(b).toString(),c in this.o||(this.o[c]=Te(b)),this.o[c]):this.tileGrid}; -n.Ua=function(b){var c=this.c;if(!c||vc(c,b))return this.a;b=I(b).toString();b in this.b||(this.b[b]=new ze);return this.b[b]};function nm(b,c,d,e,f,g){c=[c,d,e];f=(d=Ze(b,c,g))?b.tileUrlFunction(d,f,g):void 0;f=new b.tileClass(c,void 0!==f?0:4,void 0!==f?f:"",b.crossOrigin,b.tileLoadFunction);f.key="";R(f,"change",b.D,b);return f} -function Ug(b,c,d,e,f,g){if(b.c&&g&&!vc(b.c,g)){var h=b.Ua(g);d=[c,d,e];c=b.cb.apply(b,d);if(xe(h,c))return h.get(c);var k=b.c;e=b.ia(k);var l=b.ia(g),m=Ze(b,d,g);b=new km(k,e,g,l,d,m,b.eb(f),0,function(b,c,d,e){return om(this,b,c,d,e,k)}.bind(b),b.T,!1);h.set(c,b);return b}return om(b,c,d,e,f,g)} -function om(b,c,d,e,f,g){var h=null,k=b.cb(c,d,e);if(xe(b.a,k)){if(h=b.a.get(k),""!=h.key){var l=h;h.a&&""==h.a.key?(h=h.a,2==l.N()&&(h.a=l)):(h=nm(b,c,d,e,f,g),2==l.N()?h.a=l:l.a&&2==l.a.N()&&(h.a=l.a,l.a=null));h.a&&(h.a.a=null);b.a.replace(k,h)}}else h=nm(b,c,d,e,f,g),b.a.set(k,h);return h}function mm(b,c){b.S().src=c};function pm(b){var c=void 0!==b.projection?b.projection:"EPSG:3857",d;if(void 0!==b.tileGrid)d=b.tileGrid;else{d={extent:Ue(c),maxZoom:b.maxZoom,minZoom:b.minZoom,tileSize:b.tileSize};var e={};Va(e,void 0!==d?d:{});void 0===e.extent&&(e.extent=kc("EPSG:3857").C());e.resolutions=Ve(e.extent,e.maxZoom,e.tileSize);delete e.maxZoom;d=new Ge(e)}lm.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,crossOrigin:b.crossOrigin,logo:b.logo,opaque:b.opaque,projection:c,reprojectionErrorThreshold:b.reprojectionErrorThreshold, -tileGrid:d,tileLoadFunction:b.tileLoadFunction,tilePixelRatio:b.tilePixelRatio,tileUrlFunction:b.tileUrlFunction,url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0})}M(pm,lm);function qm(b){b=b||{};var c;void 0!==b.attributions?c=b.attributions:c=[rm];pm.call(this,{attributions:c,cacheSize:b.cacheSize,crossOrigin:void 0!==b.crossOrigin?b.crossOrigin:"anonymous",opaque:void 0!==b.opaque?b.opaque:!0,maxZoom:void 0!==b.maxZoom?b.maxZoom:19,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",wrapX:b.wrapX})}M(qm,pm);var rm=new kd({html:'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'});function sm(b){b=b||{};var c=tm[b.layer];this.u=b.layer;pm.call(this,{attributions:c.attributions,cacheSize:b.cacheSize,crossOrigin:"anonymous",logo:"https://developer.mapquest.com/content/osm/mq_logo.png",maxZoom:c.maxZoom,reprojectionErrorThreshold:b.reprojectionErrorThreshold,opaque:c.opaque,tileLoadFunction:b.tileLoadFunction,url:void 0!==b.url?b.url:"https://otile{1-4}-s.mqcdn.com/tiles/1.0.0/"+this.u+"/{z}/{x}/{y}.jpg"})}M(sm,pm); -var um=new kd({html:'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a>'}),tm={osm:{maxZoom:19,opaque:!0,attributions:[um,rm]},sat:{maxZoom:18,opaque:!0,attributions:[um,new kd({html:"Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency"})]},hyb:{maxZoom:18,opaque:!1,attributions:[um,rm]}};function vm(b){b=b||{};lm.call(this,{attributions:b.attributions,cacheSize:b.cacheSize,crossOrigin:b.crossOrigin,logo:b.logo,projection:b.projection,reprojectionErrorThreshold:b.reprojectionErrorThreshold,tileGrid:b.tileGrid,tileLoadFunction:b.tileLoadFunction,url:b.url,urls:b.urls,wrapX:void 0!==b.wrapX?b.wrapX:!0});this.R=b.params||{};this.u=Ib()}M(vm,lm);vm.prototype.eb=function(b){return b}; -vm.prototype.g=function(b,c,d){var e=this.tileGrid;e||(e=this.ia(d));if(!(e.Gb().length<=b[0])){var f=Ke(e,b,this.u),g=sb(Qe(e,b[0]),this.h);1!=c&&(g=rb(g,c,this.h));e={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Va(e,this.R);var h;var k=this.urls;if(k){d=d.na.split(":").pop();e.SIZE=g[0]+","+g[1];e.BBOX=f.join(",");e.BBOXSR=d;e.IMAGESR=d;e.DPI=Math.round(e.DPI?e.DPI*c:90*c);b=[(1==k.length?k[0]:k[Da((b[1]<<b[0])+b[2],k.length)]).replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/, -"ImageServer/exportImage")];for(h in e)Nl(h,e[h],b);b[1]&&(h=b[0],c=h.indexOf("#"),0<=c&&(b.push(h.substr(c)),b[0]=h=h.substr(0,c)),c=h.indexOf("?"),0>c?b[1]="?":c==h.length-1&&(b[1]=void 0));h=b.join("")}else h=void 0;return h}};function wm(b){this.j=this.c=this.g=null;this.i=void 0!==b.fill?b.fill:null;this.I=[0,0];this.a=b.points;this.f=void 0!==b.radius?b.radius:b.radius1;this.h=void 0!==b.radius2?b.radius2:this.f;this.l=void 0!==b.angle?b.angle:0;this.b=void 0!==b.stroke?b.stroke:null;this.A=this.D=this.H=null;var c=b.atlasManager,d="",e="",f=0,g=null,h,k=0;this.b&&(h=wd(this.b.b),k=this.b.f,void 0===k&&(k=1),g=this.b.a,Ff||(g=null),e=this.b.g,void 0===e&&(e="round"),d=this.b.c,void 0===d&&(d="round"),f=this.b.h,void 0=== -f&&(f=10));var l=2*(this.f+k)+1,d={strokeStyle:h,Za:k,size:l,lineCap:d,lineDash:g,lineJoin:e,miterLimit:f};if(void 0===c){this.c=document.createElement("CANVAS");this.c.height=l;this.c.width=l;var c=l=this.c.width,m=this.c.getContext("2d");this.Lc(d,m,0,0);this.i?this.j=this.c:(m=this.j=document.createElement("CANVAS"),m.height=d.size,m.width=d.size,m=m.getContext("2d"),this.Kc(d,m,0,0))}else l=Math.round(l),(e=!this.i)&&(m=this.Kc.bind(this,d)),f=this.b?Gi(this.b):"-",g=this.i?Ai(this.i):"-",this.g&& -f==this.g[1]&&g==this.g[2]&&this.f==this.g[3]&&this.h==this.g[4]&&this.l==this.g[5]&&this.a==this.g[6]||(this.g=["r"+f+g+(void 0!==this.f?this.f.toString():"-")+(void 0!==this.h?this.h.toString():"-")+(void 0!==this.l?this.l.toString():"-")+(void 0!==this.a?this.a.toString():"-"),f,g,this.f,this.h,this.l,this.a]),m=c.add(this.g[0],l,l,this.Lc.bind(this,d),m),this.c=m.image,this.I=[m.offsetX,m.offsetY],c=m.image.width,this.j=e?m.Id:this.c;this.H=[l/2,l/2];this.D=[l,l];this.A=[c,c];Vg.call(this,{opacity:1, -rotateWithView:void 0!==b.rotateWithView?b.rotateWithView:!1,rotation:void 0!==b.rotation?b.rotation:0,scale:1,snapToPixel:void 0!==b.snapToPixel?b.snapToPixel:!0})}M(wm,Vg);n=wm.prototype;n.Sa=function(){return this.H};n.jb=function(){return this.j};n.S=function(){return this.c};n.Db=function(){return this.A};n.Ya=function(){return 2};n.fa=function(){return this.I};n.ya=function(){return this.D};n.Mb=N;n.load=N;n.Ub=N; -n.Lc=function(b,c,d,e){var f;c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();this.h!==this.f&&(this.a*=2);for(d=0;d<=this.a;d++)e=2*d*Math.PI/this.a-Math.PI/2+this.l,f=0===d%2?this.f:this.h,c.lineTo(b.size/2+f*Math.cos(e),b.size/2+f*Math.sin(e));this.i&&(c.fillStyle=zd(this.i.a),c.fill());this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.lineCap=b.lineCap,c.lineJoin=b.lineJoin,c.miterLimit=b.miterLimit,c.stroke());c.closePath()}; -n.Kc=function(b,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();this.h!==this.f&&(this.a*=2);var f;for(d=0;d<=this.a;d++)f=2*d*Math.PI/this.a-Math.PI/2+this.l,e=0===d%2?this.f:this.h,c.lineTo(b.size/2+e*Math.cos(f),b.size/2+e*Math.sin(f));c.fillStyle=vi;c.fill();this.b&&(c.strokeStyle=b.strokeStyle,c.lineWidth=b.Za,b.lineDash&&c.setLineDash(b.lineDash),c.stroke());c.closePath()};E("ol.format.GeoJSON",Kl,OPENLAYERS);Kl.prototype.readFeatures=Kl.prototype.b;Kl.prototype.readFeature=Kl.prototype.g;E("ol.format.EsriJSON",El,OPENLAYERS);El.prototype.readFeatures=El.prototype.b;El.prototype.readFeature=El.prototype.g;E("ol.style.Style",Ii,OPENLAYERS);E("ol.style.Circle",Hi,OPENLAYERS);E("ol.style.RegularShape",wm,OPENLAYERS);E("ol.style.Fill",zi,OPENLAYERS);E("ol.style.Stroke",Fi,OPENLAYERS);E("ol.style.Icon",Wg,OPENLAYERS); -E("ol.style.Text",function(b){b=b||{};this.a=b.font;this.g=b.rotation;this.h=b.scale;this.i=b.text;this.j=b.textAlign;this.B=b.textBaseline;this.c=void 0!==b.fill?b.fill:new zi({color:"#333"});this.l=void 0!==b.stroke?b.stroke:null;this.b=void 0!==b.offsetX?b.offsetX:0;this.f=void 0!==b.offsetY?b.offsetY:0},OPENLAYERS);E("ol.View",Wc,OPENLAYERS);Wc.prototype.on=Wc.prototype.V;Wc.prototype.getZoom=Wc.prototype.kd;Wc.prototype.setZoom=Wc.prototype.ue;Wc.prototype.getCenter=Wc.prototype.ga; -Wc.prototype.setCenter=Wc.prototype.ma;Wc.prototype.calculateExtent=Wc.prototype.dc;Wc.prototype.getProjection=Wc.prototype.ae;Wc.prototype.fit=Wc.prototype.fd;E("ol.control.defaults",ff,OPENLAYERS);E("ol.layer.Tile",X,OPENLAYERS);X.prototype.getVisible=X.prototype.Va;X.prototype.setVisible=X.prototype.wc;X.prototype.getZIndex=X.prototype.Pb;X.prototype.setZIndex=X.prototype.xc;X.prototype.getOpacity=X.prototype.Ob;X.prototype.setOpacity=X.prototype.vc;X.prototype.getSource=X.prototype.W; -X.prototype.setSource=X.prototype.Sb;X.prototype.on=X.prototype.V;E("ol.layer.Vector",Y,OPENLAYERS);Y.prototype.getVisible=Y.prototype.Va;Y.prototype.setVisible=Y.prototype.wc;Y.prototype.getSource=Y.prototype.W;Y.prototype.setStyle=Y.prototype.s;Y.prototype.getZIndex=Y.prototype.Pb;Y.prototype.setZIndex=Y.prototype.xc;Y.prototype.getOpacity=Y.prototype.Ob;Y.prototype.setOpacity=Y.prototype.vc;Y.prototype.getSource=Y.prototype.W;Y.prototype.setSource=Y.prototype.Sb;Y.prototype.on=Y.prototype.V; -E("ol.source.OSM",qm,OPENLAYERS);qm.prototype.refresh=qm.prototype.ra;E("ol.source.MapQuest",sm,OPENLAYERS);sm.prototype.refresh=sm.prototype.ra;E("ol.source.XYZ",pm,OPENLAYERS);pm.prototype.refresh=pm.prototype.ra;pm.prototype.setUrl=pm.prototype.s;pm.prototype.refresh=pm.prototype.ra;E("ol.Map",Z,OPENLAYERS);Z.prototype.on=Z.prototype.V;Z.prototype.getTarget=Z.prototype.Nb;Z.prototype.getTargetElement=Z.prototype.Fa;Z.prototype.getView=Z.prototype.O;Z.prototype.addOverlay=Z.prototype.cd; -Z.prototype.addLayer=Z.prototype.bd;Z.prototype.removeLayer=Z.prototype.pe;Z.prototype.getEventPixel=Z.prototype.nc;Z.prototype.hasFeatureAtPixel=Z.prototype.Hd;Z.prototype.getSize=Z.prototype.Ha;Z.prototype.updateSize=Z.prototype.nb;Z.prototype.forEachFeatureAtPixel=Z.prototype.hd;Z.prototype.addInteraction=Z.prototype.ad;Z.prototype.removeInteraction=Z.prototype.oe;Z.prototype.beforeRender=Z.prototype.ea;Z.prototype.addControl=Z.prototype.$c;Z.prototype.once=Z.prototype.Rc; -Z.prototype.renderSync=Z.prototype.se;E("ol.source.Vector",Uj,OPENLAYERS);Uj.prototype.getFeatures=Uj.prototype.ee;Uj.prototype.getExtent=Uj.prototype.C;Uj.prototype.refresh=Uj.prototype.ra;Uj.prototype.addFeatures=Uj.prototype.vb;Uj.prototype.addFeature=Uj.prototype.ub;Uj.prototype.clear=Uj.prototype.clear;Uj.prototype.forEachFeature=Uj.prototype.gd;Uj.prototype.refresh=Uj.prototype.ra;E("ol.source.TileArcGISRest",vm,OPENLAYERS);vm.prototype.refresh=vm.prototype.ra;E("ol.Overlay",rl,OPENLAYERS); -rl.prototype.setPosition=rl.prototype.uc;E("ol.Feature",Gj,OPENLAYERS);Gj.prototype.getProperties=Gj.prototype.ua;Gj.prototype.setProperties=Gj.prototype.l;Gj.prototype.getGeometry=Gj.prototype.M;E("ol.geom.Point",Lc,OPENLAYERS);Lc.prototype.transform=Lc.prototype.o;Lc.prototype.getCoordinates=Lc.prototype.oa;Lc.prototype.getExtent=Lc.prototype.C;E("ol.geom.Polygon",Sc,OPENLAYERS);Sc.prototype.getCoordinates=Sc.prototype.oa;Sc.prototype.getExtent=Sc.prototype.C;Sc.prototype.transform=Sc.prototype.o; -E("ol.geom.LineString",Al,OPENLAYERS);Al.prototype.getCoordinates=Al.prototype.oa;Al.prototype.getExtent=Al.prototype.C;Al.prototype.transform=Al.prototype.o;E("ol.proj.Projection",hc,OPENLAYERS);hc.prototype.getCode=hc.prototype.l;E("ol.interaction.Draw",Tl,OPENLAYERS);Tl.prototype.on=Tl.prototype.V;E("ol.animation.pan",dd,OPENLAYERS);E("ol.control.FullScreen",lf,OPENLAYERS); - return OPENLAYERS.ol; -})); - diff --git a/_src/ol/ol-config.json b/_src/ol/ol-config.json deleted file mode 100644 index 7acbe7c2a47ccff8c3592f48d6501ce3f06c7658..0000000000000000000000000000000000000000 --- a/_src/ol/ol-config.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "exports": [ - "ol.format.GeoJSON", - "ol.format.GeoJSON#readFeatures", - "ol.format.GeoJSON#readFeature", - "ol.format.EsriJSON", - "ol.format.EsriJSON#readFeatures", - "ol.format.EsriJSON#readFeature", - "ol.style.Style", - "ol.style.Circle", - "ol.style.RegularShape", - "ol.style.Fill", - "ol.style.Stroke", - "ol.style.Icon", - "ol.style.Text", - "ol.View", - "ol.View#on", - "ol.View#getZoom", - "ol.View#setZoom", - "ol.View#getCenter", - "ol.View#setCenter", - "ol.View#calculateExtent", - "ol.View#getProjection", - "ol.View#fit", - "ol.control.defaults", - "ol.layer.Tile", - "ol.layer.Tile#getVisible", - "ol.layer.Tile#setVisible", - "ol.layer.Tile#getZIndex", - "ol.layer.Tile#setZIndex", - "ol.layer.Tile#getOpacity", - "ol.layer.Tile#setOpacity", - "ol.layer.Tile#getSource", - "ol.layer.Tile#setSource", - "ol.layer.Tile#on", - "ol.layer.Vector", - "ol.layer.Vector#getVisible", - "ol.layer.Vector#setVisible", - "ol.layer.Vector#getSource", - "ol.layer.Vector#setStyle", - "ol.layer.Vector#getZIndex", - "ol.layer.Vector#setZIndex", - "ol.layer.Vector#getOpacity", - "ol.layer.Vector#setOpacity", - "ol.layer.Vector#getSource", - "ol.layer.Vector#setSource", - "ol.layer.Vector#on", - "ol.source.OSM", - "ol.source.OSM#refresh", - "ol.source.MapQuest", - "ol.source.MapQuest#refresh", - "ol.source.XYZ", - "ol.source.XYZ#refresh", - "ol.source.XYZ#setUrl", - "ol.source.XYZ#refresh", - "ol.Map", - "ol.Map#on", - "ol.Map#getTarget", - "ol.Map#getTargetElement", - "ol.Map#getView", - "ol.Map#addOverlay", - "ol.Map#addLayer", - "ol.Map#removeLayer", - "ol.Map#getEventPixel", - "ol.Map#hasFeatureAtPixel", - "ol.Map#getSize", - "ol.Map#updateSize", - "ol.Map#forEachFeatureAtPixel", - "ol.Map#addInteraction", - "ol.Map#removeInteraction", - "ol.Map#beforeRender", - "ol.Map#addControl", - "ol.Map#once", - "ol.Map#renderSync", - "ol.source.Vector", - "ol.source.Vector#getFeatures", - "ol.source.Vector#getExtent", - "ol.source.Vector#refresh", - "ol.source.Vector#addFeatures", - "ol.source.Vector#addFeature", - "ol.source.Vector#clear", - "ol.source.Vector#forEachFeature", - "ol.source.Vector#refresh", - "ol.source.TileArcGISRest", - "ol.source.TileArcGISRest#refresh", - "ol.Overlay", - "ol.Overlay#setPosition", - "ol.Feature", - "ol.Feature#getProperties", - "ol.Feature#setProperties", - "ol.Feature#getGeometry", - "ol.geom.Point", - "ol.geom.Point#transform", - "ol.geom.Point#getCoordinates", - "ol.geom.Point#getExtent", - "ol.geom.Polygon", - "ol.geom.Polygon#getCoordinates", - "ol.geom.Polygon#getExtent", - "ol.geom.Polygon#transform", - "ol.geom.LineString", - "ol.geom.LineString#getCoordinates", - "ol.geom.LineString#getExtent", - "ol.geom.LineString#transform", - "ol.proj.Projection", - "ol.proj.Projection#getCode", - "ol.interaction.Draw", - "ol.interaction.Draw#on", - "ol.animation.pan", - "ol.control.FullScreen" - ], - "compile": { - "externs": [ - "externs/bingmaps.js", - "externs/closure-compiler.js", - "externs/geojson.js", - "externs/oli.js", - "externs/olx.js", - "externs/proj4js.js", - "externs/tilejson.js", - "externs/topojson.js", - "externs/esrijson.js" - ], - "define": [ - "goog.array.ASSUME_NATIVE_FUNCTIONS=true", - "goog.dom.ASSUME_STANDARDS_MODE=true", - "goog.json.USE_NATIVE_JSON=true", - "goog.DEBUG=false" - ], - "jscomp_off": [ - "unknownDefines" - ], - "extra_annotation_name": [ - "api", "observable" - ], - "compilation_level": "ADVANCED_OPTIMIZATIONS", - "use_types_for_optimization": true, - "manage_closure_dependencies": true - }, - "umd": true -} diff --git a/_src/ol/ol.js b/_src/ol/ol.js deleted file mode 100644 index 4cf6e5333cda3216adeda271d23613d2c9817d80..0000000000000000000000000000000000000000 --- a/_src/ol/ol.js +++ /dev/null @@ -1,3 +0,0 @@ -const ol = require('./ol-build'); - -export default ol; \ No newline at end of file diff --git a/_src/olHelpers/SortedFeatures.js b/_src/olHelpers/SortedFeatures.js deleted file mode 100644 index bba3f45a8a08b38a6b3c5f5df1febdde14e7dfcb..0000000000000000000000000000000000000000 --- a/_src/olHelpers/SortedFeatures.js +++ /dev/null @@ -1,106 +0,0 @@ -/** - * Created by gavorhes on 12/23/2015. - */ -import provide from '../util/provide'; -let nm = provide('olHelpers'); - -/** - * take an array of features and sort by a given property name - */ -class SortedFeatures { - - /** - * - * @param {Array<ol.Feature>} features array of ol features - * @param {string} propertyName - the property name to use for lookup - */ - constructor(features, propertyName) { - this.sortedFeatures = features; - this.propertyName = propertyName; - - if (this.sortedFeatures.length > 0) { - this._propertyType = typeof this.sortedFeatures[0].getProperties()[this.propertyName]; - - let _this = this; - this.sortedFeatures.sort(function (a, b) { - if (_this._propertyType == 'number'){ - return (a['getProperties']()[_this.propertyName] - b['getProperties']()[_this.propertyName]); - } else if (_this._propertyType == 'string'){ - return (a['getProperties']()[_this.propertyName] > b['getProperties']()[_this.propertyName]); - } - }); - } - } - - /** - * recursive search to find the value - * @param {number|string} propertyValue - the property value to search for - * @param {boolean} [exactMatch=false] if only an exact match should be returned - * @param {Array} [sortedFeatures=this.sortedFeatures] - the candidate features - * @returns {ol.Feature|undefined} the feature matching the lookup - */ - getFeature(propertyValue, exactMatch, sortedFeatures) { - if (typeof sortedFeatures == 'undefined'){ - sortedFeatures = this.sortedFeatures; - } - - if (typeof exactMatch !== 'boolean'){ - exactMatch = false; - } - - if (sortedFeatures.length == 0){ - return undefined; - } - - if (sortedFeatures.length == 1){ - if (exactMatch){ - if (sortedFeatures[0].getProperties()[this.propertyName] == propertyValue){ - return sortedFeatures[0]; - } else { - return undefined; - } - } else { - return sortedFeatures[0]; - } - } - - let lowProp = sortedFeatures[0].getProperties()[this.propertyName]; - let highProp = sortedFeatures[sortedFeatures.length - 1].getProperties()[this.propertyName]; - - if (exactMatch){ - if (lowProp == propertyValue){ - return sortedFeatures[0]; - } else if (propertyValue < lowProp){ - return undefined; - } else if (highProp == propertyValue){ - return sortedFeatures[sortedFeatures.length - 1]; - } else if (propertyValue > highProp){ - return undefined; - } - } else { - if (propertyValue <= lowProp){ - return sortedFeatures[0]; - } else if (propertyValue >= highProp){ - return sortedFeatures[sortedFeatures.length - 1]; - } - } - - let midIndex = Math.floor(sortedFeatures.length / 2); - let midFeature = sortedFeatures[midIndex]; - let midProperty = midFeature.getProperties()[this.propertyName]; - - if (midProperty === propertyValue){ - return midFeature; - } - - if (propertyValue < midProperty){ - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(0, midIndex)); - } else { - return this.getFeature(propertyValue, exactMatch, sortedFeatures.slice(midIndex)); - } - } -} - -nm.SortedFeatures = SortedFeatures; -export default SortedFeatures; - diff --git a/_src/olHelpers/esriToOlStyle.js b/_src/olHelpers/esriToOlStyle.js deleted file mode 100644 index 48bacdb10b96edabe6ea5a8f079609c338d9d0f6..0000000000000000000000000000000000000000 --- a/_src/olHelpers/esriToOlStyle.js +++ /dev/null @@ -1,380 +0,0 @@ -/** - * Created by gavorhes on 1/4/2016. - */ -import provide from '../util/provide'; -import ol from '../ol/ol'; -const nm = provide('olHelpers.esriToOlStyle'); - -/** - * This callback is displayed as part of the Requester class. - * @callback styleFunc - * @param {ol.Feature} feat - openlayers feature - * @param {number} resolution - map resolution - */ - -/** - * - * @param {Array<number>} colorArray - input color array - * @param {number} opacity - the opacity 0 to 1 - * @returns {string} rgba string - * @private - */ -function _colorArrayToRgba(colorArray, opacity) { - "use strict"; - - return `rgba(${colorArray[0]},${colorArray[1]},${colorArray[2]},${opacity})`; -} - -/** - * escape html charcters - * @param {string} str - input string - * @returns {string} escaped string - */ -function htmlEscape(str) { - return String(str) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/</g, '<') - .replace(/>/g, '>'); -} - -nm.htmlEscape = htmlEscape; - - -class CommonSymbol { - - /** - * - * @param symbolObj - * @param {number} opacity - */ - constructor(symbolObj, opacity) { - this.symbolObj = symbolObj; - this.opacity = opacity; - this.olStyle = undefined; - this.legendHtml = ''; - } -} - -class PointSymbol extends CommonSymbol { - constructor(symbolObj, opacity) { - super(symbolObj, opacity); - switch (this.symbolObj['type']) { - case 'esriSMS': - let innerColor = _colorArrayToRgba(this.symbolObj.color, this.opacity); - let outerColor = _colorArrayToRgba(this.symbolObj.outline.color, this.opacity); - let outlineWidth = this.symbolObj.outline.width; - let radius = this.symbolObj.size; - - - this.olStyle = new ol.style.Style({ - image: new ol.style.Circle({ - radius: radius, - fill: new ol.style.Fill({ - color: innerColor - }), - stroke: new ol.style.Stroke({color: outerColor, width: outlineWidth}) - }) - }); - this.legendHtml = `<span class="legend-layer-icon" style="color: ${innerColor}">●</span>`; - break; - case 'esriPMS': - this.olStyle = new ol.style.Style({ - image: new ol.style.Icon({src: `data:image/png;base64,${this.symbolObj['imageData']}`}) - }); - this.legendHtml = `<img class="legend-layer-icon" height="17" src="data:image/png;base64,${this.symbolObj['imageData']}">`; - break; - default: - console.log(this.symbolObj); - alert('Point symbol does not handle symbol type: ' + this.symbolObj['type']); - } - } -} - -class LineSymbol extends CommonSymbol { - constructor(symbolObj, opacity) { - super(symbolObj, opacity); - switch (this.symbolObj['type']) { - case 'esriSLS': - let innerColor = _colorArrayToRgba(this.symbolObj.color, this.opacity); - let lineWidth = this.symbolObj.width; - - this.olStyle = new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: innerColor, - //lineDash: [4], - width: lineWidth - }) - }); - - this.legendHtml = `<span class="legend-layer-icon" `; - this.legendHtml += `style="`; - this.legendHtml += `background-color: ${innerColor};`; - this.legendHtml += `width: 40px;`; - this.legendHtml += `height: 4px;`; - this.legendHtml += `position: relative;`; - this.legendHtml += `display: inline-block;`; - this.legendHtml += `top: -1px;`; - this.legendHtml += `"></span>`; - break; - default: - console.log(this.symbolObj); - alert('Line symbol does not handle symbol type: ' + this.symbolObj['type']); - } - } -} - -class PolygonSymbol extends CommonSymbol { - constructor(symbolObj, opacity) { - super(symbolObj, opacity); - switch (this.symbolObj['type']) { - case 'esriSFS': - let innerColor = _colorArrayToRgba(this.symbolObj.color, this.opacity); - let outerColor = _colorArrayToRgba(this.symbolObj.outline.color, this.opacity); - let outlineWidth = this.symbolObj.outline.width; - - this.olStyle = new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: outerColor, - //lineDash: [4], - width: outlineWidth - }), - fill: new ol.style.Fill({ - color: innerColor - }) - }); - - this.legendHtml = `<span class="legend-layer-icon" `; - this.legendHtml += `style="`; - this.legendHtml += `background-color: ${innerColor};`; - this.legendHtml += `border: solid ${outerColor} 1px;`; - this.legendHtml += `width: 40px;`; - this.legendHtml += `height: 9px;`; - this.legendHtml += `position: relative;`; - this.legendHtml += `display: inline-block;`; - this.legendHtml += `top: 2px;`; - this.legendHtml += `"></span>`; - break; - - default: - console.log(this.symbolObj); - alert('Polygon symbol does handle symbol type: ' + this.symbolObj['type']); - } - } -} - -class SymbolGenerator { - constructor(esriResponse) { - this.opacity = (100 - (esriResponse['drawingInfo']['transparency'] || 0)) / 100; - this.renderer = esriResponse['drawingInfo']['renderer']; - this.olStyle = undefined; - this.legendHtml = ''; - } -} - -class SingleSymbol extends SymbolGenerator { - /** - * - * @param {object} esriResponse - layer info - * @param {Constructor|*} SymbolClass - the symbol class to use - */ - constructor(esriResponse, SymbolClass) { - super(esriResponse); - this.symbol = this.renderer['symbol']; - let symbolObj = new SymbolClass(this.symbol, this.opacity); - this.olStyle = symbolObj.olStyle; - this.legendHtml = symbolObj.legendHtml; - } -} - -class UniqueValueSymbol extends SymbolGenerator { - /** - * - * @param {object} esriResponse - layer info - * @param {Constructor|*} SymbolClass - the Symbol class definition - */ - constructor(esriResponse, SymbolClass) { - super(esriResponse); - this.uniqueValueInfos = this.renderer['uniqueValueInfos']; - this.propertyName = this.renderer['field1']; - this.defaultSymbol = this.renderer['defaultSymbol']; - - - if (this.defaultSymbol) { - let symbolObj = new SymbolClass(this.defaultSymbol, this.opacity); - this.defaultStyle = symbolObj.olStyle; - this.defaultLabelHtml = `<span class="legend-layer-subitem">${htmlEscape(this.renderer['defaultLabel'])}</span>` + symbolObj.legendHtml; - } else { - this.defaultStyle = undefined; - this.defaultLabelHtml = 'other'; - } - - this.valueArray = []; - this.labelArray = []; - this.legendArray = []; - this.propertyStyleLookup = {}; - - for (let uniqueVal of this.uniqueValueInfos) { - this.labelArray.push(uniqueVal['label']); - this.valueArray.push(uniqueVal['value']); - let uniqueSym = new SymbolClass(uniqueVal.symbol, this.opacity); - this.legendArray.push(`<span class="legend-layer-subitem">${htmlEscape(uniqueVal['label'])}</span>` + uniqueSym.legendHtml); - this.propertyStyleLookup[uniqueVal['value']] = uniqueSym.olStyle; - } - - let _this = this; - - this.olStyle = function (feature, resolution) { - let checkProperties = feature.getProperties(); - let checkProperty = checkProperties[_this.propertyName]; - - let returnValue; - if (_this.propertyStyleLookup[checkProperty] !== undefined) { - returnValue = [_this.propertyStyleLookup[checkProperty]]; - } else { - returnValue = [_this.defaultStyle]; - } - - return returnValue; - }; - - if (this.defaultLabelHtml !== null) { - this.legendArray.push(this.defaultLabelHtml); - } - - this.legendHtml = '<ul>'; - for (let h of this.legendArray) { - this.legendHtml += `<li>${h}</li>`; - } - this.legendHtml += '</ul>'; - } -} - - - - - -/** - * style and legend object - * @typedef {object} styleAndLegend - * @property {styleFunc} style - style function - * @property {string} legend - legend content - */ - -/** - * - * @param {object} esriResponse - layer info - * @returns {styleAndLegend} style and legend object - */ -export function makeFeatureServiceLegendAndSymbol(esriResponse) { - "use strict"; - let renderer = esriResponse['drawingInfo']['renderer']; - let symbolLegendOut = null; - - switch (renderer['type']) { - case 'simple': - switch (esriResponse['geometryType']) { - case 'esriGeometryPoint': - symbolLegendOut = new SingleSymbol(esriResponse, PointSymbol); - break; - case 'esriGeometryPolyline': - symbolLegendOut = new SingleSymbol(esriResponse, LineSymbol); - break; - case 'esriGeometryPolygon': - symbolLegendOut = new SingleSymbol(esriResponse, PolygonSymbol); - break; - default: - console.log(esriResponse); - alert(esriResponse['geometryType'] + ' not handled'); - } - break; - case 'uniqueValue': - switch (esriResponse['geometryType']) { - case 'esriGeometryPoint': - symbolLegendOut = new UniqueValueSymbol(esriResponse, PointSymbol); - break; - case 'esriGeometryPolyline': - symbolLegendOut = new UniqueValueSymbol(esriResponse, LineSymbol); - break; - case 'esriGeometryPolygon': - symbolLegendOut = new UniqueValueSymbol(esriResponse, PolygonSymbol); - break; - default: - console.log(esriResponse); - alert(esriResponse['geometryType'] + ' not handled'); - } - break; - default: - alert('not handled renderer type: ' + renderer['type']); - } - - if (symbolLegendOut == null) { - return {style: undefined, legend: ''}; - } else { - return {style: symbolLegendOut.olStyle, legend: symbolLegendOut.legendHtml}; - } -} - -nm.makeFeatureServiceLegendAndSymbol = makeFeatureServiceLegendAndSymbol; - -/** - * - * @param {object} lyrObject - the layer as defined in the response - * @param {boolean} [iconsOnly=false] use only icons - * @returns {string} legend html - */ -function mapServiceLegendItem(lyrObject, iconsOnly) { - - - iconsOnly = typeof iconsOnly == 'boolean' ? iconsOnly : false; - let layerName = lyrObject['layerName']; - let legendItems = lyrObject['legend']; - let legendHtml = ''; - - if (legendItems.length == 1) { - legendHtml = `<img class="legend-layer-icon" height="17" src="data:image/png;base64,${legendItems[0]['imageData']}">`; - } else { - legendHtml += '<span class="legend-items-expander" title="Expand/Collapse">▼</span><ul>'; - for (let i = 0; i < legendItems.length; i++) { - legendHtml += `<li>`; - legendHtml += `<span class="legend-layer-subitem">${htmlEscape(legendItems[i]['label'])}</span>`; - legendHtml += `<img class="legend-layer-icon" height="17" src="data:image/png;base64,${legendItems[i]['imageData']}">`; - legendHtml += `</li>`; - } - legendHtml += '</ul>'; - } - - if (!iconsOnly) { - legendHtml = `<span class="legend-layer-subitem">${layerName}</span>` + legendHtml; - } - - return legendHtml; -} - -/** - * make map service legent - * @param {object} esriResponse - layer info - * @returns {string} legend content - */ -export function makeMapServiceLegend(esriResponse) { - "use strict"; - - let newLegendHtml = ''; - - let layers = esriResponse['layers']; - - if (layers.length == 1) { - newLegendHtml += mapServiceLegendItem(layers[0], true); - } else { - newLegendHtml += '<ul>'; - for (let i = 0; i < layers.length; i++) { - newLegendHtml += '<li>' + mapServiceLegendItem(layers[i]) + '</li>'; - } - newLegendHtml += '</ul>'; - } - - return newLegendHtml; -} - -nm.makeMapServiceLegend = makeMapServiceLegend; diff --git a/_src/olHelpers/extentUtil.js b/_src/olHelpers/extentUtil.js deleted file mode 100644 index cbdea263c1ba11faefae53380cc2b3396701dba0..0000000000000000000000000000000000000000 --- a/_src/olHelpers/extentUtil.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - * Created by gavorhes on 7/18/2016. - */ -import provide from '../util/provide'; - - -const nm = provide('util'); - -/** - * - * @param {Array<LayerBaseVector>|Array<ol.layer.Vector>|LayerBaseVector|ol.layer.Vector|*} layers - array of layers or single - * @returns {ol.Extent|Array<number>|*} - collective extent - */ -export function calculateExtent(layers) { - "use strict"; - - if (layers.constructor.name != 'Array'){ - layers = [layers]; - } - - let hasExtent = false; - - let minX = 10E100; - let minY = 10E100; - let maxX = -10E100; - let maxY = -10E100; - - for (let lyr of layers) { - - /** - * - * @type {ol.layer.Vector} - */ - let olLayer = lyr['olLayer'] || lyr; - - - if (olLayer.getSource().getFeatures().length > 0) { - hasExtent = true; - let ext = olLayer.getSource().getExtent(); - minX = ext[0] < minX ? ext[0] : minX; - minY = ext[1] < minY ? ext[1] : minY; - maxX = ext[2] > maxX ? ext[2] : maxX; - maxY = ext[3] > maxY ? ext[3] : maxY; - } - } - - if (hasExtent) { - return [minX, minY, maxX, maxY]; - } else { - return undefined; - } -} - -nm.calculateExtent = calculateExtent; - - -/** - * given one or an array of layers, fit to the map - * @param {Array<LayerBaseVector>|Array<ol.layer.Vector>|LayerBaseVector|ol.layer.Vector} layers - array of layers or single - * @param {ol.Map} mp - the map to fit - * @param {number|undefined} [zoomOut=undefined] - levels to zoom out after fit - */ -export function fitToMap(layers, mp, zoomOut){ - "use strict"; - - /** - * - * @type {ol.Extent|undefined} - */ - let ext = calculateExtent(layers); - - if (typeof ext == 'undefined'){ - return; - } - - mp.getView().fit(ext, mp.getSize()); - - if (typeof zoomOut == 'number'){ - mp.getView().setZoom(mp.getView().getZoom() - zoomOut); - } - -} - -nm.calculateExtent = calculateExtent; diff --git a/_src/olHelpers/layerSwipe.js b/_src/olHelpers/layerSwipe.js deleted file mode 100644 index 2ab84eb3b62443ef164060bfb32b823add4c067c..0000000000000000000000000000000000000000 --- a/_src/olHelpers/layerSwipe.js +++ /dev/null @@ -1,151 +0,0 @@ -/** - * Created by gavorhes on 6/1/2016. - */ - - -import provide from '../util/provide'; -import $ from '../jquery/jquery'; - -let nm = provide('collections.layerSwipe'); - - -class LayerSwipe { - - /** - * - * @param {ol.Map} map - the map - * @param {string} [sliderContent=''] - additional html to be added inside the slider div - */ - constructor(map, sliderContent) { - - sliderContent = sliderContent || ''; - /** - * - * @type {Array<LayerBase>} - */ - this.leftLayers = []; - - /** - * - * @type {Array<LayerBase>} - */ - this.rightLayers = []; - - this._percentRight = 50; - this.offset = null; - - this._map = map; - this.$mapElement = $(map.getTargetElement()); - this.$mapElement.append(`<div class="layer-swiper">${sliderContent}</div>`); - - - this.$swiper = this.$mapElement.find('.layer-swiper'); - this.percentRight = this.percentRight; - - this.dragging = false; - - this.$mapElement.mouseleave(() => { - this.dragging = false; - }); - - this.$swiper.bind('mousewheel DOMMouseScroll', function(evt){ - evt.preventDefault(); - }); - - this.$swiper.mousedown((evt) => { - this.dragging = true; - this.offset = evt.offsetX; - }); - - $(window).mouseup(() => { - this.dragging = false; - }); - - this.$mapElement.mousemove((evt) => { - if (this.dragging) { - let mapLeft = this.$mapElement.position().left; - let mapWidth = this.$mapElement.width(); - - this.percentRight = 100 * (evt.pageX - this.offset - mapLeft) / mapWidth; - } - }); - } - - /** - * - * @param {LayerBase|*} lyr - layer to be added to left side - */ - addLeftLayer(lyr) { - - if (this.leftLayers.indexOf(lyr) != -1){ - return; - } - - lyr.olLayer.on('precompose', (event) => { - let ctx = event.context; - let width = ctx.canvas.width * (this.percentRight / 100); - - ctx.save(); - ctx.beginPath(); - ctx.rect(0, 0, width, ctx.canvas.height); - ctx.clip(); - }); - - lyr.olLayer.on('postcompose', function (event) { - let ctx = event.context; - ctx.restore(); - }); - - - this.leftLayers.push(lyr); - } - - /** - * - * @param {LayerBase|*} lyr - layer to be added to right side - */ - addRightLayer(lyr) { - - if (this.rightLayers.indexOf(lyr) != -1){ - return; - } - - lyr.olLayer.on('precompose', (event) => { - let ctx = event.context; - let width = ctx.canvas.width * (this.percentRight / 100); - - ctx.save(); - ctx.beginPath(); - ctx.rect(width, 0, ctx.canvas.width - width, ctx.canvas.height); - ctx.clip(); - }); - - lyr.olLayer.on('postcompose', function (event) { - let ctx = event.context; - ctx.restore(); - }); - - this.rightLayers.push(lyr); - } - - get percentRight() { - return this._percentRight; - } - - set percentRight(pcnt) { - let maxed = this.$swiper.position().left + this.$swiper.width() > this.$mapElement.width(); - - if (pcnt < 0) { - return; - } else if (maxed && pcnt > this.percentRight) { - return; - } - - this._percentRight = pcnt; - this.$swiper.css('left', `${this._percentRight.toFixed(2)}%`); - this._map.render(); - } -} - -nm.LayerSwipe = LayerSwipe; -export default LayerSwipe; diff --git a/_src/olHelpers/mapInteractionBase.js b/_src/olHelpers/mapInteractionBase.js deleted file mode 100644 index b7bf4cbc86b20c52fddc74705a91cec8fd30188c..0000000000000000000000000000000000000000 --- a/_src/olHelpers/mapInteractionBase.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Created by gavorhes on 12/8/2015. - */ -import provide from '../util/provide'; -const nm = provide('olHelpers'); - - -/** - * base interaction - */ -class MapInteractionBase { - - /** - * map interaction base - * @param {string} subtype - the interaction subtype - */ - constructor(subtype) { - this._map = undefined; - this._initialized = false; - this._subtype = subtype; - } - - /** - * base initializer, returns true for already initialized - * @param {ol.Map} theMap - the ol Map - * @returns {boolean} true for already initialized - */ - init(theMap) { - if (!this._initialized) { - this._map = theMap; - this._initialized = true; - - return false; - } - - return true; - } - - /** - * get reference to the ol map object - * @returns {ol.Map} the map object - */ - get map() { - return this._map; - } - - /** - * get if is initialized - * @returns {boolean} is initialized - */ - get initialized() { - return this._initialized; - } - - /** - * Check the initialization status and throw exception if not valid yet - * @protected - */ - _checkInit() { - if (!this.initialized) { - let msg = `${this._subtype} object not initialized`; - alert(msg); - console.log(msg); - throw msg; - } - } - - /** - * Check the initialization status and throw exception if not valid yet - */ - checkInit(){ - this._checkInit(); - } -} -nm.MapInteractionBase = MapInteractionBase; -export default MapInteractionBase; diff --git a/_src/olHelpers/mapMove.js b/_src/olHelpers/mapMove.js deleted file mode 100644 index 26f4b4898d372d7df388662026de766a5420fec6..0000000000000000000000000000000000000000 --- a/_src/olHelpers/mapMove.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Created by gavorhes on 11/3/2015. - */ - -import MapMoveCls from './mapMoveCls'; - -/** - * The single map move object catch is that it is common to multimap pages - * @type {MapMoveCls} - */ -export default new MapMoveCls(); diff --git a/_src/olHelpers/mapMoveCls.js b/_src/olHelpers/mapMoveCls.js deleted file mode 100644 index 57909104ef4eb615cdafc7a9c2e10eb927da5cc4..0000000000000000000000000000000000000000 --- a/_src/olHelpers/mapMoveCls.js +++ /dev/null @@ -1,282 +0,0 @@ -/** - * Created by gavorhes on 11/3/2015. - */ - - -import $ from '../jquery/jquery'; -import MapInteractionBase from './mapInteractionBase'; -import * as checkDefined from '../util/checkDefined'; -import provide from '../util/provide'; -import makeGuid from '../util/makeGuid'; -const nm = provide('olHelpers'); - -/** - * assists with map move interactions, trigger callback functions - * @augments MapInteractionBase - */ -class MapMoveCls extends MapInteractionBase { - - /** - * constructor called implicitly - */ - constructor() { - super('map move'); - this._arrLyrRequest = []; - this._arrLyrTimeout = []; - this._arrLayer = []; - this._lookupLayer = {}; - - this._mapMoveCallbacks = []; - this._mapMoveCallbacksLookup = {}; - this._mapMoveCallbackDelays = []; - this._mapMoveCallbackContext = []; - this._mapMoveCallbackTimeout = []; - - this._mapExtent = undefined; - this._zoomLevel = undefined; - } - - /** - * initialize the map move object - * @param {ol.Map} theMap - the ol map - */ - init(theMap) { - if (super.init(theMap)) { - return; - } - - let _this = this; - - this.map.getView().on(['change:center', 'change:resolution'], function (e) { - - _this._updateMapExtent(); - - // trigger the layer updates - for (let i = 0; i < _this._arrLayer.length; i++) { - _this.triggerLyrLoad(_this._arrLayer[i], i, e.type); - } - - // trigger the map callbacks - for (let i = 0; i < _this._mapMoveCallbacks.length; i++) { - _this.triggerMoveCallback(i, e.type); - } - }); - } - - _updateMapExtent() { - let theView = this.map.getView(); - this._zoomLevel = theView.getZoom(); - - let extentArray = theView.calculateExtent(this.map.getSize()); - - this._mapExtent = { - minX: extentArray[0], - minY: extentArray[1], - maxX: extentArray[2], - maxY: extentArray[3] - }; - } - - /** - * return the map extent - */ - get mapExtent() { - if (!this._mapExtent) { - this._updateMapExtent(); - } - - return this._mapExtent; - } - - /** - * Trigger the layer load - * @param {LayerBaseVector|*} lyr - the layer being acted on - * @param {number} [index=undefined] - index of the layer - * @param {string|*} [eventType=undefined] the event triggering the load, as 'change:center' or 'change:resolution' - */ - triggerLyrLoad(lyr, index, eventType) { - - if (checkDefined.undefinedOrNull(lyr) && checkDefined.undefinedOrNull(index)) { - throw 'need to define lyr or index'; - } else if (checkDefined.definedAndNotNull(lyr) && checkDefined.undefinedOrNull(index)) { - index = this._arrLayer.indexOf(lyr); - } else if (checkDefined.undefinedOrNull(lyr) && checkDefined.definedAndNotNull(index)) { - lyr = this._arrLayer[index]; - } - - // clear the timeout - if (this._arrLyrTimeout[index] != null) { - clearTimeout(this._arrLyrTimeout[index]); - this._arrLyrTimeout[index] = null; - } - - // abort if necessary and clear the request - if (this._arrLyrRequest[index] != null && this._arrLyrRequest[index] != 4) { - this._arrLyrRequest[index].abort(); - this._arrLyrRequest[index] = null; - } - - // dummy callback used if before load returns false - let callbackFunc = function () {}; - - if (lyr.mapMoveBefore(this._zoomLevel, eventType)) { - lyr.mapMoveMakeGetParams(this._mapExtent, this._zoomLevel); - - let _this = this; - - callbackFunc = function () { - function innerFunction(theLayer, theIndex) { - let _innerThis = this; - this._arrLyrRequest[theIndex] = $.get( - theLayer.url, - theLayer.mapMoveParams, - function (d) { - /** - * @type {LayerBaseVector} - */ - theLayer.mapMoveCallback(d); - theLayer.loadCallback(); - }, 'json').fail( - function (jqXHR) { - if (jqXHR.statusText != 'abort') { - console.log('failed'); - console.log(theLayer.url); - console.log(theLayer.mapMoveParams); - } - }).always( - function () { - _innerThis._arrLyrTimeout[theIndex] = null; - _innerThis._arrLyrRequest[theIndex] = null; - }); - } - innerFunction.call(_this, lyr, index); - }; - } else { - lyr.clear(); - } - this._arrLyrTimeout[index] = setTimeout(callbackFunc, lyr.onDemandDelay); - } - - /** - * trigger the map move call back at the given index - * @param {number} ind - the index of the layer - * @param {string|*} [eventType=undefined] the event triggering the load as 'change:center' or 'change:resolution' - * @param {string} [functionId=undefined] the function id used to reference the added callback function - */ - triggerMoveCallback(ind, eventType, functionId) { - - if (typeof ind == 'undefined' && typeof functionId == 'undefined'){ - throw 'either the function index or the id must be defined'; - } - - if (typeof ind !== 'number'){ - ind = this._mapMoveCallbacks.indexOf(this._mapMoveCallbacksLookup[functionId]); - } - - if (ind < 0){ - console.log('function not found'); - - return; - } - - // clear the timeout - if (this._mapMoveCallbackTimeout[ind] != null) { - clearTimeout(this._mapMoveCallbackTimeout[ind]); - this._mapMoveCallbackTimeout[ind] = null; - } - - let ctx = this._mapMoveCallbackContext[ind]; - let theFunc = this._mapMoveCallbacks[ind]; - - let _this = this; - - let f = function () { - if (ctx !== null) { - theFunc.call(ctx, _this._mapExtent, _this._zoomLevel, eventType); - } else { - theFunc(_this._mapExtent, _this._zoomLevel, eventType); - } - }; - - this._mapMoveCallbackTimeout[ind] = setTimeout(f, this._mapMoveCallbackDelays[ind]); - } - - /** - * Add a layer to the interaction - * @param {LayerBaseVector|*} lyr - layer to add - * @param {boolean} [triggerOnAdd=true] - if the layer should be loaded on add - */ - addVectorLayer(lyr, triggerOnAdd) { - if (this._arrLayer.indexOf(lyr) > -1) { - console.log('already added ' + lyr.name + ' to map move'); - - return; - } - this._checkInit(); - - this._arrLyrRequest.push(null); - this._arrLyrTimeout.push(null); - this._arrLayer.push(lyr); - this._lookupLayer[lyr.id] = lyr; - - triggerOnAdd = typeof triggerOnAdd == 'boolean' ? triggerOnAdd : true; - - if (triggerOnAdd) { - if (this._mapExtent === undefined) { - this._updateMapExtent(); - } - this.triggerLyrLoad(lyr, this._arrLayer.length - 1); - } - } - - /** - * This callback is displayed as a global member. - * @callback mapMoveCallbackFunction - * @param {object} extent - extent object - * @param {number} extent.minX - minX - * @param {number} extent.minY - minY - * @param {number} extent.maxX - maxX - * @param {number} extent.maxY - maxY - * @param {number} zoomLevel - zoom level - * @param {string} [evtType=undefined] undefined for initial load, otherwise one of 'change:center', 'change:resolution' - */ - - /** - * add a callback to the map move event - * @param {mapMoveCallbackFunction} func - callback function - * @param {*} context - the context to use for this function - * @param {number} [delay=50] the delay before call load - * @param {boolean} [triggerOnAdd=true] if the layer should be loaded on add to mapMove - * @param {string} [functionId=undefined] optional id to reference the function later for outside triggering - */ - addCallback(func, context, delay, triggerOnAdd, functionId) { - - if (this._mapMoveCallbacks.indexOf(func) > -1) { - console.log('this function already added to map move'); - - return; - } - this._checkInit(); - if (!functionId){ - functionId = makeGuid(); - } - - this._mapMoveCallbacks.push(func); - this._mapMoveCallbacksLookup[functionId] = func; - this._mapMoveCallbackDelays.push(typeof delay == 'number' ? delay : 50); - this._mapMoveCallbackContext.push(checkDefined.definedAndNotNull(context) ? context : null); - this._mapMoveCallbackTimeout.push(null); - - triggerOnAdd = typeof triggerOnAdd == 'boolean' ? triggerOnAdd : true; - - if (triggerOnAdd) { - if (this._mapExtent === undefined) { - this._updateMapExtent(); - } - this.triggerMoveCallback(this._mapMoveCallbacks.length - 1); - } - } -} - -nm.MapMoveCls = MapMoveCls; -export default MapMoveCls; diff --git a/_src/olHelpers/mapPopup.js b/_src/olHelpers/mapPopup.js deleted file mode 100644 index 284e26508ccf32ec685c650ba164290258ccc77e..0000000000000000000000000000000000000000 --- a/_src/olHelpers/mapPopup.js +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Created by gavorhes on 11/3/2015. - */ - -import MapPopupCls from './mapPopupCls'; - -/** - * The single popup object catch is that it is common to multimap pages - * @type {MapPopupCls} - */ -export default new MapPopupCls(); diff --git a/_src/olHelpers/mapPopupCls.js b/_src/olHelpers/mapPopupCls.js deleted file mode 100644 index 55e478ccf9740cb9fc8245268c894655d375357d..0000000000000000000000000000000000000000 --- a/_src/olHelpers/mapPopupCls.js +++ /dev/null @@ -1,491 +0,0 @@ -/** - * Created by gavorhes on 11/3/2015. - */ - -import $ from '../jquery/jquery'; -import MapInteractionBase from './mapInteractionBase'; -import propertiesZoomStyle from '../olHelpers/propertiesZoomStyle'; -import provide from '../util/provide'; -import ol from '../ol/ol'; - - -const nm = provide('olHelpers'); - - -class _FeatureLayerProperties { - - /** - * - * @param {ol.Feature} feature the feature - * @param {LayerBaseVector|*} layer - the layer in the popup - * @param {number} layerIndex - index of the layer - * @param {ol.layer.Vector} selectionLayer - the ol selection layer - * @param {string} [esriLayerName=undefined] - esri layer name - */ - constructor(feature, layer, layerIndex, selectionLayer, esriLayerName) { - this.feature = feature; - this.layer = layer; - this.layerIndex = layerIndex; - this.selectionLayer = selectionLayer; - this.popupContent = ''; - this.esriLayerName = typeof esriLayerName == 'string' ? esriLayerName : undefined; - } - - get layerName() { - if (typeof this.esriLayerName == 'string') { - return this.esriLayerName; - } else { - return this.layer.name; - } - } -} - -/** - * map popup class - * @augments MapInteractionBase - */ -class MapPopupCls extends MapInteractionBase { - - /** - * Definition for openlayers style function - * @callback olStyleFunction - * ¶m feature the openlayers vector feature - * $param - */ - - /** - * Definition for popup changed callback functions - * @callback popupChangedFunction - * @param $popContent jquery reference to the popup content - */ - - /** - * map popup constructor - */ - constructor() { - super('map popup'); - this._arrPopupLayerIds = []; - this._arrPopupLayerNames = []; - /** - * - * @type {Array<LayerBaseVector>} - * @private - */ - this._arrPopupLayers = []; - this._arrPopupOlLayers = []; - this._arrPopupContentFunction = []; - this._$popupContainer = undefined; - this._$popupContent = undefined; - this._$popupCloser = undefined; - this._popupOverlay = undefined; - this._selectionLayers = []; - this._selectionLayerLookup = {}; - this._mapClickFunctions = []; - - //let a = function($jqueryContent){console.log($jqueryContent)}; - //this._popupChangedLookup = {'a': a}; - this._popupChangedFunctions = []; - /** - * - * @type {Array<LayerEsriMapServer>} - * @private - */ - this._esriMapServiceLayers = []; - - this._popupOpen = false; - this._popupCoordinate = null; - - /** - * - * @type {Array.<_FeatureLayerProperties>} - */ - this._passThroughLayerFeatureArray = []; - - this._currentPopupIndex = -1; - this._popupContentLength = 0; - - } - - /** - * map popup initialization - * @param {ol.Map} theMap - the ol map - */ - init(theMap) { - if (super.init(theMap)) { - return; - } - let $map = $('#' + this.map.getTarget()); - - $map.append( - '<div class="ol-popup">' + - '<span class="ol-popup-closer">X</span>' + - '<div class="popup-content"></div>' + - '</div>' - ); - - this._$popupContainer = $map.find('.ol-popup'); - this._$popupContent = $map.find('.popup-content'); - this._$popupCloser = $map.find('.ol-popup-closer'); - - this._popupOverlay = new ol.Overlay({ - element: this._$popupContainer[0], - autoPan: true, - autoPanAnimation: { - duration: 250 - } - }); - - this._map.addOverlay(this._popupOverlay); - - this._$popupCloser.click((evt) => { - this.closePopup(); - }); - - // display popup on click - this._map.on('singleclick', (evt) => { - this.closePopup(); - this._popupCoordinate = evt.coordinate; - - if (this._esriMapServiceLayers.length > 0) { - let queryParams = { - geometry: evt.coordinate.join(','), - geometryType: 'esriGeometryPoint', - layers: 'all', - sr: this._map.getView().getProjection().getCode().split(':')[1], - mapExtent: this._map.getView().calculateExtent(this._map.getSize()).join(','), - imageDisplay: this._map.getSize().join(',') + ',96', - returnGeometry: true, - tolerance: 15, - f: 'pjson' - }; - - for (let l of this._esriMapServiceLayers) { - l.getPopupInfo(queryParams, this._selectionLayerLookup[l.id]); - } - } - - let layerFeatureObjectArray = this._featuresAtPixel(evt.pixel); - - /** - * - * @type {Array.<_FeatureLayerProperties>} - */ - this._passThroughLayerFeatureArray = []; - this._currentPopupIndex = -1; - - for (let i = 0; i < layerFeatureObjectArray.length; i++) { - let featObj = layerFeatureObjectArray[i]; - - let props = featObj.feature.getProperties(); - - let popupContentResponse = this._arrPopupContentFunction[featObj.layerIndex](props, this._$popupContent); - - //skip if return was false - if (popupContentResponse === false) { - //continue; - } else if (typeof popupContentResponse == 'string') { - featObj.popupContent = popupContentResponse; - this._passThroughLayerFeatureArray.push(featObj); - } else { - featObj.selectionLayer.getSource().addFeature(featObj.feature); - } - } - - this._popupContentLength = this._passThroughLayerFeatureArray.length; - - this._currentPopupIndex = -1; - - let popupHtml = '<div class="ol-popup-nav">'; - popupHtml += '<span class="previous-popup ol-popup-nav-arrow">◀</span>'; - popupHtml += '<span class="next-popup ol-popup-nav-arrow">▶</span>'; - popupHtml += `<span class="current-popup-item-number" style="font-weight: bold;"></span>`; - popupHtml += `<span> of </span>`; - popupHtml += `<span class="popup-content-length" style="font-weight: bold;">${this._popupContentLength}</span>`; - popupHtml += `<span> - </span>`; - popupHtml += `<span class="current-popup-layer-name"></span>`; - popupHtml += '</div>'; - popupHtml += '<div class="ol-popup-inner">'; - - popupHtml += '</div>'; - - this._$popupContent.html(popupHtml); - - this._$popupContent.find('.previous-popup').click(() => { - if (this._popupContentLength == 1) { - return; - } - - if (this._currentPopupIndex == 0) { - this._currentPopupIndex = this._popupContentLength - 1; - } else { - this._currentPopupIndex--; - } - this._triggerFeatSelect(); - }); - - let nextPopup = this._$popupContent.find('.next-popup'); - - nextPopup.click(() => { - if (this._popupContentLength == 1 && this._currentPopupIndex > -1) { - return; - } - - if (this._currentPopupIndex == this._popupContentLength - 1) { - this._currentPopupIndex = 0; - } else { - this._currentPopupIndex++; - } - this._triggerFeatSelect(); - }); - - - if (this._popupContentLength > 0) { - nextPopup.trigger('click'); - this._popupOverlay.setPosition(this._popupCoordinate); - this._$popupContent.scrollTop(0); - this._popupOpen = true; - } - }); - - //change mouse cursor when over marker - this._map.on('pointermove', (e) => { - if (e.dragging) { - return; - } - let pixel = this.map.getEventPixel(e.originalEvent); - let hit = this.map.hasFeatureAtPixel(pixel, (lyrCandidate) => { - for (let olLayer of this._arrPopupOlLayers) { - if (lyrCandidate == olLayer) { - return true; - } - } - - return false; - }); - this.map.getTargetElement().style.cursor = hit ? 'pointer' : ''; - }); - } - - /** - * helper to select features - * @private - */ - _triggerFeatSelect() { - let $currentPopupItemNumber = this._$popupContent.find('.current-popup-item-number'); - let $innerPopup = this._$popupContent.find('.ol-popup-inner'); - let $layerNameSpan = this._$popupContent.find('.current-popup-layer-name'); - this.clearSelection(); - let lyrFeatObj = this._passThroughLayerFeatureArray[this._currentPopupIndex]; - $currentPopupItemNumber.html((this._currentPopupIndex + 1).toFixed()); - $layerNameSpan.html(lyrFeatObj.layerName); - $innerPopup.html(lyrFeatObj.popupContent); - lyrFeatObj.selectionLayer.getSource().addFeature(lyrFeatObj.feature); - for (let f of this._popupChangedFunctions) { - f(this._$popupContent); - } - } - - - /** - * - * @param {ol.Feature} feature - the ol feature - * @param {LayerEsriMapServer} lyr - the map server layer - * @param {string} popupContent - popup content - * @param {string} esriName - esri layer name - */ - addMapServicePopupContent(feature, lyr, popupContent, esriName) { - - let featLayerObject = new _FeatureLayerProperties( - feature, lyr, this._popupContentLength, this._selectionLayerLookup[lyr.id], esriName - ); - featLayerObject.popupContent = popupContent; - - this._passThroughLayerFeatureArray.push(featLayerObject); - this._popupContentLength++; - - $('.popup-content-length').html(this._popupContentLength.toFixed()); - - if (!this._popupOpen) { - this._$popupContent.find('.next-popup').trigger('click'); - - this._popupOverlay.setPosition(this._popupCoordinate); - this._$popupContent.scrollTop(0); - this._popupOpen = true; - } - } - - /** - * - * @param {ol.Pixel} pixel - the ol pixel - * @returns {Array.<_FeatureLayerProperties>} - feature layer properties - * @private - */ - _featuresAtPixel(pixel) { - let layerFeatureObjectArray = []; - this.map.forEachFeatureAtPixel(pixel, (feature, layer) => { - let lyrIndex = this._arrPopupOlLayers.indexOf(layer); - - if (lyrIndex > -1) { - layerFeatureObjectArray.push(new _FeatureLayerProperties( - feature, this._arrPopupLayers[lyrIndex], lyrIndex, this._selectionLayers[lyrIndex])); - } - }); - - return layerFeatureObjectArray; - } - - closePopup() { - this._checkInit(); - this._popupOpen = false; - this._popupOverlay.setPosition(undefined); - this._$popupCloser[0].blur(); - this.clearSelection(); - this._$popupContent.html(''); - - return false; - }; - - /** - * - * @param {popupChangedFunction} chgFunction - popup change function - */ - addPopupChangedFunction(chgFunction) { - this._popupChangedFunctions.push(chgFunction); - } - - /** - * - * @param {LayerBase|*} lyr - the layer being acted on - * @param {object} [selectionStyle={}] the selection style configuration - * @param {string} [selectionStyle.color=rgba(255,170,0,0.5)] the selection color - * @param {number} [selectionStyle.width=10] the selection width for linear features - * @param {object|function} [selectionStyle.olStyle=undefined] an openlayers style object or function - * @returns {ol.layer.Vector} the new selection layer - * @private - */ - _addPopupLayer(lyr, selectionStyle) { - this._checkInit(); - - selectionStyle = selectionStyle || {}; - selectionStyle.color = selectionStyle.color || 'rgba(255,170,0,0.5)'; - selectionStyle.width = selectionStyle.width || 10; - - let theStyle; - - if (selectionStyle.olStyle) { - theStyle = selectionStyle.olStyle; - } else { - theStyle = new ol.style.Style({ - stroke: new ol.style.Stroke({ - color: selectionStyle.color, - width: selectionStyle.width - }), - image: new ol.style.Circle({ - radius: 7, - fill: new ol.style.Fill({color: selectionStyle.color}), - stroke: new ol.style.Stroke({color: selectionStyle.color, width: 1}) - }), - fill: new ol.style.Fill({ - color: selectionStyle.color - }) - }); - } - - let selectionLayer = new ol.layer.Vector( - { - source: new ol.source.Vector(), - style: theStyle, - zIndex: 100 - } - ); - - this._selectionLayers.push(selectionLayer); - this._selectionLayerLookup[lyr.id] = selectionLayer; - this.map.addLayer(selectionLayer); - - return selectionLayer; - } - - /** - * The popup callback function - * @callback popupCallback - * @param {object} featureProperties - the feature properties - * @param {jQuery} jqRef reference to the div content to do some async stuff inside the div - * @returns {string} the html content to be added to the popup - */ - - /** - * Add popup to the map - * @param {LayerBase|*} lyr The layer that the popup with act on - * @param {popupCallback} popupContentFunction - popup content function that makes popup info - * @param {object} [selectionStyle={}] the selection style configuration - * @param {string} [selectionStyle.color=rgba(255,170,0,0.5)] the selection color - * @param {number} [selectionStyle.width=10] the selection width for linear features - * @param {object|function} [selectionStyle.olStyle=undefined] an openlayers style object or function - * @returns {object} a reference to the ol selection layer - */ - addVectorPopup(lyr, popupContentFunction, selectionStyle) { - let selectionLayer = this._addPopupLayer(lyr, selectionStyle); - this._arrPopupLayerIds.push(lyr.id); - this._arrPopupLayerNames.push(lyr.name); - this._arrPopupLayers.push(lyr); - this._arrPopupOlLayers.push(lyr.olLayer); - this._arrPopupContentFunction.push(popupContentFunction); - - return selectionLayer; - }; - - /** - * - * @param {LayerBase} lyr - layer - */ - removeVectorPopup(lyr) { - let idx = this._arrPopupLayerIds.indexOf(lyr.id); - - if (idx > -1) { - this._arrPopupLayerIds.splice(idx, 1); - this._arrPopupLayerNames.splice(idx, 1); - this._arrPopupLayers.splice(idx, 1); - this._arrPopupOlLayers.splice(idx, 1); - this._arrPopupContentFunction.splice(idx, 1); - this._selectionLayers.splice(idx, 1); - delete this._selectionLayerLookup[lyr.id]; - } - } - - /** - * - * @param {LayerEsriMapServer} lyr - map server layer - * @param {object} [selectionStyle={}] the selection style configuration - * @param {string} [selectionStyle.color=rgba(255,170,0,0.5)] the selection color - * @param {number} [selectionStyle.width=10] the selection width for linear features - * @param {object|function} [selectionStyle.olStyle=undefined] an openlayers style object or function - * @returns {object} a reference to the ol selection layer - */ - addMapServicePopup(lyr, selectionStyle) { - let selectionLayer = this._addPopupLayer(lyr, selectionStyle); - this._esriMapServiceLayers.push(lyr); - - return selectionLayer; - } - - clearSelection() { - this._checkInit(); - for (let i = 0; i < this._selectionLayers.length; i++) { - this._selectionLayers[i].getSource().clear(); - } - for (let f of this._mapClickFunctions) { - f(); - } - }; - - /** - * Add a function to be called when the map is clicked but before any popups are implemented - * @param {function} func - the map click function - */ - addMapClickFunction(func) { - this._mapClickFunctions.push(func); - } -} -nm.MapPopupCls = MapPopupCls; -export default MapPopupCls; diff --git a/_src/olHelpers/propertiesZoomStyle.js b/_src/olHelpers/propertiesZoomStyle.js deleted file mode 100644 index 2baab2485453f0a76210abd78b5c13ce5979ef7f..0000000000000000000000000000000000000000 --- a/_src/olHelpers/propertiesZoomStyle.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Created by gavorhes on 12/14/2015. - */ - -import provide from '../util/provide'; -import * as zoomResolutionConvert from './zoomResolutionConvert'; -const nm = provide('olHelpers'); - -/** - * A style function based on properties and zoom level, wraps normal feature, resolution function - * @callback propertiesZoomStyle - * @param {object} properties the feature properties - * @param {number} zoom level - * - */ - -/** - * wrapper to define a style function by properties and zoom level - * @param {propertiesZoomStyle|*} styleFunc - style function - * @returns {function|*} new function - */ -function propertiesZoomStyle(styleFunc) { - if (styleFunc == undefined){ - return undefined; - } - - return function (feature, resolution) { - styleFunc(feature.getProperties(), zoomResolutionConvert.resolutionToZoom(resolution)); - }; -} - -nm.propertiesZoomStyle = propertiesZoomStyle; -export default propertiesZoomStyle; diff --git a/_src/olHelpers/quickMap.js b/_src/olHelpers/quickMap.js deleted file mode 100644 index 57af2d7af97199f0944c379124814b6c7eb97056..0000000000000000000000000000000000000000 --- a/_src/olHelpers/quickMap.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Created by gavorhes on 12/15/2015. - */ - -import quickMapBase from './quickMapBase'; -import provide from '../util/provide'; -import mapMove from './mapMove'; -import mapPopup from './mapPopup'; -let nm = provide('olHelpers'); - -/** - * Sets up a map with some default parameters and initializes - * mapMove and mapPopup - * - * @param {object} [options={}] config options - * @param {string} [options.divId=map] map div id - * @param {object} [options.center={}] center config object - * @param {number} [options.center.x=-10018378] center x, web mercator x or lon - * @param {number} [options.center.y=5574910] center y, web mercator y or lat - * @param {number} [options.zoom=7] zoom level - * @param {number} [options.minZoom=undefined] min zoom - * @param {number} [options.maxZoom=undefined] max zoom - * @param {boolean} [options.baseSwitcher=true] if add base map switcher - * @param {boolean} [options.fullScreen=false] if add base map switcher - * @returns {ol.Map} the ol map - */ -function quickMap(options) { - let m = quickMapBase(options); - mapMove.init(m); - mapPopup.init(m); - - return m; -} - - -nm.quickMap = quickMap; -export default quickMap; diff --git a/_src/olHelpers/quickMapBase.js b/_src/olHelpers/quickMapBase.js deleted file mode 100644 index f1a598ab5cf9773106149a0a1e2cb28f70d9d7c2..0000000000000000000000000000000000000000 --- a/_src/olHelpers/quickMapBase.js +++ /dev/null @@ -1,102 +0,0 @@ - -/** - * Created by gavorhes on 12/15/2015. - */ - -import $ from '../jquery/jquery'; -import provide from '../util/provide'; -import ol from '../ol/ol'; -const nm = provide('olHelpers'); - -/** - * Sets up a map with some default parameters and initializes - * mapMove and mapPopup - * - * @param {object} [options={}] config options - * @param {string} [options.divId=map] map div id - * @param {object} [options.center={}] center config object - * @param {number} [options.center.x=-10018378] center x, web mercator x or lon - * @param {number} [options.center.y=5574910] center y, web mercator y or lat - * @param {number} [options.zoom=7] zoom level - * @param {number} [options.minZoom=undefined] min zoom - * @param {number} [options.maxZoom=undefined] max zoom - * @param {boolean} [options.baseSwitcher=true] if add base map switcher - * @param {boolean} [options.fullScreen=false] if add base map switcher - * @returns {ol.Map} the ol map - */ -function quickMapBase(options) { - options = options || {}; - options.divId = options.divId || 'map'; - options.center = options.center || {}; - options.center.x = typeof options.center.x == 'number' ? options.center.x : -10018378; - options.center.y = typeof options.center.y == 'number' ? options.center.y : 5574910; - options.zoom = typeof options.zoom == 'number' ? options.zoom : 7; - options.baseSwitcher = typeof options.baseSwitcher == 'boolean' ? options.baseSwitcher : true; - options.fullScreen = typeof options.fullScreen == 'boolean' ? options.fullScreen : false; - - - let $mapDiv = $('#' + options.divId); - $mapDiv.css('position', 'relative'); - - let osmLayer = new ol.layer.Tile({source: new ol.source.OSM()}); - let satLayer = new ol.layer.Tile({visible: false, source: new ol.source.MapQuest({layer: 'sat'})}); - - let osmCss = "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQAAADQ1NDk5OURFREtLS1FHSFlZWGJRVGJiYWdmZWxsbHRmaXBpanN0c3V0dHp5eX5+fIVzd4F3eeV0jud5juZ8k4aHhomHhoyGh5eGj5OVlJiVlZiYl5qZmJydnKOTlaKZmqKdnaOioaqqqKuzsbOvrrSysLa3tbW4uLm6ub27ub+/vbGXwbCZwbCgxLKlxrOqyLStybO3yrSxyrWzzbW2y7a1zbK4y7W6zbW8y760yrTAzbTFzrPKzrLOzrTJzrTOzr7CwbXC0LXK0LTO0L3I0bPQz7TQz7PS0bXQ0LnR0brW1bzT0r7U077V1Lzc2dqNqteUsdyXscaquuOHneaGmueHnOeJnuiBleiKn+eNoOiOoOWUpOiRo+iSpeiUpeqYpumaqOmdrPSynemgruSqtOmisOmlsuuqtequuOW1vOuxu+uxvOq1ve+xvPK0pvW3o/W5pfO5qvS7qfCwvMOuwc2/wNenxNyyzNe/0Nq31Nq51dy72Oy3wOu4wOu+xey4wO+6xO2+xfTAr/TCsvfFtPHLvvTJuMPDwMfHxcXKyc3DxMvFyMvLyM3PzcDV08DV1MTX1cbY1s7X1sjZ1sra2Mnd3M7b2c7c2tfH1tnB1t7F2d7M29fX1tLY1tDd2tHe3NTf3NnS19rZ1tva2Nnf3t3d28rh3tXg3Nnh3tzj393k39ni4N7k4N7n5uXDyOfLz+zAxu3CyOzEyezKzeDJ3eLM3uvP0u3P0ePf2+7R0u7Q1u/U0+7U1ezc0+7a2e/d2+3f3vbFzvLOwfHN0PPQw/TUx/LWyvLYzPDQ1fPe0ubc4vve4uHh3+nh3+/h2u/h3vHj2vHl3uHm4eTn4uDp5ebo4+Xo5ODq6ebq6OTv6+nl4+/j4O7l4e7n5ujp4+np5Ozq5e7s5urt6O7t6Orw6u7x6u3x7vPj5PDl4fDo4vDq5fDt5vDu6PDv7PTv6fDx6vHx7fH17fXw6fXy7fb07/bz8fT18vn38vr39fr48/r59Pr6+P3++//+/gAAALNTSk0AAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjlsM35OAAAFNElEQVRIS1VVCZxVUxi/9l0UIUT2bMnY43bVI2c0Y01kSWIaS0j2JEtkN41piomZrPPKQ2aQ7JKImOZlnm2493TJzDufuU1Zi+v/fee+mZ//793vnPOd7zvfes5zDBEZkBBjAcIjb+Iiotqgdhat8AMK0vl7/R9N7GiWtshqIr+EZ5gYKibyUsXY1l/mfFpssvUlWQ0FkU3gy4+RB/+kwYcO8pRSnldcOU/r2lAHARSwk2ORgEmOdC1EsuRiYSqMPwwroMIraZk5V2fYJQjCKfZrRmh3gSAZi2i4b7wSylWu8EqZwS59JkFUaW96JbNSc+CEUmt4rorwuZmWdDaoc+uZETuQlTCU5xYzR7muUnVUVo+BcRhre/VwUpasgJwhH7JkYIYA0sNxhmCwUK+lw6vCKBZehw01dEiyw4Q4aE0Z4ahDhKaFQsGnJ2BgqKoTBsNjFy0SlW6whRAZTdm8DBJmkBZhDi1j4xJQBk6ywrWUTymaCxac8lROcdauRGzQSNtA7EHUYhXyEwhhgjFUqRuO+rauhF1awFpzCsmwUbjIFBR0u1bKtyGpulW/H/cVVzkyGaIWTIR9pFAV6GK2gPMXMX8gPk9zzxXgI1kimcAltEYr+cjio1imlKpEa9rOipLm+p+CZ6Bw//qd1/f/O+GwMxbSLpyoZEcwkyh2jIks+3hmdd2jWUw4scxNysnHxU7nSspTRcJjCZGL3IsjsYJMMg5mwgx7gaIOLBFCogAgBBoNa9w+DE6I+Bs7FTgwwrJbHjWDgpYo2KwtBTcYEDuloC9geQw+k2RGnPGpTaOlq7AS+YICUz4DZVaX2TiNDhuYfTtY4geLi0IoCm3XccwM9hx4kU28StQEljDs3ZEpFGA+8dKzLmV9ymIwF5FOGn2GdJM8KLHDJbXyiYVMG9MRTLiXGGg2QKaxM3khPSRrwM9zEIardxU2w/EiA0gOeYKHzDR0V7/QGV3lKIA9ktrDArxO3gdA+k6SKoBiVwcm7NjZb9+Hnztg282TuHVZ9LOISFNt9MgyCetZVczSxnyDbl17Penq6mqpg1IhRaEO2aVLUO4/r17H8tTv6f13h71dduvZI3Y+uMdWksNSauLovJw5hsqiPIUvt0ku7/iBeUR3sksmomYWtRbAjbiLfv2lX9/V7LVG4uYnUZXhQ7f2OPCZEx9wrYWTcePEQqPEML8pl4mMdr/jlXlvHiRiJ2+MSTFY4TTSYStuvz2R/JXh+PPeGXm055J+3/YDWuNu3R3DArPutyg0ZgykMVDU9Ndm22+wYalr2rse48CnsTIFcMn73vfhNrktx1EUcZnPv6ah3Yy5cDTRdBEoGoBeah71dqFyjZDJLkWk3N3v4uuktssjWpzciMPxQeHj8nMKzcGuB0tAyzFhdCKOYWv4HwOQVwIxLG99a6uvH3sJCyO3h+k4EZ+G7+xj5f4XXksoaGrdMRzSc8ARA8+cdOuk2x6fffNNt5x+Ro1omPlrT/CQDlcNlpx4NBIWXhkx7Y3Zp3ofNR7Uv89Om/beW0TLIynHv3vs1VsOFpSWSXvfuPUf9BrRFyxgXdHoKJnQFegPOovvzz59ntrzye240ig8UQ3lDI2VqwagrKIQcLXNFL3wglN2OHdBQ6/vI3kENDVBwRb3k1XtczFbjWn4EzMYi7CF3129+JTYuRSdrGuS92g5dpqn6qXoJQs5xmL8p+Wt4hLbt0mx2OLNZR2bbPy8zJNQGFM/f/CfXZekRYFjGCWjIJpM+WiCzGBPWHhoyaAsjRT/B2Gy5yzYJkwUAAAAAElFTkSuQmCC')"; - let aerialCss = "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAMAUExURQALBgIMDQgOBwQOEQcTBwUSCwoVDAwdBw8ZDgUREwYUGAYZFQYZGgkTFQoVGQsZFAwZHBMeDhIbFBEbHAwWIA4bIREcIQ4hCQwjFw4lHBgkDB8sDxUiExIiGhAoGxohFRshGRorHQcrKQsiIQwmKgooJA0pKQ81Jw8yLRMiIxImKxUrJREuKhslJB0rIhooKRUuMBMyLhkwJhozKh48LxUzMRM9MBwzMiUvFCMtGiMwEiwzFCgzHDI+GSIsISkvJSQxIiM2LiY5Jic+Lyk0JSo0Ky49JSs9KSU1NSM7NCs2NS8+NDM1JzU9Ljg7IDJCHS1DLSNAMitCMSxIOjREITZLIDZJKDlFIjpFKztKJT1LKzJBMzpHMD1JMjpKPD1RKjlQNC1DQj5QQEA8MEJGJkBKJUJNK0lLLEJMMkVMPEpONENSLUdZL0pTLkpaLkRUMkRSPEVZMktUM0pVOklZMklZNEpcNU1ZMk1ZNUxfMk5dNkxcOVFUM1RUOFJbNVFZOVNYPVFdOVJdPFVaOVVaPVVdOlVdPVpaNlpdO0phN01hOlBiN1NhPFNoP1piPWFbPmRjPENOQEtPSURTQkJVS0xVQk1VSkxbQkxcS0heUVFXRFRcQlJfTFxeQlpeS05lQk1kSFRjQVRjSlZpQ1tkQlxlSlxpRF1rSVVnUVtlU1llXF9tU1xoXlxwSl9ramRfQmJlQ2FhSWFlSWFlTmVlSWRmTGFoQWFpRWFsRmVpRWVtRmNsSmtlRGpqRmpsS2BmWGRsUmFrW2ptUmZyR2RxTGpxTWVyU2RyW2d5V2tzUmt0WW15VG15WXFuTHNtVnFxTXF4T3h0TnJzUnJ1XHJ4VXN6Wnp0VHx1W315VXp8XGR0YGx0YHVzZXJ0aHR9ZXV+aHl9YHOCXXqBXXeCYHyCY3iEaHyIYn+JaXqKcYB5WIN6Y4SCXoCDZIGEaYCIZoOLa4iCaImJbIOOdYuMco6OeIuVcpOKbZKPc5aQb5eXe5ufg6KjhAAAAAAAAAAAAAAAAOGCeQgAAAEAdFJOU////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wBT9wclAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAGHRFWHRTb2Z0d2FyZQBwYWludC5uZXQgNC4wLjlsM35OAAAH80lEQVRISy1WbXQUVxm+6wqnk3Zmpxl2FG2EGg92C8GDlWptVTwa+uF3xcKmDfFzCUzDsJNsunXipglJXJbrtJWmwZNSnHD3jojRgUIm2UumIZ0JZ7JByrALbMWW0IBW8aRa4+cf76TeX3Nm3uc+z/s+7/vugl4r/aMTrT4e1pPTqnnmJNn5AyUzRnrRle/qE33dsvrBtAQVoxtpZNK3zSzYjUjviWO2Ag+R77dl7W36n/1Ep9KBPG/S+Py0PkjU/gPKQGqwTHryiWYFAXSvMairsio7SjyNsnCzh0qKImV9/7mhfHQZx2yN1O+7rXUm33MUPaboOkAJHaoIdXfJj2xWeyD8jMFEXkvIu5qzpU988gWB5zl+GS+sFe55trEVPdWZB2miq8bBVkNFO2R0qnrfkiXhcJhtDNXE6tbW97/s9O9/7ZfVhx86/CwrROpfvvxboMqeLsuqPr1j44qEwDNMOBximUiYoU8sw7BC/a7T72uEnyJDlGxZ9KcglZRyuqqrv/tSZErgOI4NgRBTIw9EmHAoFGZZnp6aGaJ2GTxfxYs8kKVUQh7WB5hQeC3LsUxoxVKW14l3BX2WcoUYPiZyLLe8teZ+iuT4GGhvV5KpKWkpyzxEr2MZgQ1xdRjfRBoH+2k6lIHjKTHPPBo8CSJISqqq4wGGOcWylIGlgvgNX1Gd8vF5f+IUIwb30ng+Gg2QfBRIMvy0jG8SVkYo4N0zvUXVRztbJ/L6xL7lUZEXBEHkuZqlS6gEAUgKJurnhFtfpACOYd8b/hVbJPqwi44a6KA0sPVjIi/SIyxb3u8KlAJ0S8jRVgrlW+nVHPdrhiXCxu42d86ByksDc80P3MkJFBFQ8Ho1lQegpWJRWFGsDsRwwv7pIyvuQW0ZkrX6NDVFbqcvaQI8vbyqzt5AARrsbKx5yhQEGs+wPO56bOK+0rcwMrOKkpUbZWYxV04UeZZv/cBKFhRL6Qdv9y4LfEDA7/thg7tTmv1a5/GnO0wl0dQg80wglZaHUmxRvjwAHOfyN0mxrpqLUpcjsK3NHYMo4R1o6eho2ZyIb2FoeOC3ILK8kZ2HQMOuWywGXUkJBCeTbYFS0+ym1h2/6UgmvnrvKYZZtIEXGf75C2cIAp5LHNd71x7uPoTjakrWH9e3KFpaatjUvJUysFw0KrLMYMW2lTg4PeUQx6kJEALvxXEmCdVyPLHtCSjBhc01XCjIgafxou+PE6KC1dhxSCwoBCc+N4P3btM84pmdSSjJnjO/nvY4LQfVyz5/I+v6IwjUOMjy+MVCxIbKupTJaEktp7cTKU42Pvjh2m/8cSpC6aPsaX/MHSuUQLVVsIa4RUTs/r/BVAexNdjdnsNG7j/rV93xheLMzKnFrPeTEQchCyCcKb25aAIn7lrAertrZwyNXM8N6zfWrFo3d2SmOEcF83x/r+OOFgrAHYWF7cELjhV7UQo/6WAIUVl9JFl8a//HZ66VpbY3I9QKZqPru77lA+iOWAIr0hKxHCmmr0othSyeIl5y3qt4xT8gSNrKEZozs8Els67rgsLOZ+ygzwMfbtNhobfgzpEyGnz7htPtzUi6PuOoj7K0WF/MXiUFxwGajRD1hjYXHXI9p406qOyinp5/tiWcDHY0jIu4n64Qfq7kliB2gemag9QbOia0PbbDMbd43SHuvxFxrAocxins7MX5Kqbe1QixKBxoV4//PfAgGCu+Rlm4SvZizyDH+0reDHp92iO0BuX3bCfItl0PEwvYLqpwXG2MHlGsQ4S8pMJZv1JGmHiEoHQDdOjwmVlEP/nE9ADKjI8xLI0OOGITfy0SbeG/C2jKUDGSlDhM9I3IpK9iup6XnbRNC7yqueNsJCCIiXzdQhnaGN+46umnEdy5U5UbUJ48LFM9GkJo8BdDOiAZ7ZIQbKhYLMqvhU2wmNxjEAsS2AI7y4nWF64duePbk7YV3zvAVLEMD9AxJRNa3KDUibV7DjnkuprMEYjScFNcaR2ceP2u9R/5k1052Ryme5phAFRswlHjAudiP4dOy7CaxLgdJh9vUlU1702/+LPa1U9fvPi9qlA4XEUBJc3dFlpsR457IDl1iPqLp7o81NQgyV19iYU38uTiv975Pd3SiwQcsGjx+v4/6fl5T7EOOMTCtpbKxfemsQq/3olQZcminADAAI0cuGLHaHOFxbuGvRk/Z9u7CULqoVR6NE0yx1avj30oRhc/jWUoIALGxkz0dg1Dl9iaI7LqOOXKsXJFwjiuEAi70Jra2nW1PL08zLBhZsMABpW5csI7TPfew9ipFKcn5k1i+1KyCWKjC3W/8dF1d666+RaabBVTFTHacjoojBNDh0NDxk+IPTlwfqJkWpbnpFHXIbLbmpxEQ3ff/Z0g/mauXsoln9wDRjy/NHsQFw3P6vWuTJ43/+FZrk2cvAFRipCKdfD9y2+pjRj78s0KdCUDKJvdV91ChngV38T20TM+gghjpJaPlpFr2xbEz5g4A/NGt5rNwdwmYGeeeMXBSLHHUIc+6RsojRH9VTUm3/mLf/64b470XvoxoTKhlMBQ2jMEzo2PjxdGMppmn1RM24bWFJqaQv4BcuJa2Sam7Zokq1ldCsz06NCBHrhwqVQYpfFj42NZexz1EW9SR/kT58nEeQKJb2fPXjjp0u/YUkwHEgLeOnf2nOuf1TRTM02CLKLTPy60/x1CCztqn7Ev+BdsC3m+30decQvW/wBNTwU+CfUQAQAAAABJRU5ErkJggg==')"; - - if (options.baseSwitcher) { - // let switcherContent = '<div class="base-map-switcher" title="Toggle Base Layer" style="'; - // switcherContent += 'position: absolute; top: 70px; left: 4px; border: solid black 1px; '; - // switcherContent += `height: 50px; width: 50px; z-index: 10; border-radius: 4px; background: ${aerialCss};`; - // switcherContent += '"></div>'; - // $mapDiv.append(switcherContent); - // - // $mapDiv.find('.base-map-switcher').click(function() { - // "use strict"; - // osmLayer.setVisible(!osmLayer.getVisible()); - // satLayer.setVisible(!satLayer.getVisible()); - // - // if (osmLayer.getVisible()){ - // $(this).css('background', aerialCss); - // } else { - // $(this).css('background', osmCss); - // } - // }); - } - - if (options.zoom < 0 || options.zoom > 28) { - throw 'zoom out of range'; - } - - if (options.center.x >= -180 && options.center.x <= 180 && options.center.y >= -90 && options.center.y <= 90) { - let p = new ol.geom.Point([options.center.x, options.center.y]); - p.transform("EPSG:4326", "EPSG:3857"); - let coordinates = p.getCoordinates(); - options.center.x = coordinates[0]; - options.center.y = coordinates[1]; - } - - let map = new ol.Map({ - layers: [osmLayer, satLayer], - target: options.divId, - controls: ol.control.defaults({ - attributionOptions: {collapsible: false} - }), - view: new ol.View({ - center: [options.center.x, options.center.y], - zoom: options.zoom, - minZoom: options.minZoom, - maxZoom: options.maxZoom - }) - }); - - if (options.fullScreen){ - map.addControl(new ol.control.FullScreen()); - } - - return map; -} - -nm.quickMapBase = quickMapBase; -export default quickMapBase; - diff --git a/_src/olHelpers/quickMapMulti.js b/_src/olHelpers/quickMapMulti.js deleted file mode 100644 index f9e112c6d9ef094d3bf0d0106e18f52b0e742389..0000000000000000000000000000000000000000 --- a/_src/olHelpers/quickMapMulti.js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Created by gavorhes on 12/15/2015. - */ - -import quickMapBase from './quickMapBase'; -import provide from '../util/provide'; -import MapMoveCls from './mapMoveCls'; -import MapPopupCls from './mapPopupCls'; -let nm = provide('olHelpers'); - - -/** - * @typedef {object} quickMapMultiReturn - * @property {ol.Map} map The X Coordinate - * @property {MapMoveCls} mapMove The Y Coordinate - * @property {MapPopupCls} mapPopup The Y Coordinate - */ - -/** - * Sets up a map with some default parameters and initializes - * mapMove and mapPopup - * - * @param {object} [options={}] config options - * @param {string} [options.divId=map] map div id - * @param {object} [options.center={}] center config object - * @param {number} [options.center.x=-10018378] center x, web mercator x or lon - * @param {number} [options.center.y=5574910] center y, web mercator y or lat - * @param {number} [options.zoom=7] zoom level - * @param {number} [options.minZoom=undefined] min zoom - * @param {number} [options.maxZoom=undefined] max zoom - * @param {boolean} [options.baseSwitcher=true] if add base map switcher - * @param {boolean} [options.fullScreen=false] if add base map switcher - * @returns {quickMapMultiReturn} return map, map move, and map popup objects - */ -function quickMapMulti(options) { - let m = quickMapBase(options); - let mov = new MapMoveCls(); - let pop = new MapPopupCls(); - mov.init(m); - pop.init(m); - - return {map: m, mapMove: mov, mapPopup: pop}; -} - -nm.quickMapMulti = quickMapMulti; -export default quickMapMulti; diff --git a/_src/olHelpers/zoomResolutionConvert.js b/_src/olHelpers/zoomResolutionConvert.js deleted file mode 100644 index 68211e299dd00d32c41132b56ae135b5b390455e..0000000000000000000000000000000000000000 --- a/_src/olHelpers/zoomResolutionConvert.js +++ /dev/null @@ -1,78 +0,0 @@ -/** - * Created by gavorhes on 12/14/2015. - */ - -import provide from '../util/provide'; -const nm = provide('olHelpers.zoomResolutionConvert'); - -let _zoomResLookup = [ - 156543.03392804097, //0 - 78271.51696402048, //1 - 39135.75848201024, //2 - 19567.87924100512, //3 - 9783.93962050256, //4 - 4891.96981025128, //5 - 2445.98490512564, //6 - 1222.99245256282, //7 - 611.49622628141, //8 - 305.748113140705, //9 - 152.8740565703525, //10 - 76.43702828517625, //11 - 38.21851414258813, //12 - 19.109257071294063, //13 - 9.554628535647032, //14 - 4.777314267823516, //15 - 2.388657133911758, //16 - 1.194328566955879, //17 - 0.5971642834779395, //18 - 0.29858214173896974, //19 - 0.14929107086948487, //20 - 0.07464553543474244, //21 - 0.03732276771737122, //22 - 0.01866138385868561, //23 - 0.009330691929342804, //24 - 0.004665345964671402, //25 - 0.002332672982335701, //26 - 0.0011663364911678506, //27 - 0.0005831682455839253 //28 -]; - -/** - * Get the resolution given the zoom level - * @param {number} zoomLevel - the zoom level - * @returns {number|*} the map resolution - */ -export function zoomToResolution(zoomLevel) { - "use strict"; - - if (typeof zoomLevel == 'number') { - if (zoomLevel % 1 === 0 && zoomLevel >= 0 && zoomLevel <= 28) { - return _zoomResLookup[zoomLevel]; - } else { - console.log(`invalid zoom level provided: ${zoomLevel}`); - - return undefined; - } - } else { - return undefined; - } -} -nm.zoomToResolution = zoomToResolution; - - -/** - * Get resolution from the zoom level - * @param {number} resolution - the resolution - * @returns {number|*} the zoom level - */ -export function resolutionToZoom(resolution){ - for (let i = 0; i < _zoomResLookup.length; i++){ - if (resolution >= _zoomResLookup[i] ){ - return i; - } - } - - return 0; -} - -nm.resolutionToZoom = resolutionToZoom; diff --git a/_src/util/checkDefined.js b/_src/util/checkDefined.js deleted file mode 100644 index fe3fa020bc2632158123e806c230f7a424fba290..0000000000000000000000000000000000000000 --- a/_src/util/checkDefined.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Created by gavorhes on 12/11/2015. - */ -import provide from './provide'; -let nm = provide('util.checkDefined'); - -/** - * check if the input is undefined or null - * @param {*} input - input pointer - * @returns {boolean} true undefined or null - */ -export function undefinedOrNull (input){ - "use strict"; - - return (typeof input === 'undefined' || input === null); -} - -nm.undefinedOrNull = undefinedOrNull; - - -/** - * check if the input is defined and not null - * @param {*} input - input pointer - * @returns {boolean} true defined and not null - */ -export function definedAndNotNull (input){ - "use strict"; - - return !(undefinedOrNull(input)); -} - -nm.definedAndNotNull = definedAndNotNull; diff --git a/_src/util/colors.js b/_src/util/colors.js deleted file mode 100644 index 93207a8ecffea828b70c918e13231ce26bcefdc6..0000000000000000000000000000000000000000 --- a/_src/util/colors.js +++ /dev/null @@ -1,176 +0,0 @@ -/** - * Created by gavorhes on 11/3/2015. - */ -import provide from './provide'; -import * as chk from './checkDefined'; -let nm = provide('util.colors'); - - -/** - * helper function to convert to hex - * @param {number|string} x - the number to convert to hex - * @returns {string} number as hex - * @private - */ -function _hex(x) { - let hexDigits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; - - return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16]; -} - -/** - * converts an RGB string to hex - * @param {string} rgb - rgb color - * @returns {string} rbg as hex - */ -export function rgb2hex(rgb) { - let rgb1 = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); - - return ("#" + _hex(rgb1[1]) + _hex(rgb1[2]) + _hex(rgb1[3])).toUpperCase(); -} - -nm.rgb2hex = rgb2hex; - - -/** - * Convert hex string to RGB or RGBA string - * @param {string} hexString - hex color string - * @param {number} [alphaVal=undefined] Alpha value - * @returns {string} - rgb or rgba color - */ -export function hexAlphaToRgbOrRgba(hexString, alphaVal) { - hexString = ((hexString.charAt(0) == "#") ? hexString.substring(1, 7) : hexString); - let r = parseInt(hexString.substring(0, 2), 16).toString() || '0'; - let g = parseInt(hexString.substring(2, 4), 16).toString() || '0'; - let b = parseInt(hexString.substring(4, 6), 16).toString() || '0'; - if (alphaVal) { - return `rgba(${r},${g},${b},${alphaVal})`; - } else { - return `rgba(${r},${g},${b})`; - } -} - -nm.hexAlphaToRgbOrRgba = hexAlphaToRgbOrRgba; - - -/** - * adds alpha value to rgb string 'rgb(r, b, g)', returns 'rgba(r, g, b, a)' - * @param {string} rgb - rgb color - * @param {number} alpha - alpha value 0 to 1 - * @returns {string} rgba color - */ -export function rgbToRgba(rgb, alpha) { - let pieces = rgb.split(','); - pieces[0] = pieces[0].replace('rgb', 'rgba'); - pieces[2] = pieces[2].replace(')', ''); - pieces.push(' ' + alpha.toFixed(1) + ')'); - - return pieces.join(','); -} - -nm.rgbToRgba = rgbToRgba; - - -/** - * @typedef {function} colorLookupByNumber - * @param {number} num - the number to use to retrieve the color - * @returns {string} rgb color - */ - - -/** - * Make a blue green red gradient - * @param {number} minVal - minimum value - * @param {number} maxVal - maximum value - * @param {boolean} flipColors - if the colors should be flipped - * @returns {colorLookupByNumber} color lookup function - */ -export function makeBlueGreenRedGradient(minVal, maxVal, flipColors) { - - if (typeof flipColors != "boolean") { - flipColors = false; - } - - return function (theVal) { - let r, g, b; - let ratio; - - if (chk.undefinedOrNull(theVal)) { - return 'rgb(100,100,100)'; - } - - let percent = (theVal - minVal) / (maxVal - minVal); - - if (flipColors == true) { - percent = 1 - percent; - } - - if (percent >= 1) { - r = 255; - g = 0; - b = 0; - } else if (percent <= 0) { - r = 0; - g = 0; - b = 255; - } else if (percent < .25) { - // green up, blue constant - r = 0; - g = Math.floor(255 * percent / 0.25); - b = 255; - } else if (percent < 0.50) { - //blue down, green constant - ratio = (percent - 0.25) / 0.25; - r = 0; - g = 255; - b = 255 - Math.floor(255 * ratio); - } else if (percent < 0.75) { - // red up, green constant - ratio = (percent - 0.5) / 0.25; - r = Math.floor(255 * ratio); - g = 255; - b = 0; - } else { - // green down, red constant - ratio = (percent - 0.75) / 0.25; - r = 255; - g = 255 - Math.floor(255 * ratio); - b = 0; - } - - r = r.toFixed(); - g = g.toFixed(); - b = b.toFixed(); - - return 'rgb(' + r + ',' + g + ',' + b + ')'; - }; -} - -nm.makeBlueGreenRedGradient = makeBlueGreenRedGradient; - - -/** - * Create a function that will return colors based on a gradient - * @param {number} median - median value - * @param {number} stdDev - standard deviation - * @param {boolean} flipColors - if the colors should be flipped - * @returns {colorLookupByNumber} color lookup function - */ -export function makeBlueGreenRedGradientZScore(median, stdDev, flipColors) { - - let grd = makeBlueGreenRedGradient(-2.5, 2.5, flipColors); - - return function (theVal) { - - let zScore; - if (theVal == null) { - zScore = null; - } else { - zScore = (theVal - median) / stdDev; - } - - return grd(zScore); - }; -} - -nm.makeBlueGreenRedGradientZScore = makeBlueGreenRedGradientZScore; diff --git a/_src/util/dateConvert.js b/_src/util/dateConvert.js deleted file mode 100644 index c08f6358ef54891d9dd18b17b5979bb9a353eabc..0000000000000000000000000000000000000000 --- a/_src/util/dateConvert.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Created by gavorhes on 11/4/2015. - */ - -import provide from './provide'; -let nm = provide('util.dateConvert'); - -function leadingPad(inNum) { - let strNum = inNum.toFixed(); - if (strNum.length < 2) { - strNum = '0' + strNum; - } - - return strNum; -} - -nm.leadingPad = leadingPad; - -/** - * Given a date return a string in the format YYYY-mm-dd hh:MM:SS - * @param {Date} dte to convert - * @returns {string} the formatted date string - */ -export function dateToYyyyMmDdHhMmSs(dte) { - let yr = dte.getYear() + 1900; - let month = leadingPad(dte.getMonth() + 1); - let day = leadingPad(dte.getDate()); - let hrs = leadingPad(dte.getHours()); - let mns = leadingPad(dte.getMinutes()); - let secs = leadingPad(dte.getSeconds()); - - return `${yr}-${month}-${day} ${hrs}:${mns}:${secs}`; -} - -nm.dateToYyyyMmDdHhMmSs = dateToYyyyMmDdHhMmSs; - - -/** - * Given a date return a string in the format YYYYmmdd_hh0000 - * @param {Date} dte the input date - * @returns {string} the formatted date string - */ -export function dateToYyyyMmDdHh000(dte) { - let yr = dte.getYear() + 1900; - let month = leadingPad(dte.getMonth() + 1); - let day = leadingPad(dte.getDate()); - let hrs = leadingPad(dte.getHours()); - - return `${yr}${month}${day}_${hrs}0000`; -} - -nm.dateToYyyyMmDdHh000 = dateToYyyyMmDdHh000; diff --git a/_src/util/formatString.js b/_src/util/formatString.js deleted file mode 100644 index fbbb79530d8a0eb0f15cd3a9757b38f2334cc037..0000000000000000000000000000000000000000 --- a/_src/util/formatString.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Created by gavorhes on 10/30/2015. - */ - -if (!String.prototype.format) { - /** - * helper function for string replacement to keep code clean - * usage - * var aString = 'some{0}stuff{1}replaced'; - * var c = 'cat'; - * var b = 'bird'; - * aString.format(c, b) returns 'somecatstuffbirdreplaced' - * prettier than - * 'some' + c + 'stuff' + b + 'replaced' - * but same effect - * adapted to take a single array that is used for replacement by position ie - * var arrReplacements = [c, b]; - * aString.format(arrReplacements) - * @returns {string} converted string - */ - String.prototype.format = function () { - let args = arguments; - for (let i = 0; i < args.length; i++) { - args[i] = (args[i] !== null ? args[i] : ''); - } - - //if the first argument is an array, use that - if (args[0].constructor == Array) { - args = args[0]; - } - - return this.replace(/{(\d+)}/g, function (match, number) { - return typeof args[number] != 'undefined' ? args[number] : match; - }); - }; -} - -export default undefined; diff --git a/_src/util/getUrlParams.js b/_src/util/getUrlParams.js deleted file mode 100644 index 892acd86321c9e0c6aee96d077fe9a20fb685421..0000000000000000000000000000000000000000 --- a/_src/util/getUrlParams.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Created by gavorhes on 6/23/2016. - */ -import provide from './provide'; -let nm = provide('util'); - -/** - * - * @returns {object} object representation of url params - */ -function getUrlParams() { - "use strict"; - - let match; - let pl = /\+/g; // Regex for replacing addition symbol with a space - let search = /([^&=]+)=?([^&]*)/g; - let decode = function (s) { - return decodeURIComponent(s.replace(pl, " ")); - }; - let query = window.location.search.substring(1); - - let urlParams = {}; - while (match = search.exec(query)) { - /** - * @type {string} - */ - let val = decode(match[2]).trim(); - - let typedVal = null; - if (val.length == 0){ - // pass - } else if (!isNaN(val)){ - if (val.indexOf('.') > -1){ - typedVal = parseFloat(val); - } else { - typedVal = parseInt(val); - } - } else if (val.toLowerCase() == 'false' || val.toLowerCase() == 'true'){ - typedVal = val.toLowerCase() == 'true'; - } else { - typedVal = val; - } - urlParams[decode(match[1])] = typedVal; - } - - return urlParams; -} - -nm.getUrlParams = getUrlParams; - -export default getUrlParams; diff --git a/_src/util/makeGuid.js b/_src/util/makeGuid.js deleted file mode 100644 index 128c322df494a63f6050720feeac4eb37fd93bd8..0000000000000000000000000000000000000000 --- a/_src/util/makeGuid.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Created by gavorhes on 11/3/2015. - */ - -import provide from './provide'; -let nm = provide('util'); - - -/** - * guids are used to uniquely identify groups and features - * @returns {string} a new guid - */ -function makeGuid() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' - .replace(/[xy]/g, function (c) { - let r = Math.random() * 16 | 0, v = c == 'x' ? r : r & 0x3 | 0x8; - - return v.toString(16); - }); - -} -nm.makeGuid = makeGuid; -export default makeGuid; - - diff --git a/_src/util/objectHelpers.js b/_src/util/objectHelpers.js deleted file mode 100644 index abc7770c5f216af6fa90370eb4640288b88db611..0000000000000000000000000000000000000000 --- a/_src/util/objectHelpers.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Created by gavorhes on 6/7/2016. - */ - -import provide from './provide'; -let nm = provide('util'); - -/** - * @typedef {object} keyValuePair - * @property {string} key - * @property {object} value - */ - - -/** - * iterate over the key value pairs of an object - * @param {object} obj - the input object - * @returns {Array<keyValuePair>} - array of key value pairs - */ -export function keyValPairs(obj) { - let outArray = []; - for (let key of Object.keys(obj)) { - outArray.push({'key': key, 'value': obj[key]}); - - } - outArray.sort(function (a, b) { - "use strict"; - - return a > b ? 1 : -1; - }); - - return outArray; -} - -nm.keyValPairs = keyValPairs; diff --git a/_src/util/provide.js b/_src/util/provide.js deleted file mode 100644 index cee9eb3ba6580615bdaa6b347b2c63c5562f8da7..0000000000000000000000000000000000000000 --- a/_src/util/provide.js +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Created by gavorhes on 12/10/2015. - */ - - -/** - * create a namespace on the gv object - * @param {string} namespace to create - * @returns {object} object representing the namespace - */ -function provide(namespace){ - "use strict"; - if (typeof window.gv == 'undefined'){ - window.gv = {}; - } - - let parts = namespace.split('.'); - let nameSpace = window.gv; - - for (let i=0; i< parts.length; i++){ - let newObject = nameSpace[parts[i]]; - - if (typeof newObject == 'undefined'){ - nameSpace[parts[i]] = {}; - } - - nameSpace = nameSpace[parts[i]]; - } - - return nameSpace; -} - -provide('util'); -window.gv.util.provide = provide; - -export default provide; diff --git a/dist/layers/LayerBaseVectorGeoJson.d.ts b/dist/layers/LayerBaseVectorGeoJson.d.ts index 4cfa75c45e97065b9a97b892c0a47d8c2e3704a1..478f6f1907f8db2cff2722d793f8c2729ca1dcd9 100644 --- a/dist/layers/LayerBaseVectorGeoJson.d.ts +++ b/dist/layers/LayerBaseVectorGeoJson.d.ts @@ -12,7 +12,7 @@ export interface LayerBaseVectorGeoJsonOptions extends LayerBaseVectorOptions { * The Vector GeoJson Layer * @augments LayerBaseVector */ -declare class LayerBaseVectorGeoJson extends LayerBaseVector { +export declare class LayerBaseVectorGeoJson extends LayerBaseVector { _geoJsonFormat: ol.format.GeoJSON; _transform: olx.format.ReadOptions; /** diff --git a/dist/layers/LayerBaseVectorGeoJson.js b/dist/layers/LayerBaseVectorGeoJson.js index e6927ebbb0eec948649da6e86773cb66f1d09307..036378af82beeb6f573748cfba72d83505e63dc2 100644 --- a/dist/layers/LayerBaseVectorGeoJson.js +++ b/dist/layers/LayerBaseVectorGeoJson.js @@ -96,6 +96,7 @@ var LayerBaseVectorGeoJson = (function (_super) { }; return LayerBaseVectorGeoJson; }(LayerBaseVector_1.LayerBaseVector)); +exports.LayerBaseVectorGeoJson = LayerBaseVectorGeoJson; nm.LayerBaseVectorGeoJson = LayerBaseVectorGeoJson; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = LayerBaseVectorGeoJson; diff --git a/dist/layers/LayerBaseVectorGeoJson.js.map b/dist/layers/LayerBaseVectorGeoJson.js.map index 4e9afd4846f68c22b333c60eb941051e44273a0f..2d2052aeb99de0d3809d558b1720c438a045975b 100644 --- a/dist/layers/LayerBaseVectorGeoJson.js.map +++ b/dist/layers/LayerBaseVectorGeoJson.js.map @@ -1 +1 @@ -{"version":3,"file":"LayerBaseVectorGeoJson.js","sourceRoot":"","sources":["../../src/layers/LayerBaseVectorGeoJson.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;AAEH,gCAAsD,mBAAmB,CAAC,CAAA;AAC1E,wBAAoB,iBAAiB,CAAC,CAAA;AACtC,0BAAsB,WAAW,CAAC,CAAA;AAElC,IAAY,IAAI,WAAM,0BAA0B,CAAC,CAAA;AAEjD,IAAI,EAAE,GAAG,iBAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,IAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAS5B;;;GAGG;AACH;IAAqC,0CAAe;IAIhD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,gCAAY,GAAG,EAAE,OAAuC;QACpD,GAAG,GAAG,OAAO,GAAG,IAAI,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC;QACxC,kBAAM,GAAG,EAAE,OAAO,CAAC,CAAC;QAEpB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAE9C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,EAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QAEzG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,4CAAW,GAAX,UAAY,iBAAuB;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,WAAW,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClF,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACnG,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,sCAAK,GAAL;QAAA,iBAkBC;QAhBG,EAAE,CAAC,CAAC,gBAAK,CAAC,KAAK,WAAE,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAED,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EACX,IAAI,CAAC,OAAO,EACZ,UAAC,CAAC;YACE,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,CAAC;QAC5B,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CACf;YACI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC,CACJ,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,gDAAe,GAAf,UAAgB,CAAC;QACb,gBAAK,CAAC,eAAe,YAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnF,CAAC;IACL,6BAAC;AAAD,CAAC,AA1FD,CAAqC,iCAAe,GA0FnD;AAED,EAAE,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;AACnD;kBAAe,sBAAsB,CAAC"} \ No newline at end of file +{"version":3,"file":"LayerBaseVectorGeoJson.js","sourceRoot":"","sources":["../../src/layers/LayerBaseVectorGeoJson.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;AAEH,gCAAsD,mBAAmB,CAAC,CAAA;AAC1E,wBAAoB,iBAAiB,CAAC,CAAA;AACtC,0BAAsB,WAAW,CAAC,CAAA;AAElC,IAAY,IAAI,WAAM,0BAA0B,CAAC,CAAA;AAEjD,IAAI,EAAE,GAAG,iBAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,IAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAS5B;;;GAGG;AACH;IAA4C,0CAAe;IAIvD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,gCAAY,GAAG,EAAE,OAAuC;QACpD,GAAG,GAAG,OAAO,GAAG,IAAI,QAAQ,GAAG,GAAG,GAAG,EAAE,CAAC;QACxC,kBAAM,GAAG,EAAE,OAAO,CAAC,CAAC;QAEpB,IAAI,CAAC,cAAc,GAAG,IAAI,cAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAE9C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,EAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QAEzG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,4CAAW,GAAX,UAAY,iBAAuB;QAC/B,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,WAAW,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClF,CAAC;QAAC,IAAI,CAAC,CAAC;YACJ,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACnG,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,sCAAK,GAAL;QAAA,iBAkBC;QAhBG,EAAE,CAAC,CAAC,gBAAK,CAAC,KAAK,WAAE,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAED,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EACX,IAAI,CAAC,OAAO,EACZ,UAAC,CAAC;YACE,KAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,CAAC;QAC5B,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CACf;YACI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACzB,CAAC,CACJ,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,gDAAe,GAAf,UAAgB,CAAC;QACb,gBAAK,CAAC,eAAe,YAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnF,CAAC;IACL,6BAAC;AAAD,CAAC,AA1FD,CAA4C,iCAAe,GA0F1D;AA1FY,8BAAsB,yBA0FlC,CAAA;AAED,EAAE,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;AACnD;kBAAe,sBAAsB,CAAC"} \ No newline at end of file diff --git a/dist/olHelpers/quickMapBase.js b/dist/olHelpers/quickMapBase.js index 9bfea03093ea1679aadd133f922b435cd91f0067..b04d5482923d208da4d3aa728392145471832227 100644 --- a/dist/olHelpers/quickMapBase.js +++ b/dist/olHelpers/quickMapBase.js @@ -2,10 +2,10 @@ * Created by gavorhes on 12/15/2015. */ "use strict"; -var $ = require('jquery'); var provide_1 = require('../util/provide'); var custom_ol_1 = require('custom-ol'); var nm = provide_1.default('olHelpers'); +var $ = require('jquery'); /** * Sets up a map with some default parameters and initializes * mapMove and mapPopup diff --git a/dist/olHelpers/quickMapBase.js.map b/dist/olHelpers/quickMapBase.js.map index 172c3bb5f8eb0a12c3b85f52c551630083ad14b4..dcf0ce4dbd0748a0035a0b71fdb9e4cafddfac34 100644 --- a/dist/olHelpers/quickMapBase.js.map +++ b/dist/olHelpers/quickMapBase.js.map @@ -1 +1 @@ -{"version":3,"file":"quickMapBase.js","sourceRoot":"","sources":["../../src/olHelpers/quickMapBase.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,IAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5B,wBAAoB,iBAAiB,CAAC,CAAA;AACtC,0BAAiB,WAAW,CAAC,CAAA;AAC7B,IAAM,EAAE,GAAG,iBAAO,CAAC,WAAW,CAAC,CAAC;AAahC;;;;;;;;;;;;;;;GAeG;AACH,sBAA6B,OAAyB;IAClD,OAAO,GAAG,OAAO,IAAI,EAAqB,CAAC;IAC3C,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACvC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAClE,OAAO,CAAC,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAC9F,OAAO,CAAC,UAAU,GAAG,OAAO,OAAO,CAAC,UAAU,IAAI,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;IAGzF,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEpC,IAAI,QAAQ,GAAG,IAAI,cAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,cAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC;IAChE,sGAAsG;IAEtG,IAAI,MAAM,GAAG,m0GAAm0G,CAAC;IACj1G,IAAI,SAAS,GAAG,+uIAA+uI,CAAC;IAEhwI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAkB3B,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,mBAAmB,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,GAAG,IAAI,cAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,cAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;QAE5C,CAAC,CAAC,SAAS,CAAC,IAAI,cAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,EAAE,IAAI,cAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC;QACtG,IAAI,WAAW,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,GAAG,GAAG,IAAI,cAAE,CAAC,GAAG,CAAC;QACjB,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,QAAQ,EAAE,cAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1B,kBAAkB,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;SAC3C,CAAC;QACF,IAAI,EAAE,IAAI,cAAE,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC;KACL,CAAC,CAAC;IAEH,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACrB,oCAAoC;QACpC,GAAG,CAAC,UAAU,CAAC,IAAI,cAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AAxEe,oBAAY,eAwE3B,CAAA;AAED,EAAE,CAAC,YAAY,GAAG,YAAY,CAAC;AAC/B;kBAAe,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"quickMapBase.js","sourceRoot":"","sources":["../../src/olHelpers/quickMapBase.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,wBAAoB,iBAAiB,CAAC,CAAA;AACtC,0BAAiB,WAAW,CAAC,CAAA;AAC7B,IAAM,EAAE,GAAG,iBAAO,CAAC,WAAW,CAAC,CAAC;AAChC,IAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAa5B;;;;;;;;;;;;;;;GAeG;AACH,sBAA6B,OAAyB;IAClD,OAAO,GAAG,OAAO,IAAI,EAAqB,CAAC;IAC3C,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACvC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,GAAG,OAAO,OAAO,CAAC,IAAI,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAClE,OAAO,CAAC,YAAY,GAAG,OAAO,OAAO,CAAC,YAAY,IAAI,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAC9F,OAAO,CAAC,UAAU,GAAG,OAAO,OAAO,CAAC,UAAU,IAAI,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;IAGzF,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEpC,IAAI,QAAQ,GAAG,IAAI,cAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,IAAI,cAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC;IAChE,sGAAsG;IAEtG,IAAI,MAAM,GAAG,m0GAAm0G,CAAC;IACj1G,IAAI,SAAS,GAAG,+uIAA+uI,CAAC;IAEhwI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAkB3B,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,mBAAmB,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,GAAG,IAAI,cAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,cAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC;QAE5C,CAAC,CAAC,SAAS,CAAC,IAAI,cAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,EAAE,IAAI,cAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC;QACtG,IAAI,WAAW,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,GAAG,GAAG,IAAI,cAAE,CAAC,GAAG,CAAC;QACjB,MAAM,EAAE,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,QAAQ,EAAE,cAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC1B,kBAAkB,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;SAC3C,CAAC;QACF,IAAI,EAAE,IAAI,cAAE,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5C,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC;KACL,CAAC,CAAC;IAEH,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACrB,oCAAoC;QACpC,GAAG,CAAC,UAAU,CAAC,IAAI,cAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AAxEe,oBAAY,eAwE3B,CAAA;AAED,EAAE,CAAC,YAAY,GAAG,YAAY,CAAC;AAC/B;kBAAe,YAAY,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index 9619ebd4f9286869072f0333b7aa7e3ceecc1553..39e5e4a37a8e1e1860986bebd2a3362874b65676 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "react-dom": "^15.3.2", "source-map-loader": "^0.1.5", "ts-loader": "^0.8.2", - "webpack": "^1.13.2", "custom-ol": "git://github.com/glennvorhes/custom-ol.git#master" }, "repository": { diff --git a/src/_scratch/_testimport.ts b/src/_scratch/_testimport.ts new file mode 100644 index 0000000000000000000000000000000000000000..3d9b769418ffdaf4e79700ffa488268bd9181e67 --- /dev/null +++ b/src/_scratch/_testimport.ts @@ -0,0 +1,3 @@ + +import {ol} from 'custom-ol'; +console.log(ol.animation.bounce({duration: 10, resolution: 30, start: 4, easing: (t) => {return 5}})); \ No newline at end of file diff --git a/src/gulp-helpers.js b/src/gulp-helpers.js deleted file mode 100644 index b5f91c5478fee5083dd00729a867711667cef5e0..0000000000000000000000000000000000000000 --- a/src/gulp-helpers.js +++ /dev/null @@ -1,168 +0,0 @@ -/** - * Created by gavorhes on 5/10/2016. - * Helpers functions for gulp tasks - */ - -const gulp = require('gulp'); -const babel = require('gulp-babel'); -const babelify = require('babelify'); -const browserify = require('browserify'); -const buffer = require('vinyl-buffer'); -const source = require('vinyl-source-stream'); -const sourcemaps = require('gulp-sourcemaps'); -const minify = require('gulp-minify'); -const less = require('gulp-less'); -const cssmin = require('gulp-cssmin'); -const rename = require('gulp-rename'); -const glob = require('glob'); -const watchify = require('watchify'); -const gulpUtil = require('gulp-util'); - - -/** - * @typedef {object} dirNameFilePath - * @property {string} dirName - directory name - * @property {string} fileName - file name - */ - -/** - * get directory and file name from output path - * @param {string} outputFile - output file path - * @returns {dirNameFilePath} file directory and path - * @private - */ -function _processOutDir(outputFile) { - "use strict"; - - let pathParts = outputFile.split('/'); - let outFileName = pathParts[pathParts.length - 1]; - pathParts.splice(pathParts.length - 1, 1); - let outDir = pathParts.length === 0 ? '.' : pathParts.join('/'); - - return {dirName: outDir, fileName: outFileName}; -} - -/** - * - * @param {string} inputFile - input file set to null to bundle everything in 'test' directory - * @param {dirNameFilePath|string} outFile - output file as string or path object - * @param {boolean} [production=false] if production, minify and don't watch - * @returns {*} the stream - * @private - */ -export function bundleEs2015(inputFile, outFile, production) { - "use strict"; - - - - if (typeof outFile == 'string') { - outFile = _processOutDir(outFile); - } - - production = typeof production == 'boolean' ? production : false; - - if (inputFile.indexOf('*') > -1) { - inputFile = glob.sync(inputFile); - } - - - let bundler = browserify({ - entries: inputFile, - cache: {}, - packageCache: {}, - debug: true - }); - - - bundler.transform(babelify.configure({ - presets: ["es2015"], - ignore: /ol\-build\.js|jquery\.min/ - // ignore: /ol\-build\.js|jquery\.min|\/node_modules\/(?!webmapsjs\/)|\/node_modules\/webmapsjs\/(?!lib\/)/ - })); - - if (!production) { - bundler = watchify(bundler); - } - - - function runBundle() { - console.log(inputFile); - let stream = bundler.bundle() - .on('error', function (err) { - console.error(err); - }) - .pipe(source(outFile.fileName)) - .pipe(buffer()) - .pipe(sourcemaps.init({loadMaps: true})); - - if (production) { - stream = stream.pipe(minify({ - ext: { - src: '-debug.js', - min: '.js' - }, - exclude: ['tasks'], - ignoreFiles: ['.combo.js', '-min.js'] - })); - } - - return stream.pipe(sourcemaps.write('./')).pipe(gulp.dest(outFile.dirName)); - } - - if (!production) { - bundler.on('update', runBundle); - bundler.on('log', gulpUtil.log); - } - - return runBundle(); -} - - -/** - * convert less file - * @param {string} inputFile - input less file - * @param {string} outputFile - output css file - * @returns {*} stream - */ -export function processLessFile(inputFile, outputFile) { - "use strict"; - - let pathParts = outputFile.split('/'); - let outFileName = pathParts[pathParts.length - 1]; - pathParts.splice(pathParts.length - 1, 1); - let outDir = pathParts.length === 0 ? '.' : pathParts.join('/'); - - let fileNameParts = outFileName.split('.'); - - return gulp.src(inputFile) - .pipe(less().on('error', function (err) { - console.log(err); - })) - .pipe(cssmin().on('error', function (err) { - console.log(err); - })) - .pipe(rename({ - basename: fileNameParts[0], - extname: '.' + fileNameParts[1], - suffix: '.min' - })) - .pipe(gulp.dest(outDir)); -} - -/** - * make multiple bundles - * @param {Array<Array<string>>} fileArray - array with elements [input file, output file] - * @param {boolean} production - if is production - * @returns {*} output stream - */ -export function bundleEs2015Multiple(fileArray, production) { - "use strict"; - - let outStream = undefined; - - for (let f of fileArray) { - outStream = bundleEs2015(f[0], f[1], production); - } - - return outStream; -} diff --git a/src/layers/LayerBaseVectorEsri.js b/src/layers/LayerBaseVectorEsri.ts similarity index 92% rename from src/layers/LayerBaseVectorEsri.js rename to src/layers/LayerBaseVectorEsri.ts index 3bc94e3b1e216b5073ee9cb079211ffabb9535d0..368aab87d029342174949a82ab6a9c43f9630c8e 100644 --- a/src/layers/LayerBaseVectorEsri.js +++ b/src/layers/LayerBaseVectorEsri.ts @@ -2,19 +2,30 @@ * Created by gavorhes on 11/2/2015. */ -import $ from '../jquery/jquery'; -import LayerBaseVector from './LayerBaseVector'; +import {LayerBaseVector, LayerBaseVectorOptions} from './LayerBaseVector'; import * as esriToOl from '../olHelpers/esriToOlStyle'; import provide from '../util/provide'; -import ol from '../ol/ol'; - +import {ol} from 'custom-ol'; +const $ = require('jquery'); let nm = provide('layers'); +export interface LayerBaseVectorEsriOptions extends LayerBaseVectorOptions{ + format: string; + outSR: number; + where: string; + outFields: string; + useEsriStyle: boolean; +} + /** * Base layer for esri vector layers * @augments LayerBaseVector */ class LayerBaseVectorEsri extends LayerBaseVector { + _outSR: number; + _esriFormat: ol.format.EsriJSON; + _urlCopy: string; + _useEsriStyle: boolean; /** * The base vector layer @@ -47,7 +58,7 @@ class LayerBaseVectorEsri extends LayerBaseVector { * @param {boolean} [options.collapseLegend=false] if the legend should be initially collapsed * @param {number} [options.mapMoveMakeGetParams=function(extent, zoomLevel){}] function to create additional map move params */ - constructor(url, options) { + constructor(url: string, options: LayerBaseVectorEsriOptions) { if (typeof options.params != 'object') { options.params = {}; @@ -83,7 +94,7 @@ class LayerBaseVectorEsri extends LayerBaseVector { * add additional content to the legend * @param {string} [additionalContent=''] additional content to add to legend */ - addLegendContent(additionalContent) { + addLegendContent(additionalContent?: string) { if (!this._useEsriStyle) { super.addLegendContent(additionalContent); } else { diff --git a/src/layers/LayerBaseVectorGeoJson.ts b/src/layers/LayerBaseVectorGeoJson.ts index a5a754fea9b88d7cbd167e4b51364043dad92934..a0ca2f6fe3ae9fec2d24357fa63cc51ffa9f37c1 100644 --- a/src/layers/LayerBaseVectorGeoJson.ts +++ b/src/layers/LayerBaseVectorGeoJson.ts @@ -22,7 +22,7 @@ export interface LayerBaseVectorGeoJsonOptions extends LayerBaseVectorOptions{ * The Vector GeoJson Layer * @augments LayerBaseVector */ -class LayerBaseVectorGeoJson extends LayerBaseVector { +export class LayerBaseVectorGeoJson extends LayerBaseVector { _geoJsonFormat: ol.format.GeoJSON; _transform: olx.format.ReadOptions; diff --git a/_src/layers/LayerEsriTile.js b/src/layers/LayerBaseXyzTile.ts similarity index 54% rename from _src/layers/LayerEsriTile.js rename to src/layers/LayerBaseXyzTile.ts index 2e94f691e3aefe53dfcdfae6797d67f5fef26af7..7208995aa138cd9b4590ca397e88e2e2feffedbc 100644 --- a/_src/layers/LayerEsriTile.js +++ b/src/layers/LayerBaseXyzTile.ts @@ -1,20 +1,21 @@ /** * Created by gavorhes on 12/4/2015. */ +import {LayerBase, LayerBaseOptions} from './LayerBase'; import provide from '../util/provide'; -import LayerBaseXyzTile from './LayerBaseXyzTile'; - +import {ol} from 'custom-ol'; const nm = provide('layers'); /** - * Esri tile - * @augments LayerBaseXyzTile + * XYZ tile + * @augments LayerBase */ -class LayerEsriTile extends LayerBaseXyzTile { +export class LayerBaseXyzTile extends LayerBase { + /** - * The Esri tile layer + * The XYZ tile layer * @param {string} url - url for source * @param {object} options - config * @param {string} [options.id] - layer id @@ -31,16 +32,37 @@ class LayerEsriTile extends LayerBaseXyzTile { * @param {boolean} [options.legendContent] additional content to add to the legend * @param {boolean} [options.useEsriStyle=false] if the map service style should be used */ - - constructor(url, options) { - if (url.search(/\/$/) == -1){ - url += '/'; - } - url += 'tile/{z}/{y}/{x}'; - + constructor(url: string, options: LayerBaseOptions) { super(url, options); + this._source = new ol.source.XYZ({url: this.url == '' ? undefined : this.url}); + + this._olLayer = new ol.layer.Tile({ + source: this._source as ol.source.XYZ, + visible: this.visible, + opacity: this.opacity, + minResolution: this._minResolution, + maxResolution: this._maxResolution + } ); + + this._olLayer.setZIndex(this._zIndex); + } + + /** + * + * @returns {ol.source.XYZ} the vector source + */ + get source(): ol.source.XYZ { + return this._source as ol.source.XYZ; + } + + /** + * + * @returns {ol.layer.Tile|ol.layer.Base|undefined} the ol layer + */ + get olLayer() : ol.layer.Tile { + return this._olLayer as ol.layer.Tile; } } -nm.LayerBaseXyzTile = LayerEsriTile; -export default LayerEsriTile; +nm.LayerBaseXyzTile = LayerBaseXyzTile; +export default LayerBaseXyzTile; diff --git a/src/layers/LayerEsriTile.js b/src/layers/LayerEsriTile.js deleted file mode 100644 index ee0e1b0ffc09754867b8e33a7eea3b0211d129f1..0000000000000000000000000000000000000000 --- a/src/layers/LayerEsriTile.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Created by gavorhes on 12/4/2015. - */ -import provide from '../util/provide'; -import LayerBaseXyzTile from './LayerBaseXyzTile'; - -const nm = provide('layers'); - -/** - * Esri tile - * @augments LayerBaseXyzTile - */ -export class LayerEsriTile extends LayerBaseXyzTile { - - /** - * The Esri tile layer - * @param {string} url - url for source - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * @param {boolean} [options.useEsriStyle=false] if the map service style should be used - */ - constructor(url, options) { - if (url.search(/\/$/) == -1){ - url += '/'; - } - url += 'tile/{z}/{y}/{x}'; - - super(url, options); - } -} - -nm.LayerBaseXyzTile = LayerEsriTile; - diff --git a/src/layers/LayerBaseXyzTile.js b/src/layers/LayerEsriTile.ts similarity index 71% rename from src/layers/LayerBaseXyzTile.js rename to src/layers/LayerEsriTile.ts index 88c58565cdb33fa6dd690e9d2748f5802c2175cf..4c9bc70ca8ebce10cba163008b93869ff2a4b065 100644 --- a/src/layers/LayerBaseXyzTile.js +++ b/src/layers/LayerEsriTile.ts @@ -1,21 +1,27 @@ /** * Created by gavorhes on 12/4/2015. */ -import $ from '../jquery/jquery'; -import LayerBase from './LayerBase'; -import * as esriToOl from '../olHelpers/esriToOlStyle'; import provide from '../util/provide'; -import ol from '../ol/ol'; +import {LayerBaseXyzTile} from './LayerBaseXyzTile'; +import {LayerBaseOptions} from './LayerBase' +import * as esriToOl from '../olHelpers/esriToOlStyle'; + + const nm = provide('layers'); +export interface LayerEsriTileOptions extends LayerBaseOptions{ + useEsriStyle?: boolean +} + /** - * XYZ tile - * @augments LayerBase + * Esri tile + * @augments LayerBaseXyzTile */ -class LayerBaseXyzTile extends LayerBase { +export class LayerEsriTile extends LayerBaseXyzTile { + _useEsriStyle: boolean; /** - * The XYZ tile layer + * The Esri tile layer * @param {string} url - url for source * @param {object} options - config * @param {string} [options.id] - layer id @@ -32,18 +38,13 @@ class LayerBaseXyzTile extends LayerBase { * @param {boolean} [options.legendContent] additional content to add to the legend * @param {boolean} [options.useEsriStyle=false] if the map service style should be used */ - constructor(url, options) { - super(url, options); - this._source = new ol.source.XYZ({url: this.url == '' ? undefined : this.url}); - this._olLayer = new ol.layer.Tile({ - source: this._source, - visible: this.visible, - opacity: this.opacity, - minResolution: this._minResolution, - maxResolution: this._maxResolution, - zIndex: this._zIndex - }); + constructor(url: string, options: LayerEsriTileOptions) { + if (url.search(/\/$/) == -1) { + url += '/'; + } + url += 'tile/{z}/{y}/{x}'; + super(url, options); this._useEsriStyle = typeof options.useEsriStyle == 'boolean' ? options.useEsriStyle : false; @@ -52,11 +53,12 @@ class LayerBaseXyzTile extends LayerBase { } } + /** * add additional content to the legend * @param {string} [additionalContent=''] additional content for legend */ - addLegendContent(additionalContent) { + addLegendContent(additionalContent = ''): void { if (!this._useEsriStyle) { super.addLegendContent(additionalContent); } else { @@ -85,22 +87,9 @@ class LayerBaseXyzTile extends LayerBase { } } - /** - * - * @returns {ol.source.XYZ} the vector source - */ - get source() { - return super.source; - } - /** - * - * @returns {ol.layer.Tile|ol.layer.Base|undefined} the ol layer - */ - get olLayer() { - return super.olLayer; - } } -nm.LayerBaseXyzTile = LayerBaseXyzTile; -export default LayerBaseXyzTile; +nm.LayerBaseXyzTile = LayerEsriTile; +export default LayerEsriTile; + diff --git a/src/layers/LayerRealEarthTile.js b/src/layers/LayerRealEarthTile.ts similarity index 86% rename from src/layers/LayerRealEarthTile.js rename to src/layers/LayerRealEarthTile.ts index 46eb2a906e7be5b262e57d526a4c95f0414238d5..3e2aa409a2b0824faef33ad877ed7ad450de0c31 100644 --- a/src/layers/LayerRealEarthTile.js +++ b/src/layers/LayerRealEarthTile.ts @@ -2,18 +2,27 @@ * Created by gavorhes on 11/4/2015. */ -import $ from '../jquery/jquery'; -import LayerBaseXyzTile from './LayerBaseXyzTile'; +import {LayerBaseXyzTile} from './LayerBaseXyzTile'; +import {LayerBaseOptions} from './LayerBase'; import RealEarthAnimateTile from '../mixin/RealEarthAnimateTile'; import provide from '../util/provide'; const mixIns = require('es6-mixins'); const nm = provide('layers'); +export interface LayerRealEarthTileOptions extends LayerBaseOptions{ + products: string; + hasTimes?: boolean; + animate?: boolean; +} + + /** * Real earth tile * @augments LayerBaseXyzTile */ class LayerRealEarthTile extends LayerBaseXyzTile { + _products: string; + timeInit: Function; /** * The base layer for all others * @param {object} options - config @@ -34,7 +43,7 @@ class LayerRealEarthTile extends LayerBaseXyzTile { * @param {boolean} [options.hasTimes=false] If the layer is time dependent, fixed set of dates * @param {boolean} [options.animate=false] if the layer should be animated */ - constructor(options) { + constructor(options: LayerRealEarthTileOptions) { options.animate = typeof options.animate == 'boolean' ? options.animate : false; if (!options.animate) { super(`http://realearth.ssec.wisc.edu/api/image?products=${options.products}&x={x}&y={y}&z={z}`, options); diff --git a/src/layers/LayerRealEarthVector.js b/src/layers/LayerRealEarthVector.js deleted file mode 100644 index 65ebab4a8bbcc248ed45fa15ff6d9704c5fd3904..0000000000000000000000000000000000000000 --- a/src/layers/LayerRealEarthVector.js +++ /dev/null @@ -1,63 +0,0 @@ -/** - * Created by gavorhes on 11/13/2015. - */ - -import LayerBaseVectorGeoJson from './LayerBaseVectorGeoJson'; -import RealEarthAnimateVector from '../mixin/RealEarthAnimateVector'; -import provide from '../util/provide'; -const mixIns = require('es6-mixins'); -const nm = provide('layers'); - -/** - * Vector real earth vector - * @augments LayerBaseVectorGeoJson - */ -class LayerVectorRealEarth extends LayerBaseVectorGeoJson { - /** - * Real Earth vector layer - * @param {object} options - config - * @param {string} [options.id] - layer id - * @param {string} [options.name=Unnamed Layer] - layer name - * @param {number} [options.opacity=1] - opacity - * @param {boolean} [options.visible=true] - default visible - * @param {number} [options.minZoom=undefined] - min zoom level, 0 - 28 - * @param {number} [options.maxZoom=undefined] - max zoom level, 0 - 28 - * @param {object} [options.params={}] the get parameters to include to retrieve the layer - * @param {number} [options.zIndex=0] the z index for the layer - * @param {function} [options.loadCallback] function to call on load, context this is the layer object - * @param {boolean} [options.legendCollapse=false] if the legend item should be initially collapsed - * @param {boolean} [options.legendCheckbox=true] if the legend item should have a checkbox for visibility - * @param {boolean} [options.legendContent] additional content to add to the legend - * - * @param {boolean} [options.autoLoad=false] if the layer should auto load if not visible - * @param {object} [options.style=undefined] the layer style, use openlayers default style if not defined - * @param {boolean} [options.onDemand=false] if the layer should be loaded by extent on map move - * @param {number} [options.onDemandDelay=300] delay before the map move callback should be called - * @param {MapMoveCls} [options.mapMoveObj=mapMove] alternate map move object for use with multi map pages - * - * @param {object} [options.transform={}] SR transform, set as false for no transform - * @param {string} options.transform.dataProjection=EPSG:4326 the data CRS - * @param {string} options.transform.featureProjection=EPSG:3857 the feature/map CRS - * - * @param {string} options.products real earth products identifier - * @param {boolean} [options.animate=false] if the layer should be animated - */ - constructor(options) { - options.animate = typeof options.animate == 'boolean' ? options.animate : false; - if (!options.animate) { - options.params = {products: options.products}; - super('http://realearth.ssec.wisc.edu/api/shapes', options); - } else { - options.autoLoad = false; - super('', options); - this._products = options.products; - if (!this.timeInit) { - mixIns([RealEarthAnimateVector], this); - } - this.timeInit(); - } - } -} - -nm.LayerVectorRealEarth = LayerVectorRealEarth; -export default LayerVectorRealEarth; diff --git a/_src/layers/LayerRealEarthVector.js b/src/layers/LayerRealEarthVector.ts similarity index 89% rename from _src/layers/LayerRealEarthVector.js rename to src/layers/LayerRealEarthVector.ts index 65ebab4a8bbcc248ed45fa15ff6d9704c5fd3904..b2500d86a3658da1fc88e2e0e994a5545c0d0bbe 100644 --- a/_src/layers/LayerRealEarthVector.js +++ b/src/layers/LayerRealEarthVector.ts @@ -2,17 +2,27 @@ * Created by gavorhes on 11/13/2015. */ -import LayerBaseVectorGeoJson from './LayerBaseVectorGeoJson'; +import {LayerBaseVectorGeoJson, LayerBaseVectorGeoJsonOptions} from './LayerBaseVectorGeoJson'; import RealEarthAnimateVector from '../mixin/RealEarthAnimateVector'; import provide from '../util/provide'; const mixIns = require('es6-mixins'); const nm = provide('layers'); +export interface LayerVectorRealEarthOptions extends LayerBaseVectorGeoJsonOptions { + products: string; + hasTimes?: boolean; + animate?: boolean; +} + + /** * Vector real earth vector * @augments LayerBaseVectorGeoJson */ class LayerVectorRealEarth extends LayerBaseVectorGeoJson { + _products: string; + timeInit: Function; + /** * Real Earth vector layer * @param {object} options - config @@ -42,7 +52,7 @@ class LayerVectorRealEarth extends LayerBaseVectorGeoJson { * @param {string} options.products real earth products identifier * @param {boolean} [options.animate=false] if the layer should be animated */ - constructor(options) { + constructor(options: LayerVectorRealEarthOptions) { options.animate = typeof options.animate == 'boolean' ? options.animate : false; if (!options.animate) { options.params = {products: options.products}; diff --git a/src/mixin/RealEarthAnimate.js b/src/mixin/RealEarthAnimate.ts similarity index 82% rename from src/mixin/RealEarthAnimate.js rename to src/mixin/RealEarthAnimate.ts index 949a867e9c98407e2c5f6dc6d23f9dc011026ce0..57672431f72e875db2d0885a171a6a3e8ec8b180 100644 --- a/src/mixin/RealEarthAnimate.js +++ b/src/mixin/RealEarthAnimate.ts @@ -3,7 +3,7 @@ */ import provide from '../util/provide'; import mapPopup from '../olHelpers/mapPopup'; -import $ from '../jquery/jquery'; +const $ = require('jquery'); const nm = provide('mixin'); @@ -13,11 +13,23 @@ const nm = provide('mixin'); */ let offsetMinutes = (new Date()).getTimezoneOffset(); + /** * Mixin to get the product times * Be sure to call getTimeInit after the mixin has been applied */ -class RealEarthAnimate { +export class RealEarthAnimate { + _animateEnabled: boolean; + _currentIndex: number; + _localDates: Date[]; + _rawDateStrings: string[]; + _products: string; + loadCallback: Function; + localTimes: number[]; + _currentTime: number; + _loaded: boolean; + _visible: boolean; + /** * override base layer load @@ -40,20 +52,20 @@ class RealEarthAnimate { this._currentTime = undefined; this._currentIndex = undefined; - let _this = this; + let __this = this; $.get('http://realearth.ssec.wisc.edu/api/products', {products: this._products}, function (d) { if (d.length == 0) { - console.log(`${this._products} layer not available or does not have times`); + console.log(`${__this._products} layer not available or does not have times`); return; } d = d[0]; for (let i = 0; i < d['times'].length; i++) { - _this._loadDates.call(_this, d['times'][i]); + __this._loadDates.call(__this, d['times'][i]); } - _this.loadCallback.call(_this); - _this._loadLatest.call(_this); + __this.loadCallback.call(__this); + __this._loadLatest.call(__this); }, 'json'); } @@ -62,7 +74,7 @@ class RealEarthAnimate { * * @returns {boolean} if animation enabled */ - get animationEnabled(){ + get animationEnabled(): boolean{ return this._animateEnabled; } @@ -72,7 +84,7 @@ class RealEarthAnimate { * @returns {string} the converted string * @protected */ - _loadDates(inString) { + _loadDates(inString: string): string { let yr = inString.slice(0, 4); let month = inString.slice(4, 6); let d = inString.slice(6, 8); @@ -113,8 +125,8 @@ class RealEarthAnimate { * @param {number} theTime - the time * @returns {boolean} true if new index, false if the same or below lowest value */ - setLayerTime(theTime){ - if (!this.visible){ + setLayerTime(theTime: number): boolean{ + if (!this._visible){ return false; } diff --git a/src/mixin/RealEarthAnimateTile.js b/src/mixin/RealEarthAnimateTile.js deleted file mode 100644 index f793f47dedda3c9d8de84cc9fb94c6ed69cf858d..0000000000000000000000000000000000000000 --- a/src/mixin/RealEarthAnimateTile.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Created by gavorhes on 12/4/2015. - */ -import RealEarthAnimate from './RealEarthAnimate'; -import provide from '../util/provide'; -const nm = provide('mixin'); - -/** - * Animate real earth tile - * @augments RealEarthAnimate - */ -class RealEarthAnimateTile extends RealEarthAnimate { - - /** - * override base layer load - */ - load() { - super.load(); - }; - - - timeInit() { - super.timeInit(); - this._sourceUrls = []; - } - - _loadDates(inString) { - let rawDte = super._loadDates(inString); - let dteProductUrl = - `http://realearth.ssec.wisc.edu/api/image?products=${this._products}_${rawDte}&x={x}&y={y}&z={z}`; - this._sourceUrls.push(dteProductUrl); - } - - /** - * @protected - */ - _loadLatest() { - if (super._loadLatest()){ - this._source.setUrl(this._sourceUrls[this._sourceUrls.length - 1]); - } - } - - setLayerTime(theTime) { - if (super.setLayerTime(theTime)) { - if (this.olLayer.getZIndex() < 0){ - this.olLayer.setZIndex(0); - } - this._source.setUrl(this._sourceUrls[this._currentIndex]); - } else { - this.olLayer.setZIndex(-1); - } - } -} - -nm.RealEarthAnimateTile = RealEarthAnimateTile; -export default RealEarthAnimateTile; diff --git a/_src/mixin/RealEarthAnimateTile.js b/src/mixin/RealEarthAnimateTile.ts similarity index 72% rename from _src/mixin/RealEarthAnimateTile.js rename to src/mixin/RealEarthAnimateTile.ts index f793f47dedda3c9d8de84cc9fb94c6ed69cf858d..d1d0072413f77518345b49dd1c9222bae0eec755 100644 --- a/_src/mixin/RealEarthAnimateTile.js +++ b/src/mixin/RealEarthAnimateTile.ts @@ -3,6 +3,7 @@ */ import RealEarthAnimate from './RealEarthAnimate'; import provide from '../util/provide'; +import {ol} from 'custom-ol'; const nm = provide('mixin'); /** @@ -10,6 +11,9 @@ const nm = provide('mixin'); * @augments RealEarthAnimate */ class RealEarthAnimateTile extends RealEarthAnimate { + _sourceUrls: string[]; + _source: ol.source.XYZ; + _olLayer: ol.layer.Tile; /** * override base layer load @@ -24,31 +28,34 @@ class RealEarthAnimateTile extends RealEarthAnimate { this._sourceUrls = []; } - _loadDates(inString) { + _loadDates(inString: string): string { let rawDte = super._loadDates(inString); let dteProductUrl = `http://realearth.ssec.wisc.edu/api/image?products=${this._products}_${rawDte}&x={x}&y={y}&z={z}`; this._sourceUrls.push(dteProductUrl); + return ''; } /** * @protected */ - _loadLatest() { + _loadLatest(): boolean { if (super._loadLatest()){ this._source.setUrl(this._sourceUrls[this._sourceUrls.length - 1]); } + return true; } - setLayerTime(theTime) { + setLayerTime(theTime: number): boolean { if (super.setLayerTime(theTime)) { - if (this.olLayer.getZIndex() < 0){ - this.olLayer.setZIndex(0); + if (this._olLayer.getZIndex() < 0){ + this._olLayer.setZIndex(0); } this._source.setUrl(this._sourceUrls[this._currentIndex]); } else { - this.olLayer.setZIndex(-1); + this._olLayer.setZIndex(-1); } + return true; } } diff --git a/src/mixin/RealEarthAnimateVector.js b/src/mixin/RealEarthAnimateVector.ts similarity index 79% rename from src/mixin/RealEarthAnimateVector.js rename to src/mixin/RealEarthAnimateVector.ts index 944223884ae7e5af602fa2c34ceb6c5c8ee4d587..d53ea8ed315ed35794158250d2a3ae9103e33128 100644 --- a/src/mixin/RealEarthAnimateVector.js +++ b/src/mixin/RealEarthAnimateVector.ts @@ -3,6 +3,7 @@ */ import RealEarthAnimate from './RealEarthAnimate'; import provide from '../util/provide'; +import {ol, olx} from 'custom-ol'; const nm = provide('mixin'); const $ = require('jquery'); @@ -12,6 +13,12 @@ const $ = require('jquery'); * @augments RealEarthAnimate */ class RealEarthAnimateVector extends RealEarthAnimate { + _dataCache: Array<Array<Object>|Object>; + _source: ol.source.Vector; + _geoJsonFormat: ol.format.GeoJSON; + _transform: olx.format.ReadOptions; + _rawTimesLookup: {[s: string]: any}; + _currentIndex: number; /** * override base layer load @@ -34,19 +41,21 @@ class RealEarthAnimateVector extends RealEarthAnimate { * @param {string} inString - input date string * @protected */ - _loadDates(inString) { + _loadDates(inString: string): string { let rawDte = super._loadDates(inString); this._dataCache.push(null); this._rawTimesLookup[rawDte] = null; + return ''; } /** * @protected */ - _loadLatest() { + _loadLatest(): boolean { if(super._loadLatest()){ this._loadAtTimeIndex.call(this, this._currentIndex); } + return true; } // //http://realearth.ssec.wisc.edu/api/image?products=nexrhres_20160108_212500&x=1&y=5&z=4 @@ -60,10 +69,10 @@ class RealEarthAnimateVector extends RealEarthAnimate { * @param {boolean} [setAsSource=true] set to false to trigger cache load only * @private */ - _loadAtTimeIndex(i, setAsSource) { + _loadAtTimeIndex(i: number, setAsSource = true) { setAsSource = typeof setAsSource == 'boolean' ? setAsSource : true; if (this._dataCache[i] != null) { - this.source.clear(); + this._source.clear(); this._loadFeatures(this._dataCache[i]); } else { let _this = this; @@ -73,7 +82,7 @@ class RealEarthAnimateVector extends RealEarthAnimate { _this._dataCache[i] = d; _this._rawTimesLookup[_this._rawDateStrings[i]] = d; if (setAsSource) { - _this.source.clear(); + _this._source.clear(); _this._loadFeatures.call(_this, _this._dataCache[i]); } }, 'json' @@ -87,15 +96,16 @@ class RealEarthAnimateVector extends RealEarthAnimate { * @private */ _loadFeatures(geojObj) { - this.source.addFeatures(this._geoJsonFormat.readFeatures(geojObj, this._transform)); + this._source.addFeatures(this._geoJsonFormat.readFeatures(geojObj, this._transform)); } - setLayerTime(theTime) { + setLayerTime(theTime: number): boolean { if (super.setLayerTime(theTime)){ this._loadAtTimeIndex(this._currentIndex); } else { - this.source.clear(); + this._source.clear(); } + return true; } } diff --git a/src/olHelpers/quickMapBase.ts b/src/olHelpers/quickMapBase.ts index 1dd43e05a11ee3f7ce5f69078245297b6d27f2fc..c2e61b04265b8ee5d69a7e45a329246b710d8340 100644 --- a/src/olHelpers/quickMapBase.ts +++ b/src/olHelpers/quickMapBase.ts @@ -2,10 +2,10 @@ * Created by gavorhes on 12/15/2015. */ -const $ = require('jquery'); import provide from '../util/provide'; import {ol} from 'custom-ol'; const nm = provide('olHelpers'); +const $ = require('jquery'); export interface quickMapOptions { diff --git a/src/olHelpers/quickMapMulti.js b/src/olHelpers/quickMapMulti.ts similarity index 83% rename from src/olHelpers/quickMapMulti.js rename to src/olHelpers/quickMapMulti.ts index f9e112c6d9ef094d3bf0d0106e18f52b0e742389..827509785d665d63f401044223b1a859a3719f55 100644 --- a/src/olHelpers/quickMapMulti.js +++ b/src/olHelpers/quickMapMulti.ts @@ -2,10 +2,11 @@ * Created by gavorhes on 12/15/2015. */ -import quickMapBase from './quickMapBase'; +import {quickMapBase, quickMapOptions} from './quickMapBase'; import provide from '../util/provide'; import MapMoveCls from './mapMoveCls'; import MapPopupCls from './mapPopupCls'; +import {ol} from 'custom-ol' let nm = provide('olHelpers'); @@ -30,9 +31,9 @@ let nm = provide('olHelpers'); * @param {number} [options.maxZoom=undefined] max zoom * @param {boolean} [options.baseSwitcher=true] if add base map switcher * @param {boolean} [options.fullScreen=false] if add base map switcher - * @returns {quickMapMultiReturn} return map, map move, and map popup objects + * @returns return object with map, map move, and map popup objects */ -function quickMapMulti(options) { +function quickMapMulti(options: quickMapOptions): {map: ol.Map, mapMove: MapMoveCls, mapPopup: MapPopupCls} { let m = quickMapBase(options); let mov = new MapMoveCls(); let pop = new MapPopupCls(); diff --git a/tsconfig.json b/tsconfig.json index f50f28b20ca36826f0b839c9a560305849545635..490ea28ecc5d644b0ad901be415bc38f9f512aa7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,8 @@ "sourceMap": true, "jsx": "react", "typeRoots": [ - "node_modules/@types" + "node_modules/@types", + "node_modules/custom-ol/lib" ] }, "exclude": [ diff --git a/webpack.config.js b/webpack.config.js index c66ff315150c93142fe3a0ea7cc22910c73faf46..cf3bd2aac943d09fb2445b2bf4821acd9bb1ef46 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,6 +1,5 @@ "use strict"; const path = require('path'); -const webpack = require('webpack'); const fs = require('fs'); const testAppDir = path.join(__dirname, 'dist/_test');