@nextgis/ngw-map 1.8.1 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /** Bundle of @nextgis/ngw-map; version: 1.8.1; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-map; version: 1.9.0; author: NextGIS */
2
2
  var NgwMap = (function (exports) {
3
3
  'use strict';
4
4
 
@@ -1428,10 +1428,6 @@ var NgwMap = (function (exports) {
1428
1428
  }
1429
1429
  return false;
1430
1430
  }
1431
- /** @deprecated use {@link isPropertyFilter} instead */
1432
- function checkIfPropertyFilter(filter) {
1433
- return isPropertyFilter(filter);
1434
- }
1435
1431
  function featureFilter(feature, filters) {
1436
1432
  var properties = __assign({}, feature.properties);
1437
1433
  if (properties) {
@@ -2051,7 +2047,11 @@ var NgwMap = (function (exports) {
2051
2047
  * @returns The map's current zoom level (0-24).
2052
2048
  */
2053
2049
  WebMapMain.prototype.getZoom = function () {
2054
- return this.mapAdapter.getZoom();
2050
+ var zoom = this.mapAdapter.getZoom();
2051
+ if (typeof zoom === 'number') {
2052
+ return zoom;
2053
+ }
2054
+ throw Error('Unable to get zoom level. Perhaps the map is not have been initialized yet');
2055
2055
  };
2056
2056
  WebMapMain.prototype.zoomIn = function () {
2057
2057
  if (this.mapAdapter.zoomIn) {
@@ -2077,27 +2077,25 @@ var NgwMap = (function (exports) {
2077
2077
  }
2078
2078
  }
2079
2079
  };
2080
- /**
2081
- * Sets the view of the map geographical center and zoom
2082
- * @param lngLat - Array of two numbers representing longitude and latitude of the center of the map view.
2083
- * @param zoom - The zoom level to set (0-24).
2084
- *
2085
- * @example
2086
- * ```javascript
2087
- * // Mount Everest 27° 59′ 17″ N, 86° 55′ 31″ E
2088
- * webMap.setView([86.925278, 27.988056], 12)
2089
- * ```
2090
- */
2091
- WebMapMain.prototype.setView = function (lngLat, zoom) {
2092
- if (this.mapAdapter.setView && lngLat && defined(zoom)) {
2093
- this.mapAdapter.setView(lngLat, zoom);
2080
+ WebMapMain.prototype.setView = function (lngLatOrOpt, zoom) {
2081
+ if (Array.isArray(lngLatOrOpt)) {
2082
+ var lngLat = lngLatOrOpt;
2083
+ if (this.mapAdapter.setView && lngLat && defined(zoom)) {
2084
+ this.mapAdapter.setView(lngLat, zoom);
2085
+ }
2086
+ else {
2087
+ if (lngLat) {
2088
+ this.mapAdapter.setCenter(lngLat);
2089
+ }
2090
+ if (defined(zoom)) {
2091
+ this.mapAdapter.setZoom(zoom);
2092
+ }
2093
+ }
2094
2094
  }
2095
2095
  else {
2096
- if (lngLat) {
2097
- this.mapAdapter.setCenter(lngLat);
2098
- }
2099
- if (defined(zoom)) {
2100
- this.mapAdapter.setZoom(zoom);
2096
+ var viewOpt = lngLatOrOpt;
2097
+ if (this.mapAdapter.setView) {
2098
+ this.mapAdapter.setView(viewOpt);
2101
2099
  }
2102
2100
  }
2103
2101
  };
@@ -2547,9 +2545,9 @@ var NgwMap = (function (exports) {
2547
2545
  var _a, _b;
2548
2546
  if (options === void 0) { options = {}; }
2549
2547
  return __awaiter(this, void 0, void 0, function () {
2550
- var id, _order, adapterEngine, geoJsonOptions, _c, maxZoom, minZoom, visibility, modified, _adapter, layerId, layer, opacity, getBounds, extent;
2551
- return __generator(this, function (_d) {
2552
- switch (_d.label) {
2548
+ var id, _order, adapterEngine, geoJsonOptions, visibility, modified, _adapter, layerId, layer, opacity, getBounds, extent;
2549
+ return __generator(this, function (_c) {
2550
+ switch (_c.label) {
2553
2551
  case 0:
2554
2552
  id = this._layersIdCounter++;
2555
2553
  _order = defined(order)
@@ -2568,13 +2566,12 @@ var NgwMap = (function (exports) {
2568
2566
  if (!('then' in adapter)) return [3 /*break*/, 4];
2569
2567
  return [4 /*yield*/, adapter];
2570
2568
  case 3:
2571
- adapterEngine = (_d.sent());
2572
- _d.label = 4;
2569
+ adapterEngine = (_c.sent());
2570
+ _c.label = 4;
2573
2571
  case 4:
2574
2572
  geoJsonOptions = options;
2575
2573
  this._updateGeoJsonOptions(geoJsonOptions);
2576
- _c = this.options, maxZoom = _c.maxZoom, minZoom = _c.minZoom;
2577
- options = __assign({ id: String(id), order: _order, maxZoom: maxZoom, minZoom: minZoom }, options);
2574
+ options = __assign({ id: String(id), order: _order }, options);
2578
2575
  visibility = (_a = options.visibility) !== null && _a !== void 0 ? _a : true;
2579
2576
  options.visibility = false;
2580
2577
  if (options.baselayer) {
@@ -2610,11 +2607,11 @@ var NgwMap = (function (exports) {
2610
2607
  this._emitLayerEvent('layer:preadd', layerId || '', _adapter);
2611
2608
  return [4 /*yield*/, this.onMapLoad()];
2612
2609
  case 5:
2613
- _d.sent();
2610
+ _c.sent();
2614
2611
  _adapter.map = this.mapAdapter.map;
2615
2612
  return [4 /*yield*/, _adapter.addLayer(_adapter.options)];
2616
2613
  case 6:
2617
- layer = _d.sent();
2614
+ layer = _c.sent();
2618
2615
  // checking that the original layer was inserted into the adapter anyway
2619
2616
  _adapter.layer = layer;
2620
2617
  // think about how to move `id` to the adapter's constructor,
@@ -2643,8 +2640,8 @@ var NgwMap = (function (exports) {
2643
2640
  if (!visibility) return [3 /*break*/, 8];
2644
2641
  return [4 /*yield*/, this.showLayer(layerId)];
2645
2642
  case 7:
2646
- _d.sent();
2647
- _d.label = 8;
2643
+ _c.sent();
2644
+ _c.label = 8;
2648
2645
  case 8:
2649
2646
  opacity = options.opacity;
2650
2647
  if (opacity !== undefined && opacity <= 1) {
@@ -2654,12 +2651,12 @@ var NgwMap = (function (exports) {
2654
2651
  if (!(options.fit && getBounds)) return [3 /*break*/, 11];
2655
2652
  return [4 /*yield*/, getBounds.call(_adapter)];
2656
2653
  case 9:
2657
- extent = _d.sent();
2654
+ extent = _c.sent();
2658
2655
  if (!extent) return [3 /*break*/, 11];
2659
2656
  return [4 /*yield*/, this.fitBounds(extent)];
2660
2657
  case 10:
2661
- _d.sent();
2662
- _d.label = 11;
2658
+ _c.sent();
2659
+ _c.label = 11;
2663
2660
  case 11:
2664
2661
  this._emitLayerEvent('layer:add', layerId, _adapter);
2665
2662
  return [2 /*return*/, _adapter];
@@ -2852,7 +2849,7 @@ var NgwMap = (function (exports) {
2852
2849
  this._emitLayerEvent(preEventName, id, l);
2853
2850
  this._emitLayerEvent('layer:pretoggle', id, l);
2854
2851
  }
2855
- if (!(toStatus && this.mapAdapter)) return [3 /*break*/, 5];
2852
+ if (!(toStatus && this.mapAdapter)) return [3 /*break*/, 9];
2856
2853
  order = l.options.baselayer ? 0 : l.options.order;
2857
2854
  if (!(l.options.baselayer && this._baselayers.length)) return [3 /*break*/, 4];
2858
2855
  anotherVisibleBaselayers = this._baselayers.filter(function (x) {
@@ -2871,25 +2868,35 @@ var NgwMap = (function (exports) {
2871
2868
  _i++;
2872
2869
  return [3 /*break*/, 1];
2873
2870
  case 4:
2874
- if (l.showLayer) {
2875
- l.showLayer.call(l, l.layer);
2876
- }
2877
- else if (l.layer !== undefined) {
2878
- this.mapAdapter.showLayer(l.layer);
2879
- }
2871
+ if (!l.showLayer) return [3 /*break*/, 6];
2872
+ return [4 /*yield*/, l.showLayer.call(l, l.layer)];
2873
+ case 5:
2874
+ _a.sent();
2875
+ return [3 /*break*/, 8];
2876
+ case 6:
2877
+ if (!(l.layer !== undefined)) return [3 /*break*/, 8];
2878
+ return [4 /*yield*/, this.mapAdapter.showLayer(l.layer)];
2879
+ case 7:
2880
+ _a.sent();
2881
+ _a.label = 8;
2882
+ case 8:
2880
2883
  if (order !== undefined) {
2881
2884
  this.mapAdapter.setLayerOrder(l.layer, order, this._layers);
2882
2885
  }
2883
- return [3 /*break*/, 6];
2884
- case 5:
2885
- if (l.hideLayer) {
2886
- l.hideLayer.call(l, l.layer);
2887
- }
2888
- else if (l.layer !== undefined) {
2889
- this.mapAdapter.hideLayer(l.layer);
2890
- }
2891
- _a.label = 6;
2892
- case 6:
2886
+ return [3 /*break*/, 13];
2887
+ case 9:
2888
+ if (!l.hideLayer) return [3 /*break*/, 11];
2889
+ return [4 /*yield*/, l.hideLayer.call(l, l.layer)];
2890
+ case 10:
2891
+ _a.sent();
2892
+ return [3 /*break*/, 13];
2893
+ case 11:
2894
+ if (!(l.layer !== undefined)) return [3 /*break*/, 13];
2895
+ return [4 /*yield*/, this.mapAdapter.hideLayer(l.layer)];
2896
+ case 12:
2897
+ _a.sent();
2898
+ _a.label = 13;
2899
+ case 13:
2893
2900
  if (!silent) {
2894
2901
  this._emitLayerEvent(eventName, id, l);
2895
2902
  this._emitLayerEvent('layer:toggle', id, l);
@@ -2905,16 +2912,19 @@ var NgwMap = (function (exports) {
2905
2912
  return Promise.resolve();
2906
2913
  };
2907
2914
  WebMapLayers.prototype.updateLayer = function (layerDef) {
2915
+ var _this = this;
2908
2916
  var layer = this.getLayer(layerDef);
2909
2917
  if (layer) {
2910
2918
  if (layer.updateLayer) {
2911
- layer.updateLayer();
2919
+ return Promise.resolve(layer.updateLayer());
2912
2920
  }
2913
2921
  else if (this.isLayerVisible(layer)) {
2914
- this.hideLayer(layer, { silent: true });
2915
- this.showLayer(layer, { silent: true });
2922
+ return this.hideLayer(layer, { silent: true }).then(function () {
2923
+ return _this.showLayer(layer, { silent: true });
2924
+ });
2916
2925
  }
2917
2926
  }
2927
+ return Promise.resolve();
2918
2928
  };
2919
2929
  /**
2920
2930
  * Set transparency for a given layer by number from 0 to 1
@@ -3150,6 +3160,17 @@ var NgwMap = (function (exports) {
3150
3160
  attribution: tileJson.attribution,
3151
3161
  });
3152
3162
  };
3163
+ /** @internal */
3164
+ WebMapLayers.prototype._emitLayerEvent = function (name, id, options) {
3165
+ var name_ = String(name);
3166
+ if (defined(id) && name_.startsWith('layer:')) {
3167
+ var specificLayerName = name_.replace('layer:', 'layer-' + id + ':');
3168
+ // @ts-ignore can't paste template literal key for interface
3169
+ this.emitter.emit(specificLayerName, options);
3170
+ }
3171
+ // @ts-ignore
3172
+ this.emitter.emit(name, options);
3173
+ };
3153
3174
  WebMapLayers.prototype._onLayerClick = function (options) {
3154
3175
  return __awaiter(this, void 0, void 0, function () {
3155
3176
  var id;
@@ -3209,14 +3230,6 @@ var NgwMap = (function (exports) {
3209
3230
  }
3210
3231
  }
3211
3232
  };
3212
- WebMapLayers.prototype._emitLayerEvent = function (name, id, options) {
3213
- if (defined(id) && name.startsWith('layer:')) {
3214
- var specificLayerName = name.replace('layer:', 'layer-' + id + ':');
3215
- // @ts-ignore can't paste template literal key for interface
3216
- this.emitter.emit(specificLayerName, options);
3217
- }
3218
- this.emitter.emit(name, options);
3219
- };
3220
3233
  return WebMapLayers;
3221
3234
  }(WebMapMain));
3222
3235
 
@@ -4993,7 +5006,7 @@ var NgwMap = (function (exports) {
4993
5006
  };
4994
5007
  if (logic === 'any') {
4995
5008
  filters_.forEach(function (f) {
4996
- if (checkIfPropertyFilter(f)) {
5009
+ if (isPropertyFilter(f)) {
4997
5010
  _queries.push(fetchNgwLayerItemsRequest(__assign(__assign({}, opt), { paramList: __spreadArray(__spreadArray([], _parentAllParams, true), [createParam(f)]) })));
4998
5011
  }
4999
5012
  else {
@@ -5006,7 +5019,7 @@ var NgwMap = (function (exports) {
5006
5019
  var propertiesFilterList = [];
5007
5020
  for (var _i = 0, filters_1 = filters_; _i < filters_1.length; _i++) {
5008
5021
  var f = filters_1[_i];
5009
- if (checkIfPropertyFilter(f)) {
5022
+ if (isPropertyFilter(f)) {
5010
5023
  filters_2.push(createParam(f));
5011
5024
  }
5012
5025
  else {
@@ -5142,10 +5155,21 @@ var NgwMap = (function (exports) {
5142
5155
  });
5143
5156
  }
5144
5157
 
5158
+ function fetchNgwLayerCount(_a) {
5159
+ var connector = _a.connector, resourceId = _a.resourceId, _b = _a.cache, cache = _b === void 0 ? true : _b;
5160
+ return connector
5161
+ .get('feature_layer.feature.count', { cache: cache }, {
5162
+ id: resourceId,
5163
+ })
5164
+ .then(function (resp) {
5165
+ return resp.total_count;
5166
+ });
5167
+ }
5168
+
5145
5169
  function createGeoJsonAdapter(props) {
5146
5170
  var _a, _b;
5147
5171
  return __awaiter(this, void 0, void 0, function () {
5148
- var item, webMap, Adapter, connector, layerOptions, alop, addLayerOptionsPriority, options, GeoJsonAdapter, _fullDataLoad, _lastFilterArgs, _dataPromise, resourceId, getData, removed, abort, NgwGeoJsonAdapter;
5172
+ var item, webMap, Adapter, connector, layerOptions, alop, addLayerOptionsPriority, options, GeoJsonAdapter, _loadedIds, _fullDataLoad, _lastFilterArgs, _dataPromise, resourceId, getData, removed, abort, NgwGeoJsonAdapter;
5149
5173
  var _this = this;
5150
5174
  return __generator(this, function (_c) {
5151
5175
  switch (_c.label) {
@@ -5154,6 +5178,7 @@ var NgwMap = (function (exports) {
5154
5178
  addLayerOptionsPriority = alop !== null && alop !== void 0 ? alop : true;
5155
5179
  options = layerOptions;
5156
5180
  GeoJsonAdapter = Adapter || webMap.mapAdapter.layerAdapters.GEOJSON;
5181
+ _loadedIds = [];
5157
5182
  _fullDataLoad = false;
5158
5183
  return [4 /*yield*/, resourceIdFromLayerOptions(options, connector)];
5159
5184
  case 1:
@@ -5192,7 +5217,7 @@ var NgwMap = (function (exports) {
5192
5217
  }
5193
5218
  NgwGeoJsonAdapter.prototype.addLayer = function (opt) {
5194
5219
  return __awaiter(this, void 0, void 0, function () {
5195
- var needUpdate, waitFullLoad, layer, updatePromise;
5220
+ var needUpdate, waitFullLoad, strategy, layer, updatePromise;
5196
5221
  return __generator(this, function (_a) {
5197
5222
  switch (_a.label) {
5198
5223
  case 0:
@@ -5220,8 +5245,9 @@ var NgwMap = (function (exports) {
5220
5245
  opt.data = undefined;
5221
5246
  needUpdate = false;
5222
5247
  }
5248
+ strategy = opt.strategy || undefined;
5249
+ this.options.strategy = strategy;
5223
5250
  layer = _super.prototype.addLayer.call(this, opt);
5224
- this.options.strategy = opt.strategy || undefined;
5225
5251
  _lastFilterArgs = {
5226
5252
  filters: opt.propertiesFilter,
5227
5253
  options: getLayerFilterOptions(opt),
@@ -5235,7 +5261,7 @@ var NgwMap = (function (exports) {
5235
5261
  _a.sent();
5236
5262
  _a.label = 2;
5237
5263
  case 2:
5238
- if (this.options.strategy === 'BBOX' && !_fullDataLoad) {
5264
+ if (strategy && strategy.startsWith('BBOX') && !_fullDataLoad) {
5239
5265
  this._addBboxEventListener();
5240
5266
  }
5241
5267
  return [2 /*return*/, layer];
@@ -5249,10 +5275,11 @@ var NgwMap = (function (exports) {
5249
5275
  };
5250
5276
  NgwGeoJsonAdapter.prototype.getBounds = function () {
5251
5277
  return __awaiter(this, void 0, void 0, function () {
5252
- var hasData;
5278
+ var hasData, strategy;
5253
5279
  return __generator(this, function (_a) {
5254
5280
  hasData = this.getLayers && this.getLayers().length;
5255
- if (this.options.strategy === 'BBOX' || hasData) {
5281
+ strategy = this.options.strategy;
5282
+ if ((strategy === null || strategy === void 0 ? void 0 : strategy.startsWith('BBOX')) || hasData) {
5256
5283
  return [2 /*return*/, fetchNgwResourceExtent(item, connector)];
5257
5284
  }
5258
5285
  else {
@@ -5275,61 +5302,86 @@ var NgwMap = (function (exports) {
5275
5302
  abort();
5276
5303
  };
5277
5304
  NgwGeoJsonAdapter.prototype.getCount = function () {
5278
- var _this = this;
5279
- if (this._count !== undefined) {
5280
- return this._count;
5281
- }
5282
- return connector
5283
- .get('feature_layer.feature.count', { cache: true }, {
5284
- id: resourceId,
5285
- })
5286
- .then(function (resp) {
5287
- if (resp) {
5288
- _this._count = resp.total_count;
5289
- return _this._count;
5290
- }
5291
- });
5305
+ return fetchNgwLayerCount({ connector: connector, resourceId: resourceId, cache: true });
5292
5306
  };
5293
5307
  NgwGeoJsonAdapter.prototype.updateLayer = function (filterArgs) {
5308
+ var _a;
5294
5309
  return __awaiter(this, void 0, void 0, function () {
5295
- var data, count, er_1;
5296
- return __generator(this, function (_a) {
5297
- switch (_a.label) {
5310
+ var _b, minZoom, maxZoom, zoom, data, newData, count, _i, _c, f, er_1;
5311
+ return __generator(this, function (_d) {
5312
+ switch (_d.label) {
5298
5313
  case 0:
5299
5314
  filterArgs = filterArgs || _lastFilterArgs || {};
5300
- if (!(this.options.strategy === 'BBOX')) return [3 /*break*/, 2];
5315
+ if (!((_a = this.options.strategy) === null || _a === void 0 ? void 0 : _a.startsWith('BBOX'))) return [3 /*break*/, 2];
5301
5316
  return [4 /*yield*/, webMap.onLoad('create')];
5302
5317
  case 1:
5303
- _a.sent();
5318
+ _d.sent();
5304
5319
  filterArgs.options = filterArgs.options || {};
5305
5320
  filterArgs.options.intersects = webMap.getBounds();
5306
- _a.label = 2;
5321
+ _b = this.options, minZoom = _b.minZoom, maxZoom = _b.maxZoom;
5322
+ zoom = webMap.getZoom();
5323
+ if (minZoom !== undefined && zoom < minZoom) {
5324
+ return [2 /*return*/];
5325
+ }
5326
+ if (maxZoom !== undefined && zoom > maxZoom) {
5327
+ return [2 /*return*/];
5328
+ }
5329
+ if (_fullDataLoad) {
5330
+ return [2 /*return*/];
5331
+ }
5332
+ _d.label = 2;
5307
5333
  case 2:
5308
5334
  if (removed) {
5309
5335
  return [2 /*return*/];
5310
5336
  }
5311
- _a.label = 3;
5337
+ _d.label = 3;
5312
5338
  case 3:
5313
- _a.trys.push([3, 7, , 8]);
5339
+ _d.trys.push([3, 10, , 11]);
5314
5340
  return [4 /*yield*/, getData(filterArgs.filters, __assign(__assign({}, filterArgs.options), { srs: this.options.srs }))];
5315
5341
  case 4:
5316
- data = _a.sent();
5342
+ data = _d.sent();
5343
+ newData = data;
5317
5344
  return [4 /*yield*/, this.getCount()];
5318
5345
  case 5:
5319
- count = _a.sent();
5320
- _fullDataLoad = count === data.features.length;
5321
- return [4 /*yield*/, webMap.setLayerData(this, data)];
5346
+ count = _d.sent();
5347
+ if (!(this.options.strategy === 'BBOX+')) return [3 /*break*/, 7];
5348
+ newData = {
5349
+ type: 'FeatureCollection',
5350
+ features: [],
5351
+ };
5352
+ for (_i = 0, _c = data.features; _i < _c.length; _i++) {
5353
+ f = _c[_i];
5354
+ if (_loadedIds.indexOf(String(f.id)) === -1) {
5355
+ _loadedIds.push(String(f.id));
5356
+ newData.features.push(f);
5357
+ }
5358
+ }
5359
+ _fullDataLoad = count !== undefined && _loadedIds.length >= count;
5360
+ return [4 /*yield*/, webMap.addLayerData(this, newData)];
5322
5361
  case 6:
5323
- _a.sent();
5324
- this.emitter.emit('updated');
5325
- return [3 /*break*/, 8];
5362
+ _d.sent();
5363
+ return [3 /*break*/, 9];
5326
5364
  case 7:
5327
- er_1 = _a.sent();
5365
+ _fullDataLoad = count !== undefined && data.features.length >= count;
5366
+ return [4 /*yield*/, webMap.setLayerData(this, data)];
5367
+ case 8:
5368
+ _d.sent();
5369
+ _d.label = 9;
5370
+ case 9:
5371
+ this.emitter.emit('updated', data);
5372
+ webMap._emitLayerEvent('layer:updated', options.id || '', {
5373
+ data: data,
5374
+ newData: newData,
5375
+ isFull: _fullDataLoad,
5376
+ });
5377
+ return [3 /*break*/, 11];
5378
+ case 10:
5379
+ er_1 = _d.sent();
5328
5380
  if (er_1 instanceof Error && er_1.name !== 'CancelError') {
5329
5381
  throw er_1;
5330
5382
  }
5331
- return [3 /*break*/, 8];
5332
- case 8:
5383
+ return [3 /*break*/, 11];
5384
+ case 11:
5333
5385
  if (_super.prototype.updateLayer) {
5334
5386
  _super.prototype.updateLayer.call(this);
5335
5387
  }
@@ -6275,12 +6327,7 @@ var NgwMap = (function (exports) {
6275
6327
  options.order = Number((this.options.order | 0) + '.' + subLevel);
6276
6328
  }
6277
6329
  if (item.item_type === 'layer') {
6278
- var maxZoom = item.layer_max_scale_denom
6279
- ? this._mapScaleToZoomLevel(item.layer_max_scale_denom)
6280
- : this.webMap.options.maxZoom;
6281
- var minZoom = item.layer_min_scale_denom
6282
- ? this._mapScaleToZoomLevel(item.layer_min_scale_denom)
6283
- : this.webMap.options.minZoom;
6330
+ var _a = this._getZoomRange(item), maxZoom = _a.maxZoom, minZoom = _a.minZoom;
6284
6331
  objectAssign(options, {
6285
6332
  updateWmsParams: item.updateWmsParams,
6286
6333
  url: item.url,
@@ -6303,6 +6350,21 @@ var NgwMap = (function (exports) {
6303
6350
  NgwWebmapItem.prototype._mapScaleToZoomLevel = function (scale) {
6304
6351
  return setScaleRatio(scale);
6305
6352
  };
6353
+ NgwWebmapItem.prototype._getZoomRange = function (item) {
6354
+ var minZoomWebmap = this.options.minZoom;
6355
+ var maxZoomWebmap = this.options.maxZoom;
6356
+ var minZoomLayer = item.layer_min_scale_denom
6357
+ ? this._mapScaleToZoomLevel(item.layer_min_scale_denom)
6358
+ : undefined;
6359
+ var maxZoomLayer = item.layer_max_scale_denom
6360
+ ? this._mapScaleToZoomLevel(item.layer_max_scale_denom)
6361
+ : undefined;
6362
+ var minZooms = [minZoomWebmap, minZoomLayer].filter(Boolean);
6363
+ var maxZooms = [maxZoomWebmap, maxZoomLayer].filter(Boolean);
6364
+ var minZoom = Math.max.apply(Math, minZooms);
6365
+ var maxZoom = Math.min.apply(Math, maxZooms);
6366
+ return { minZoom: minZoom, maxZoom: maxZoom };
6367
+ };
6306
6368
  NgwWebmapItem.prototype._init = function (item) {
6307
6369
  var _this = this;
6308
6370
  this.initItem(item).then(function () {
@@ -6390,15 +6452,59 @@ var NgwMap = (function (exports) {
6390
6452
  return this._removed;
6391
6453
  };
6392
6454
  OnFirstShowAdapter.prototype.showLayer = function () {
6393
- this.options.visibility = true;
6394
- if (this.layer.length) {
6395
- this.layer.forEach(function (x) {
6396
- webMap.showLayer(x);
6455
+ return __awaiter(this, void 0, void 0, function () {
6456
+ var _i, _a, x;
6457
+ return __generator(this, function (_b) {
6458
+ switch (_b.label) {
6459
+ case 0:
6460
+ this.options.visibility = true;
6461
+ if (!this.layer.length) return [3 /*break*/, 5];
6462
+ _i = 0, _a = this.layer;
6463
+ _b.label = 1;
6464
+ case 1:
6465
+ if (!(_i < _a.length)) return [3 /*break*/, 4];
6466
+ x = _a[_i];
6467
+ return [4 /*yield*/, webMap.showLayer(x)];
6468
+ case 2:
6469
+ _b.sent();
6470
+ _b.label = 3;
6471
+ case 3:
6472
+ _i++;
6473
+ return [3 /*break*/, 1];
6474
+ case 4: return [3 /*break*/, 7];
6475
+ case 5: return [4 /*yield*/, this.loadLayer()];
6476
+ case 6:
6477
+ _b.sent();
6478
+ _b.label = 7;
6479
+ case 7: return [2 /*return*/];
6480
+ }
6397
6481
  });
6398
- }
6399
- else {
6400
- this.loadLayer();
6401
- }
6482
+ });
6483
+ };
6484
+ OnFirstShowAdapter.prototype.hideLayer = function () {
6485
+ return __awaiter(this, void 0, void 0, function () {
6486
+ var _i, _a, x;
6487
+ return __generator(this, function (_b) {
6488
+ switch (_b.label) {
6489
+ case 0:
6490
+ this.options.visibility = false;
6491
+ if (!this.layer) return [3 /*break*/, 4];
6492
+ _i = 0, _a = this.layer;
6493
+ _b.label = 1;
6494
+ case 1:
6495
+ if (!(_i < _a.length)) return [3 /*break*/, 4];
6496
+ x = _a[_i];
6497
+ return [4 /*yield*/, webMap.hideLayer(x)];
6498
+ case 2:
6499
+ _b.sent();
6500
+ _b.label = 3;
6501
+ case 3:
6502
+ _i++;
6503
+ return [3 /*break*/, 1];
6504
+ case 4: return [2 /*return*/];
6505
+ }
6506
+ });
6507
+ });
6402
6508
  };
6403
6509
  OnFirstShowAdapter.prototype.loadLayer = function () {
6404
6510
  return __awaiter(this, void 0, void 0, function () {
@@ -6428,13 +6534,13 @@ var NgwMap = (function (exports) {
6428
6534
  if (this._removed) {
6429
6535
  webMap.removeLayer(adapter);
6430
6536
  }
6537
+ this.layer.push(adapter);
6431
6538
  if (!this.options.visibility) return [3 /*break*/, 4];
6432
6539
  return [4 /*yield*/, webMap.showLayer(adapter)];
6433
6540
  case 3:
6434
6541
  _a.sent();
6435
6542
  _a.label = 4;
6436
6543
  case 4:
6437
- this.layer.push(adapter);
6438
6544
  this._creatingInProgress = false;
6439
6545
  _a.label = 5;
6440
6546
  case 5: return [2 /*return*/, this.layer];
@@ -6442,12 +6548,6 @@ var NgwMap = (function (exports) {
6442
6548
  });
6443
6549
  });
6444
6550
  };
6445
- OnFirstShowAdapter.prototype.hideLayer = function () {
6446
- this.options.visibility = false;
6447
- if (this.layer) {
6448
- this.layer.forEach(function (x) { return webMap.hideLayer(x); });
6449
- }
6450
- };
6451
6551
  return OnFirstShowAdapter;
6452
6552
  }());
6453
6553
  return [2 /*return*/, OnFirstShowAdapter];
@@ -6728,6 +6828,8 @@ var NgwMap = (function (exports) {
6728
6828
  options.order = _this.options.order;
6729
6829
  options.ratio = _this.options.ratio;
6730
6830
  options.crossOrigin = _this.options.crossOrigin;
6831
+ options.minZoom = _this.options.minZoom;
6832
+ options.maxZoom = _this.options.maxZoom;
6731
6833
  options.drawOrderEnabled = webmap_1.draw_order_enabled;
6732
6834
  var layer = new _this.NgwWebmapItem(_this.options.webMap, webmap_1.root_item, options, _this.options.connector);
6733
6835
  layer.emitter.on('init', function () { return resolve(layer); });
@@ -8477,5 +8579,5 @@ var NgwMap = (function (exports) {
8477
8579
 
8478
8580
  return exports;
8479
8581
 
8480
- }({}));
8582
+ })({});
8481
8583
  //# sourceMappingURL=ngw-map.global.js.map