map-ol-utils 0.1.27 → 0.1.28

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.
package/README.md CHANGED
@@ -0,0 +1,109 @@
1
+ # map-ol-utils
2
+
3
+ OpenLayers 地图工具库,封装常用的图层创建、要素交互与地图管理操作。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ pnpm add map-ol-utils
9
+ ```
10
+
11
+ ## 快速上手
12
+
13
+ ```ts
14
+ import { createMapInstance, createMassMarksLayer, addMassMarksLayer } from 'map-ol-utils'
15
+
16
+ // 创建地图(单例)
17
+ const map = createMapInstance({ target: 'map-container' })
18
+
19
+ // 添加点位图层
20
+ const layer = createMassMarksLayer(dataList, styles)
21
+ map.addLayer(layer)
22
+ ```
23
+
24
+ ## 主要 API
25
+
26
+ ### 地图管理
27
+
28
+ | 函数 | 说明 |
29
+ |------|------|
30
+ | `createMap(config)` | 创建 OL 地图实例 |
31
+ | `createMapInstance(config)` | 创建地图单例 |
32
+ | `getMapInstance()` | 获取当前单例 |
33
+ | `disposeMap()` | 销毁地图,释放资源 |
34
+ | `resetMap(config)` | 重置地图(清除图层并还原视图) |
35
+ | `resetZoomAndCenter(center)` | 动画还原缩放和中心点 |
36
+
37
+ ### 底图图层
38
+
39
+ | 函数 | 说明 |
40
+ |------|------|
41
+ | `createBaseLayer(type?)` | 创建杭州本地切片底图 |
42
+ | `createMapWorldLayer(options)` | 创建天地图图层 |
43
+ | `createZheJiangLayer(type?)` | 创建浙江省切片图层 |
44
+ | `switchBaseLayer(type)` | 切换底图类型 |
45
+
46
+ ### 矢量图层
47
+
48
+ | 函数 | 说明 |
49
+ |------|------|
50
+ | `createBusinessLayer(dataList, config)` | 从业务数据创建矢量图层(自动识别线/面类型) |
51
+ | `createVectorLineLayer(dataList, config)` | 创建线状图层 |
52
+ | `createVectorFaceLayer(dataList, config)` | 创建面状图层 |
53
+ | `appendFeaturesByLayer(layer, dataList)` | 向已有图层追加要素 |
54
+
55
+ ### 点位与聚合
56
+
57
+ | 函数 | 说明 |
58
+ |------|------|
59
+ | `createMassMarksLayer(dataList, styles)` | 创建大量点位图层 |
60
+ | `addMassMarksLayer(getImgUrlFn)` | 高阶函数,返回添加点位图层的方法 |
61
+ | `buildMassMarksStyles(getImgUrlFn)` | 构建多状态点位样式数组 |
62
+ | `updateMarksLayersByStatus(statusList)` | 按状态控制点位显隐 |
63
+ | `createClusterLayer(dataList, config)` | 创建聚合图层 |
64
+
65
+ ### 交互与选择
66
+
67
+ | 函数 | 说明 |
68
+ |------|------|
69
+ | `createSelectByLayer(layer)` | 为图层添加点击选中交互 |
70
+ | `activeFeatureByUid(uid)` | 通过 uid 程序化激活要素 |
71
+ | `resetActiveFeature()` | 清除选中状态 |
72
+ | `resetActiveVector()` | 清除矢量激活状态 |
73
+
74
+ ### 视图控制
75
+
76
+ | 函数 | 说明 |
77
+ |------|------|
78
+ | `setFitViewByCoords(coords)` | 缩放至坐标范围 |
79
+ | `setFitViewByGeom(geom)` | 缩放至几何范围 |
80
+ | `setFitViewByLayer(layer)` | 缩放至图层范围 |
81
+
82
+ ### OGC
83
+
84
+ | 函数 | 说明 |
85
+ |------|------|
86
+ | `createWmtsLayer(url, options)` | 从 GeoServer GetCapabilities 创建 WMTS 图层 |
87
+
88
+ ## 依赖
89
+
90
+ - [ol](https://openlayers.org/) `>=10.5.0`(peer dependency)
91
+ - [gcoord](https://github.com/hujiulong/gcoord) — 坐标系转换
92
+ - [mitt](https://github.com/developit/mitt) — 事件总线
93
+
94
+ ## 事件
95
+
96
+ 通过导出的 `emitter` 监听图层交互事件:
97
+
98
+ ```ts
99
+ import { emitter } from 'map-ol-utils'
100
+
101
+ emitter.on('selected-feature', (data) => {
102
+ console.log('选中要素:', data)
103
+ })
104
+ ```
105
+
106
+ | 事件名 | 触发时机 | 回调参数 |
107
+ |--------|----------|----------|
108
+ | `selected-feature` | 点击选中要素 | feature properties |
109
+ | `dynamic-marker` | 选中动态标注点 | marker data |
package/dist/index.cjs CHANGED
@@ -69,6 +69,7 @@ var index_exports = {};
69
69
  __export(index_exports, {
70
70
  GeometryType: () => GeometryType,
71
71
  activeFeatureByUid: () => activeFeatureByUid,
72
+ addFeaturesByLayer: () => addFeaturesByLayer,
72
73
  addMassMarksLayer: () => addMassMarksLayer,
73
74
  appendFeaturesByLayer: () => appendFeaturesByLayer,
74
75
  buildMassMarksStyles: () => buildMassMarksStyles,
@@ -508,8 +509,8 @@ var createSelectByLayer = (vectorLayer) => {
508
509
  vectorLayer.set("_selectInteraction", interaction);
509
510
  return interaction;
510
511
  };
511
- var createMassMarksLayer = (dataList, styleList = []) => {
512
- const features = dataList.map((item) => {
512
+ var createFeatures = (dataList, styleList = []) => {
513
+ return dataList.map((item) => {
513
514
  const { crsForm } = item;
514
515
  const coord = import_gcoord.default.transform(
515
516
  [+item.lnglat[0], +item.lnglat[1]],
@@ -526,10 +527,21 @@ var createMassMarksLayer = (dataList, styleList = []) => {
526
527
  feature.setStyle(styleList[item.style]);
527
528
  return feature;
528
529
  });
530
+ };
531
+ var addFeaturesByLayer = (targetLayer, dataList, config) => {
532
+ const massMarksStyles = targetLayer.get("_massMarksStyles");
533
+ const targetSource = targetLayer == null ? void 0 : targetLayer.getSource();
534
+ const { clear } = config;
535
+ if (clear) {
536
+ targetSource == null ? void 0 : targetSource.clear();
537
+ }
538
+ targetSource == null ? void 0 : targetSource.addFeatures(createFeatures(dataList, massMarksStyles));
539
+ };
540
+ var createMassMarksLayer = (dataList, styleList = []) => {
529
541
  const vectorLayer = new import_Vector.default({
530
542
  zIndex: 2e3,
531
543
  source: new import_Vector2.default({
532
- features
544
+ features: createFeatures(dataList, styleList)
533
545
  })
534
546
  });
535
547
  vectorLayer.setProperties({
@@ -618,7 +630,8 @@ var addMassMarksLayer = (getImgUrlFn) => {
618
630
  className: layerName,
619
631
  _layerName: layerName,
620
632
  _isVectorLayer: true,
621
- _isDynamic: isDynamic
633
+ _isDynamic: isDynamic,
634
+ _massMarksStyles: massMarksStyles
622
635
  });
623
636
  instance.addLayer(massMarksLayer);
624
637
  return massMarksLayer;
@@ -998,8 +1011,8 @@ var getLayersDataList = () => {
998
1011
  };
999
1012
  var determineGeometryType = (coordinates) => {
1000
1013
  const getArrayDepth = (arr) => {
1001
- if (!Array.isArray(arr)) return 0;
1002
- return 1 + Math.max(...arr.map((item) => getArrayDepth(item)), 0);
1014
+ if (!Array.isArray(arr) || arr.length === 0) return 0;
1015
+ return 1 + getArrayDepth(arr[0]);
1003
1016
  };
1004
1017
  const isClosedRing = (coords) => {
1005
1018
  if (!Array.isArray(coords) || coords.length < 3) return false;
@@ -1097,6 +1110,7 @@ var createWmtsLayer = (serverUrl) => (config) => __async(null, null, function* (
1097
1110
  0 && (module.exports = {
1098
1111
  GeometryType,
1099
1112
  activeFeatureByUid,
1113
+ addFeaturesByLayer,
1100
1114
  addMassMarksLayer,
1101
1115
  appendFeaturesByLayer,
1102
1116
  buildMassMarksStyles,
package/dist/index.d.cts CHANGED
@@ -147,7 +147,9 @@ declare const createZheJiangLayer: (layerName?: ZheJiangType, tk?: string) => Ti
147
147
  * 根据图层名称获取图层
148
148
  * @param name
149
149
  */
150
- declare const getLayerByName: (name: string) => Layer<ol_source.Source, ol_renderer_Layer.default<any>> | undefined;
150
+ declare const getLayerByName: (name: string) => Layer<ol_source.Source, ol_renderer_Layer.default<any>, {
151
+ [x: string]: any;
152
+ }> | undefined;
151
153
  /**
152
154
  * 根据图层名称删除图层
153
155
  * @param name
@@ -192,7 +194,11 @@ declare const setFitViewByGeom: (geom: SimpleGeometry, mapInstance?: CustomMap,
192
194
  * @param fitOptions
193
195
  */
194
196
  declare const setFitViewByLayer: (layer: VectorLayer, mapInstance?: CustomMap, fitOptions?: FitOptions) => void;
195
- declare const createBusinessLayer: (dataList: MassData[], config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
197
+ declare const createBusinessLayer: (dataList: MassData[], config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry, {
198
+ [x: string]: any;
199
+ }>>, Feature<ol_geom.Geometry, {
200
+ [x: string]: any;
201
+ }>>;
196
202
  /**
197
203
  * 追加Features
198
204
  * @param targetLayer
@@ -205,13 +211,21 @@ declare const appendFeaturesByLayer: (targetLayer: VectorLayer, dataList: MassDa
205
211
  * @param dataList
206
212
  * @param config
207
213
  */
208
- declare const createVectorFaceLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
214
+ declare const createVectorFaceLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry, {
215
+ [x: string]: any;
216
+ }>>, Feature<ol_geom.Geometry, {
217
+ [x: string]: any;
218
+ }>>;
209
219
  /**
210
220
  * 创建矢量线图层
211
221
  * @param dataList
212
222
  * @param config
213
223
  */
214
- declare const createVectorLineLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
224
+ declare const createVectorLineLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry, {
225
+ [x: string]: any;
226
+ }>>, Feature<ol_geom.Geometry, {
227
+ [x: string]: any;
228
+ }>>;
215
229
  /**
216
230
  * 移除覆盖物以及自定义图层
217
231
  */
@@ -234,17 +248,34 @@ declare const buildMassMarksStyles: (getImgUrlFn: GetImgUrlFn) => (iconConfig: I
234
248
  * @param vectorLayer
235
249
  */
236
250
  declare const createSelectByLayer: (vectorLayer: VectorLayer) => Select;
251
+ /**
252
+ * 添加Features
253
+ * @param targetLayer
254
+ * @param dataList
255
+ * @param config
256
+ */
257
+ declare const addFeaturesByLayer: (targetLayer: VectorLayer, dataList: MassData[], config: {
258
+ clear: false;
259
+ }) => void;
237
260
  /**
238
261
  * 创建massMarksLayer
239
262
  * @param dataList
240
263
  * @param styleList
241
264
  */
242
- declare const createMassMarksLayer: (dataList: MassData[], styleList?: StyleLike[]) => VectorLayer<VectorSource<Feature<Point>>, Feature<Point>>;
265
+ declare const createMassMarksLayer: (dataList: MassData[], styleList?: StyleLike[]) => VectorLayer<VectorSource<Feature<Point, {
266
+ [x: string]: any;
267
+ }>>, Feature<Point, {
268
+ [x: string]: any;
269
+ }>>;
243
270
  /**
244
271
  * 添加massMarksLayer
245
272
  * @param getImgUrlFn
246
273
  */
247
- declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[] | undefined, iconConfig: IconConfig, openClick?: boolean) => VectorLayer<VectorSource<Feature<Point>>, Feature<Point>>;
274
+ declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[] | undefined, iconConfig: IconConfig, openClick?: boolean) => VectorLayer<VectorSource<Feature<Point, {
275
+ [x: string]: any;
276
+ }>>, Feature<Point, {
277
+ [x: string]: any;
278
+ }>>;
248
279
  /**
249
280
  * 更新图层根据选中状态列表
250
281
  * @param checkedStatusList
@@ -260,6 +291,10 @@ declare const createOverlay: (config?: Options) => Overlay;
260
291
  * @param dataList
261
292
  * @param config
262
293
  */
263
- declare const createClusterLayer: (dataList: ClusterData[], config: ClusterConfig) => VectorLayer<Cluster<Feature<Point>>, Feature<ol_geom.Geometry>>;
294
+ declare const createClusterLayer: (dataList: ClusterData[], config: ClusterConfig) => VectorLayer<Cluster<Feature<Point, {
295
+ [x: string]: any;
296
+ }>>, Feature<ol_geom.Geometry, {
297
+ [x: string]: any;
298
+ }>>;
264
299
 
265
- export { type ClusterConfig, type ClusterData, type CustomMap, type GeometryCoordinates, GeometryType, type GetImgUrl, type GetImgUrlFn, type HzsyType, type IconConfig, type MassData, type VectorConfig, type WmtsSourceOptions, type WorldLayerType, type ZheJiangType, activeFeatureByUid, addMassMarksLayer, appendFeaturesByLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createClusterLayer, createMap, createMapInstance, createMapWorldLayer, createMassMarksLayer, createOverlay, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, createZheJiangLayer, disposeMap, emitter, getLayerByName, getLayersDataList, getMapInstance, instance, removeAllLayers, removeLayerByName, removeOverlays, resetActiveFeature, resetActiveVector, resetMap, resetZoomAndCenter, setFitViewByCoords, setFitViewByGeom, setFitViewByLayer, updateMarksLayersByStatus };
300
+ export { type ClusterConfig, type ClusterData, type CustomMap, type GeometryCoordinates, GeometryType, type GetImgUrl, type GetImgUrlFn, type HzsyType, type IconConfig, type MassData, type VectorConfig, type WmtsSourceOptions, type WorldLayerType, type ZheJiangType, activeFeatureByUid, addFeaturesByLayer, addMassMarksLayer, appendFeaturesByLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createClusterLayer, createMap, createMapInstance, createMapWorldLayer, createMassMarksLayer, createOverlay, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, createZheJiangLayer, disposeMap, emitter, getLayerByName, getLayersDataList, getMapInstance, instance, removeAllLayers, removeLayerByName, removeOverlays, resetActiveFeature, resetActiveVector, resetMap, resetZoomAndCenter, setFitViewByCoords, setFitViewByGeom, setFitViewByLayer, updateMarksLayersByStatus };
package/dist/index.d.ts CHANGED
@@ -147,7 +147,9 @@ declare const createZheJiangLayer: (layerName?: ZheJiangType, tk?: string) => Ti
147
147
  * 根据图层名称获取图层
148
148
  * @param name
149
149
  */
150
- declare const getLayerByName: (name: string) => Layer<ol_source.Source, ol_renderer_Layer.default<any>> | undefined;
150
+ declare const getLayerByName: (name: string) => Layer<ol_source.Source, ol_renderer_Layer.default<any>, {
151
+ [x: string]: any;
152
+ }> | undefined;
151
153
  /**
152
154
  * 根据图层名称删除图层
153
155
  * @param name
@@ -192,7 +194,11 @@ declare const setFitViewByGeom: (geom: SimpleGeometry, mapInstance?: CustomMap,
192
194
  * @param fitOptions
193
195
  */
194
196
  declare const setFitViewByLayer: (layer: VectorLayer, mapInstance?: CustomMap, fitOptions?: FitOptions) => void;
195
- declare const createBusinessLayer: (dataList: MassData[], config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
197
+ declare const createBusinessLayer: (dataList: MassData[], config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry, {
198
+ [x: string]: any;
199
+ }>>, Feature<ol_geom.Geometry, {
200
+ [x: string]: any;
201
+ }>>;
196
202
  /**
197
203
  * 追加Features
198
204
  * @param targetLayer
@@ -205,13 +211,21 @@ declare const appendFeaturesByLayer: (targetLayer: VectorLayer, dataList: MassDa
205
211
  * @param dataList
206
212
  * @param config
207
213
  */
208
- declare const createVectorFaceLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
214
+ declare const createVectorFaceLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry, {
215
+ [x: string]: any;
216
+ }>>, Feature<ol_geom.Geometry, {
217
+ [x: string]: any;
218
+ }>>;
209
219
  /**
210
220
  * 创建矢量线图层
211
221
  * @param dataList
212
222
  * @param config
213
223
  */
214
- declare const createVectorLineLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry>>, Feature<ol_geom.Geometry>>;
224
+ declare const createVectorLineLayer: (dataList: MassData[] | undefined, config: VectorConfig) => VectorLayer<VectorSource<Feature<ol_geom.Geometry, {
225
+ [x: string]: any;
226
+ }>>, Feature<ol_geom.Geometry, {
227
+ [x: string]: any;
228
+ }>>;
215
229
  /**
216
230
  * 移除覆盖物以及自定义图层
217
231
  */
@@ -234,17 +248,34 @@ declare const buildMassMarksStyles: (getImgUrlFn: GetImgUrlFn) => (iconConfig: I
234
248
  * @param vectorLayer
235
249
  */
236
250
  declare const createSelectByLayer: (vectorLayer: VectorLayer) => Select;
251
+ /**
252
+ * 添加Features
253
+ * @param targetLayer
254
+ * @param dataList
255
+ * @param config
256
+ */
257
+ declare const addFeaturesByLayer: (targetLayer: VectorLayer, dataList: MassData[], config: {
258
+ clear: false;
259
+ }) => void;
237
260
  /**
238
261
  * 创建massMarksLayer
239
262
  * @param dataList
240
263
  * @param styleList
241
264
  */
242
- declare const createMassMarksLayer: (dataList: MassData[], styleList?: StyleLike[]) => VectorLayer<VectorSource<Feature<Point>>, Feature<Point>>;
265
+ declare const createMassMarksLayer: (dataList: MassData[], styleList?: StyleLike[]) => VectorLayer<VectorSource<Feature<Point, {
266
+ [x: string]: any;
267
+ }>>, Feature<Point, {
268
+ [x: string]: any;
269
+ }>>;
243
270
  /**
244
271
  * 添加massMarksLayer
245
272
  * @param getImgUrlFn
246
273
  */
247
- declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[] | undefined, iconConfig: IconConfig, openClick?: boolean) => VectorLayer<VectorSource<Feature<Point>>, Feature<Point>>;
274
+ declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[] | undefined, iconConfig: IconConfig, openClick?: boolean) => VectorLayer<VectorSource<Feature<Point, {
275
+ [x: string]: any;
276
+ }>>, Feature<Point, {
277
+ [x: string]: any;
278
+ }>>;
248
279
  /**
249
280
  * 更新图层根据选中状态列表
250
281
  * @param checkedStatusList
@@ -260,6 +291,10 @@ declare const createOverlay: (config?: Options) => Overlay;
260
291
  * @param dataList
261
292
  * @param config
262
293
  */
263
- declare const createClusterLayer: (dataList: ClusterData[], config: ClusterConfig) => VectorLayer<Cluster<Feature<Point>>, Feature<ol_geom.Geometry>>;
294
+ declare const createClusterLayer: (dataList: ClusterData[], config: ClusterConfig) => VectorLayer<Cluster<Feature<Point, {
295
+ [x: string]: any;
296
+ }>>, Feature<ol_geom.Geometry, {
297
+ [x: string]: any;
298
+ }>>;
264
299
 
265
- export { type ClusterConfig, type ClusterData, type CustomMap, type GeometryCoordinates, GeometryType, type GetImgUrl, type GetImgUrlFn, type HzsyType, type IconConfig, type MassData, type VectorConfig, type WmtsSourceOptions, type WorldLayerType, type ZheJiangType, activeFeatureByUid, addMassMarksLayer, appendFeaturesByLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createClusterLayer, createMap, createMapInstance, createMapWorldLayer, createMassMarksLayer, createOverlay, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, createZheJiangLayer, disposeMap, emitter, getLayerByName, getLayersDataList, getMapInstance, instance, removeAllLayers, removeLayerByName, removeOverlays, resetActiveFeature, resetActiveVector, resetMap, resetZoomAndCenter, setFitViewByCoords, setFitViewByGeom, setFitViewByLayer, updateMarksLayersByStatus };
300
+ export { type ClusterConfig, type ClusterData, type CustomMap, type GeometryCoordinates, GeometryType, type GetImgUrl, type GetImgUrlFn, type HzsyType, type IconConfig, type MassData, type VectorConfig, type WmtsSourceOptions, type WorldLayerType, type ZheJiangType, activeFeatureByUid, addFeaturesByLayer, addMassMarksLayer, appendFeaturesByLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createClusterLayer, createMap, createMapInstance, createMapWorldLayer, createMassMarksLayer, createOverlay, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, createZheJiangLayer, disposeMap, emitter, getLayerByName, getLayersDataList, getMapInstance, instance, removeAllLayers, removeLayerByName, removeOverlays, resetActiveFeature, resetActiveVector, resetMap, resetZoomAndCenter, setFitViewByCoords, setFitViewByGeom, setFitViewByLayer, updateMarksLayersByStatus };
package/dist/index.js CHANGED
@@ -70,13 +70,7 @@ import VectorSource from "ol/source/Vector";
70
70
  import { Point } from "ol/geom";
71
71
  import { singleClick } from "ol/events/condition";
72
72
  import { boundingExtent, getCenter } from "ol/extent";
73
- import {
74
- Icon,
75
- Text,
76
- Fill,
77
- Style,
78
- Stroke
79
- } from "ol/style";
73
+ import { Icon, Text, Fill, Style, Stroke } from "ol/style";
80
74
  var removeOverlays = (key = "") => {
81
75
  if (instance) {
82
76
  const overlays = instance.getOverlays().getArray().filter((overlay) => overlay.get(key || "position"));
@@ -446,8 +440,8 @@ var createSelectByLayer = (vectorLayer) => {
446
440
  vectorLayer.set("_selectInteraction", interaction);
447
441
  return interaction;
448
442
  };
449
- var createMassMarksLayer = (dataList, styleList = []) => {
450
- const features = dataList.map((item) => {
443
+ var createFeatures = (dataList, styleList = []) => {
444
+ return dataList.map((item) => {
451
445
  const { crsForm } = item;
452
446
  const coord = gcoord.transform(
453
447
  [+item.lnglat[0], +item.lnglat[1]],
@@ -464,10 +458,21 @@ var createMassMarksLayer = (dataList, styleList = []) => {
464
458
  feature.setStyle(styleList[item.style]);
465
459
  return feature;
466
460
  });
461
+ };
462
+ var addFeaturesByLayer = (targetLayer, dataList, config) => {
463
+ const massMarksStyles = targetLayer.get("_massMarksStyles");
464
+ const targetSource = targetLayer == null ? void 0 : targetLayer.getSource();
465
+ const { clear } = config;
466
+ if (clear) {
467
+ targetSource == null ? void 0 : targetSource.clear();
468
+ }
469
+ targetSource == null ? void 0 : targetSource.addFeatures(createFeatures(dataList, massMarksStyles));
470
+ };
471
+ var createMassMarksLayer = (dataList, styleList = []) => {
467
472
  const vectorLayer = new VectorLayer({
468
473
  zIndex: 2e3,
469
474
  source: new VectorSource({
470
- features
475
+ features: createFeatures(dataList, styleList)
471
476
  })
472
477
  });
473
478
  vectorLayer.setProperties({
@@ -556,7 +561,8 @@ var addMassMarksLayer = (getImgUrlFn) => {
556
561
  className: layerName,
557
562
  _layerName: layerName,
558
563
  _isVectorLayer: true,
559
- _isDynamic: isDynamic
564
+ _isDynamic: isDynamic,
565
+ _massMarksStyles: massMarksStyles
560
566
  });
561
567
  instance.addLayer(massMarksLayer);
562
568
  return massMarksLayer;
@@ -936,8 +942,8 @@ var getLayersDataList = () => {
936
942
  };
937
943
  var determineGeometryType = (coordinates) => {
938
944
  const getArrayDepth = (arr) => {
939
- if (!Array.isArray(arr)) return 0;
940
- return 1 + Math.max(...arr.map((item) => getArrayDepth(item)), 0);
945
+ if (!Array.isArray(arr) || arr.length === 0) return 0;
946
+ return 1 + getArrayDepth(arr[0]);
941
947
  };
942
948
  const isClosedRing = (coords) => {
943
949
  if (!Array.isArray(coords) || coords.length < 3) return false;
@@ -1034,6 +1040,7 @@ var createWmtsLayer = (serverUrl) => (config) => __async(null, null, function* (
1034
1040
  export {
1035
1041
  GeometryType,
1036
1042
  activeFeatureByUid,
1043
+ addFeaturesByLayer,
1037
1044
  addMassMarksLayer,
1038
1045
  appendFeaturesByLayer,
1039
1046
  buildMassMarksStyles,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "map-ol-utils",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "type": "module",
5
5
  "description": "Openlayers utils library",
6
6
  "files": [
@@ -27,7 +27,7 @@
27
27
  "dependencies": {
28
28
  "gcoord": "^1.0.7",
29
29
  "mitt": "^3.0.1",
30
- "ol": "^10.7.0"
30
+ "ol": "^10.9.0"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "ol": ">=10.5.0"