@nextgis/ngw-map 1.11.10 → 1.12.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.11.10; author: NextGIS */
1
+ /** Bundle of @nextgis/ngw-map; version: 1.12.0; author: NextGIS */
2
2
  var NgwMap = (function (exports) {
3
3
  'use strict';
4
4
 
@@ -2681,6 +2681,9 @@ var NgwMap = (function (exports) {
2681
2681
  _c.sent();
2682
2682
  _c.label = 11;
2683
2683
  case 11:
2684
+ if (options.onAdded) {
2685
+ options.onAdded(_adapter);
2686
+ }
2684
2687
  this._emitLayerEvent('layer:add', layerId, _adapter);
2685
2688
  return [2 /*return*/, _adapter];
2686
2689
  case 12: return [2 /*return*/, Promise.reject('No adapter')];
@@ -2821,8 +2824,15 @@ var NgwMap = (function (exports) {
2821
2824
  WebMapLayers.prototype.addTileLayer = function (url, options) {
2822
2825
  return this.addLayer('TILE', __assign(__assign({}, options), { url: url }));
2823
2826
  };
2824
- /** Shortcut for {@link WebMapLayers.addLayer} to create TileLayer adapter */
2825
- WebMapLayers.prototype.addImageLayer = function (url, options) {
2827
+ WebMapLayers.prototype.addImageLayer = function (urlOrOptions, options) {
2828
+ var url;
2829
+ if (typeof urlOrOptions === 'string') {
2830
+ url = urlOrOptions;
2831
+ }
2832
+ else {
2833
+ url = urlOrOptions.url;
2834
+ options = urlOrOptions;
2835
+ }
2826
2836
  return this.addLayer('IMAGE', __assign(__assign({}, options), { url: url }));
2827
2837
  };
2828
2838
  /**
@@ -5167,10 +5177,10 @@ var NgwMap = (function (exports) {
5167
5177
  function createGeoJsonFeature(item) {
5168
5178
  var geometry = item.geom;
5169
5179
  var feature = {
5180
+ geometry: geometry,
5170
5181
  id: item.id,
5171
5182
  type: 'Feature',
5172
5183
  properties: item.fields,
5173
- geometry: geometry,
5174
5184
  };
5175
5185
  return feature;
5176
5186
  }
@@ -5196,7 +5206,19 @@ var NgwMap = (function (exports) {
5196
5206
  function createFeatureFieldFilterQueries(opt) {
5197
5207
  var queries = getQueries(opt);
5198
5208
  return CancelablePromise.all(queries).then(function (itemsParts) {
5199
- var items = itemsParts.reduce(function (a, b) { return a.concat(b); }, []);
5209
+ // this list of ids used for optimization
5210
+ var ids = [];
5211
+ var items = [];
5212
+ for (var _i = 0, itemsParts_1 = itemsParts; _i < itemsParts_1.length; _i++) {
5213
+ var part = itemsParts_1[_i];
5214
+ for (var _a = 0, part_1 = part; _a < part_1.length; _a++) {
5215
+ var item = part_1[_a];
5216
+ if (!ids.includes(item.id)) {
5217
+ items.push(item);
5218
+ ids.push(item.id);
5219
+ }
5220
+ }
5221
+ }
5200
5222
  var offset = opt.offset !== undefined ? opt.offset : 0;
5201
5223
  var limit = opt.limit !== undefined ? opt.limit : items.length;
5202
5224
  if (opt.offset || opt.limit) {
@@ -5205,27 +5227,27 @@ var NgwMap = (function (exports) {
5205
5227
  return items;
5206
5228
  });
5207
5229
  }
5230
+ function createParam(pf) {
5231
+ var field = pf[0], operation = pf[1], value = pf[2];
5232
+ var isFldStr = field !== 'id' ? 'fld_' : '';
5233
+ var vStart = '';
5234
+ var vEnd = '';
5235
+ var field_ = String(field)
5236
+ .trim()
5237
+ .replace(/^(%?)(.+?)(%?)$/, function (m, a, b, c) {
5238
+ vStart = a;
5239
+ vEnd = c;
5240
+ return b;
5241
+ });
5242
+ var v = vStart + value + vEnd;
5243
+ return ["".concat(isFldStr).concat(field_, "__").concat(operation), v];
5244
+ }
5208
5245
  function getQueries(opt, _queries, _parentAllParams) {
5209
5246
  if (_queries === void 0) { _queries = []; }
5210
5247
  if (_parentAllParams === void 0) { _parentAllParams = []; }
5211
5248
  var filters = opt.filters;
5212
5249
  var logic = typeof filters[0] === 'string' ? filters[0] : 'all';
5213
5250
  var filters_ = filters.filter(function (x) { return Array.isArray(x); });
5214
- var createParam = function (pf) {
5215
- var field = pf[0], operation = pf[1], value = pf[2];
5216
- var isFldStr = field !== 'id' ? 'fld_' : '';
5217
- var vStart = '';
5218
- var vEnd = '';
5219
- var field_ = String(field)
5220
- .trim()
5221
- .replace(/^(%?)(.+?)(%?)$/, function (m, a, b, c) {
5222
- vStart = a;
5223
- vEnd = c;
5224
- return b;
5225
- });
5226
- var v = vStart + value + vEnd;
5227
- return ["".concat(isFldStr).concat(field_, "__").concat(operation), v];
5228
- };
5229
5251
  if (logic === 'any') {
5230
5252
  for (var _i = 0, filters_1 = filters_; _i < filters_1.length; _i++) {
5231
5253
  var f = filters_1[_i];
@@ -5271,7 +5293,7 @@ var NgwMap = (function (exports) {
5271
5293
  }
5272
5294
  function fetchNgwLayerItemsRequest(options) {
5273
5295
  var params = __assign({}, FEATURE_REQUEST_PARAMS);
5274
- var connector = options.connector, limit = options.limit, offset = options.offset, intersects = options.intersects, orderBy = options.orderBy, resourceId = options.resourceId, paramList = options.paramList;
5296
+ var limit = options.limit, offset = options.offset, orderBy = options.orderBy, paramList = options.paramList, connector = options.connector, intersects = options.intersects, resourceId = options.resourceId;
5275
5297
  if (limit) {
5276
5298
  if (limit !== Number.POSITIVE_INFINITY) {
5277
5299
  params.limit = limit;
@@ -5284,7 +5306,6 @@ var NgwMap = (function (exports) {
5284
5306
  if (offset) {
5285
5307
  params.offset = offset;
5286
5308
  }
5287
- // TODO: fix type for options
5288
5309
  updateItemRequestParam(params, options);
5289
5310
  if (orderBy) {
5290
5311
  params.order_by = orderBy.join(',');
@@ -5704,6 +5725,26 @@ var NgwMap = (function (exports) {
5704
5725
  });
5705
5726
  }
5706
5727
 
5728
+ function getImageAdapterOptions(_a) {
5729
+ var resourceId = _a.resourceId, baseUrl = _a.baseUrl, nd = _a.nd, headers = _a.headers;
5730
+ var url = baseUrl + '/api/component/render/image';
5731
+ var params = { resource: resourceId };
5732
+ if (nd) {
5733
+ params.nd = nd;
5734
+ }
5735
+ return {
5736
+ url: url,
5737
+ resourceId: resourceId,
5738
+ headers: headers,
5739
+ params: params,
5740
+ updateWmsParams: function (params_) {
5741
+ if (nd) {
5742
+ params_.nd = nd;
5743
+ }
5744
+ return updateImageParams(params_, resourceId);
5745
+ },
5746
+ };
5747
+ }
5707
5748
  function ngwApiToAdapterOptions(_a) {
5708
5749
  var options = _a.options, webMap = _a.webMap, baseUrl = _a.baseUrl;
5709
5750
  var adapter = options.adapter || 'IMAGE';
@@ -5715,16 +5756,12 @@ var NgwMap = (function (exports) {
5715
5756
  if (typeof resourceId === 'number') {
5716
5757
  if (adapter === 'IMAGE') {
5717
5758
  if (isImageAllowed) {
5718
- url = baseUrl + '/api/component/render/image';
5719
- return {
5720
- url: url,
5759
+ return getImageAdapterOptions({
5721
5760
  resourceId: resourceId,
5722
5761
  headers: options.headers,
5723
- params: { resource: resourceId, nd: nd },
5724
- updateWmsParams: function (params) {
5725
- return updateImageParams(__assign({ nd: nd }, params), resourceId);
5726
- },
5727
- };
5762
+ nd: nd,
5763
+ baseUrl: baseUrl,
5764
+ });
5728
5765
  }
5729
5766
  else {
5730
5767
  adapter = 'TILE';
@@ -7139,6 +7176,7 @@ var NgwMap = (function (exports) {
7139
7176
  NgwWebmapLayerAdapter.prototype._setBasemaps = function (baseWebmap) {
7140
7177
  var _this = this;
7141
7178
  var webMap = this.options.webMap;
7179
+ // to avoid set many basemaps on init
7142
7180
  var enabledAlreadySet = false;
7143
7181
  var _loop_1 = function (x) {
7144
7182
  createOnFirstShowNgwAdapter({
@@ -7147,9 +7185,11 @@ var NgwMap = (function (exports) {
7147
7185
  item: x,
7148
7186
  adapterOptions: { crossOrigin: this_1.options.crossOrigin },
7149
7187
  }).then(function (adapter) {
7150
- // to avoid set many basemaps on init
7151
7188
  var visibility = enabledAlreadySet ? false : x.enabled;
7152
- webMap
7189
+ if (x.enabled) {
7190
+ enabledAlreadySet = true;
7191
+ }
7192
+ return webMap
7153
7193
  .addBaseLayer(adapter, {
7154
7194
  id: WEBMAP_BASELAYER_ID_PREFIX + x.resource_id,
7155
7195
  name: x.display_name,
@@ -7159,9 +7199,6 @@ var NgwMap = (function (exports) {
7159
7199
  .then(function (l) {
7160
7200
  l.id && _this._webmapBaselayersIds.push(l.id);
7161
7201
  });
7162
- if (x.enabled) {
7163
- enabledAlreadySet = true;
7164
- }
7165
7202
  });
7166
7203
  };
7167
7204
  var this_1 = this;
@@ -7643,7 +7680,7 @@ var NgwMap = (function (exports) {
7643
7680
  function updateImageParams(params, resourceId) {
7644
7681
  var bbox = params.bbox, width = params.width, height = params.height, nd = params.nd;
7645
7682
  return {
7646
- resource: resourceId,
7683
+ resource: Array.isArray(resourceId) ? resourceId.join(',') : resourceId,
7647
7684
  extent: bbox,
7648
7685
  size: width + ',' + height,
7649
7686
  timestamp: Date.now(),
@@ -7951,38 +7988,45 @@ var NgwMap = (function (exports) {
7951
7988
  }
7952
7989
  return CancelablePromise.resolve(undefined);
7953
7990
  }
7991
+ function featureLayerIdentify(options) {
7992
+ var g = options.geom;
7993
+ var geom = [];
7994
+ if (Array.isArray(g)) {
7995
+ geom = g;
7996
+ }
7997
+ else {
7998
+ var polygon = g.type === 'Feature' ? g.geometry : g.type === 'Polygon' ? g : false;
7999
+ if (polygon) {
8000
+ geom = polygon.coordinates[0];
8001
+ }
8002
+ }
8003
+ if (geom) {
8004
+ // create wkt string
8005
+ var polygonStr = [];
8006
+ for (var _i = 0, geom_1 = geom; _i < geom_1.length; _i++) {
8007
+ var _a = geom_1[_i], lng = _a[0], lat = _a[1];
8008
+ var _b = degrees2meters(lng, lat), x = _b[0], y = _b[1];
8009
+ polygonStr.push(x + ' ' + y);
8010
+ }
8011
+ var wkt = "POLYGON((".concat(polygonStr.join(', '), "))");
8012
+ var layers = options.layers;
8013
+ var data = {
8014
+ geom: wkt,
8015
+ srs: 3857,
8016
+ layers: layers,
8017
+ };
8018
+ return options.connector.post('feature_layer.identify', { data: data });
8019
+ }
8020
+ else {
8021
+ throw new Error('Not valid geometry format to make intersection');
8022
+ }
8023
+ }
7954
8024
  function sendIdentifyRequest(ev, options) {
8025
+ var _a;
7955
8026
  deprecatedMapClick(ev);
7956
- var _a = ev.lngLat, lng = _a[0], lat = _a[1];
7957
- var geom = [];
7958
- if (options.geom) {
7959
- var polygon_1 = options.geom.type === 'Feature'
7960
- ? options.geom.geometry
7961
- : options.geom.type === 'Polygon'
7962
- ? options.geom
7963
- : false;
7964
- if (polygon_1) {
7965
- geom = polygon_1.coordinates[0];
7966
- }
7967
- }
7968
- if (!geom.length) {
7969
- geom = getCirclePolygonCoordinates(lng, lat, options.radius);
7970
- }
7971
- // create wkt string
7972
- var polygon = [];
7973
- geom.forEach(function (_a) {
7974
- var lng = _a[0], lat = _a[1];
7975
- var _b = degrees2meters(lng, lat), x = _b[0], y = _b[1];
7976
- polygon.push(x + ' ' + y);
7977
- });
7978
- var wkt = "POLYGON((".concat(polygon.join(', '), "))");
7979
- var layers = options.layers;
7980
- var data = {
7981
- geom: wkt,
7982
- srs: 3857,
7983
- layers: layers,
7984
- };
7985
- return options.connector.post('feature_layer.identify', { data: data });
8027
+ var _b = ev.lngLat, lng = _b[0], lat = _b[1];
8028
+ var geom = (_a = options.geom) !== null && _a !== void 0 ? _a : getCirclePolygonCoordinates(lng, lat, options.radius);
8029
+ return featureLayerIdentify(__assign(__assign({}, options), { geom: geom }));
7986
8030
  }
7987
8031
  function createIdentifyItem(opt) {
7988
8032
  return new IdentifyItem(opt);