map-ol-utils 0.0.29 → 0.0.31

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/dist/index.cjs CHANGED
@@ -82,6 +82,7 @@ __export(index_exports, {
82
82
  createWmtsLayer: () => createWmtsLayer,
83
83
  disposeMap: () => disposeMap,
84
84
  emitter: () => emitter_default,
85
+ getLayersDataList: () => getLayersDataList,
85
86
  getMapInstance: () => getMapInstance,
86
87
  instance: () => instance,
87
88
  removeAllLayers: () => removeAllLayers,
@@ -98,62 +99,6 @@ var import_mitt = __toESM(require("mitt"), 1);
98
99
  var emitter = (0, import_mitt.default)();
99
100
  var emitter_default = emitter;
100
101
 
101
- // src/ogc-utils.ts
102
- var import_source = require("ol/source");
103
- var import_Tile = __toESM(require("ol/layer/Tile"), 1);
104
- var import_format = require("ol/format");
105
- var import_WMTS = require("ol/source/WMTS");
106
- var parser = new import_format.WMTSCapabilities();
107
- var capabilitiesMap = /* @__PURE__ */ new Map();
108
- var getCapabilities = (url) => {
109
- return new Promise((resolve) => {
110
- const capabilities = capabilitiesMap.get(url);
111
- if (capabilities) {
112
- resolve(capabilities);
113
- } else {
114
- fetch(url).then((data) => data.text()).then((text) => {
115
- const capabilities2 = parser.read(text);
116
- capabilitiesMap.set(url, capabilities2);
117
- resolve(capabilities2);
118
- });
119
- }
120
- });
121
- };
122
- var createWmtsLayer = (serverUrl) => (config) => __async(void 0, null, function* () {
123
- const { style, format, version, layerName, matrixSet } = config;
124
- const [workspace, datastore] = layerName.split(":");
125
- const capabilitiesUrl = `${serverUrl}/${workspace}/${datastore}/gwc/service/wmts?request=GetCapabilities`;
126
- return new Promise((resolve, reject) => {
127
- getCapabilities(capabilitiesUrl).then((data) => {
128
- const options = (0, import_WMTS.optionsFromCapabilities)(data, {
129
- Style: style || "",
130
- layer: datastore,
131
- version: version || "1.1.0",
132
- format: format || "image/png",
133
- matrixSet: matrixSet || "EPSG:4326"
134
- });
135
- console.log(options);
136
- if (options) {
137
- resolve(
138
- new import_Tile.default({
139
- zIndex: 3,
140
- className: layerName,
141
- source: new import_source.WMTS(options)
142
- })
143
- );
144
- } else {
145
- reject(new Error("Unable to create TileLayer"));
146
- }
147
- });
148
- });
149
- });
150
-
151
- // src/base-layer.ts
152
- var import_source2 = require("ol/source");
153
- var import_source3 = require("ol/source");
154
- var import_tilegrid = require("ol/tilegrid");
155
- var import_layer = require("ol/layer");
156
-
157
102
  // src/create-map.ts
158
103
  var import_Map = __toESM(require("ol/Map"), 1);
159
104
  var import_View = __toESM(require("ol/View"), 1);
@@ -162,25 +107,7 @@ var import_control = require("ol/control");
162
107
  // src/layer-utils.ts
163
108
  var import_gcoord = __toESM(require("gcoord"), 1);
164
109
  var import_geom = require("ol/geom");
165
-
166
- // src/helper.ts
167
- var hexToRgba = (hex, alpha) => {
168
- if (hex.startsWith("#")) {
169
- let tempHex = hex.replace("#", "");
170
- if (tempHex.length === 3) {
171
- tempHex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
172
- }
173
- const r = parseInt(tempHex.substring(0, 2), 16);
174
- const g = parseInt(tempHex.substring(2, 4), 16);
175
- const b = parseInt(tempHex.substring(4, 6), 16);
176
- return `rgba(${r}, ${g}, ${b}, ${alpha})`;
177
- } else {
178
- return hex;
179
- }
180
- };
181
-
182
- // src/layer-utils.ts
183
- var import_format2 = require("ol/format");
110
+ var import_format = require("ol/format");
184
111
  var import_ol = require("ol");
185
112
  var import_interaction = require("ol/interaction");
186
113
  var import_Vector = __toESM(require("ol/layer/Vector"), 1);
@@ -242,7 +169,15 @@ var assembleGeoJson = (dataList, config) => {
242
169
  return !needTransform ? { type: "FeatureCollection", features: tempList } : import_gcoord.default.transform({ type: "FeatureCollection", features: tempList }, import_gcoord.default.GCJ02, import_gcoord.default.WGS84);
243
170
  };
244
171
  var createVectorStyle = (data, config) => {
245
- const { isLine, colorMap, fillColor, colorKey, strokeColor, strokeWeight, fillOpacity } = config || {};
172
+ const {
173
+ isLine,
174
+ colorMap,
175
+ fillColor,
176
+ colorKey,
177
+ strokeColor,
178
+ strokeWeight,
179
+ fillOpacity
180
+ } = config || {};
246
181
  const style = new import_style.Style({
247
182
  stroke: new import_style.Stroke({
248
183
  width: strokeWeight,
@@ -252,26 +187,32 @@ var createVectorStyle = (data, config) => {
252
187
  if (!isLine) {
253
188
  style.setFill(
254
189
  new import_style.Fill({
255
- color: hexToRgba((colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || fillColor : fillColor) || "", fillOpacity || 1)
190
+ color: hexToRgba(
191
+ (colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || fillColor : fillColor) || "",
192
+ fillOpacity || 1
193
+ )
256
194
  })
257
195
  );
258
196
  }
259
197
  return style;
260
198
  };
261
199
  var createBusinessLayer = (dataList, config) => {
262
- const { layerName } = config || {};
200
+ const { layerName } = config;
263
201
  const geoJson = assembleGeoJson(dataList, config);
264
202
  const vectorLayer = new import_Vector.default({
265
203
  zIndex: 5,
266
204
  className: layerName ? layerName : "ol-layer",
267
205
  source: new import_Vector2.default({
268
- features: new import_format2.GeoJSON().readFeatures(geoJson).map((feature) => {
206
+ features: new import_format.GeoJSON().readFeatures(geoJson).map((feature) => {
269
207
  feature.setStyle(createVectorStyle(feature.getProperties(), config));
270
208
  return feature;
271
209
  })
272
210
  })
273
211
  });
274
- vectorLayer.set("_layerName", layerName);
212
+ vectorLayer.setProperties({
213
+ _layerName: layerName,
214
+ _dataList: [...dataList]
215
+ });
275
216
  return vectorLayer;
276
217
  };
277
218
  var createVectorFaceLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign(config, { isLine: false }));
@@ -289,7 +230,7 @@ var removeAllLayers = (isClearAll = true) => {
289
230
  };
290
231
  var resetActiveMarker = () => {
291
232
  removeOverlays();
292
- const massMarksLayers = instance.getLayers().getArray().filter((layer) => layer.get("_isMassMarksLayer"));
233
+ const massMarksLayers = instance.getAllLayers().filter((layer) => layer.get("_isMassMarksLayer"));
293
234
  massMarksLayers.forEach((layer) => {
294
235
  const selectInteraction = layer.get("_selectInteraction");
295
236
  if (selectInteraction) {
@@ -312,11 +253,15 @@ var activeMarkerByUid = (uid) => {
312
253
  );
313
254
  if (targetLayer) {
314
255
  const tempList = ((_a = targetLayer.getSource()) == null ? void 0 : _a.getFeatures()) || [];
315
- const targetFeature = tempList.find((feature) => feature.get("_uuid") === uid);
256
+ const targetFeature = tempList.find(
257
+ (feature) => feature.get("_uuid") === uid
258
+ );
316
259
  const selectInteraction = targetLayer.get("_selectInteraction");
317
260
  if (selectInteraction) {
318
261
  const collection = selectInteraction.getFeatures().getArray();
319
- const hasFeature = collection.find((feature) => feature.get("_uuid") === uid);
262
+ const hasFeature = collection.find(
263
+ (feature) => feature.get("_uuid") === uid
264
+ );
320
265
  if (!hasFeature) {
321
266
  selectInteraction.dispatchEvent({
322
267
  type: "select",
@@ -411,7 +356,11 @@ var createSelectByLayer = (vectorLayer) => {
411
356
  }, 1e3);
412
357
  }
413
358
  const view = instance.getView();
414
- view.animate({ zoom: 12, center: [+data.lnglat[0], +data.lnglat[1]], duration: 1e3 });
359
+ view.animate({
360
+ zoom: 12,
361
+ center: [+data.lnglat[0], +data.lnglat[1]],
362
+ duration: 1e3
363
+ });
415
364
  }
416
365
  if (deselected.length) {
417
366
  const feature = deselected[0];
@@ -475,22 +424,28 @@ var addMassMarksLayer = (getImgUrlFn) => {
475
424
  createSelectByLayer(massMarksLayer);
476
425
  }
477
426
  if (hasLine) {
478
- const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
479
- key: "line",
480
- isLine: true,
481
- strokeColor: "rgba(29, 235, 255, 0.8)"
482
- });
427
+ const vectorLayer = createBusinessLayer(
428
+ dataList,
429
+ vectorConfig || {
430
+ key: "line",
431
+ isLine: true,
432
+ strokeColor: "rgba(29, 235, 255, 0.8)"
433
+ }
434
+ );
483
435
  instance.addLayer(vectorLayer);
484
436
  }
485
437
  if (hasFace) {
486
- const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
487
- isLine: false,
488
- key: "faceList",
489
- fillColor: "#4247DF",
490
- strokeWeight: 1,
491
- strokeStyle: "dashed",
492
- strokeColor: "#4247DF"
493
- });
438
+ const vectorLayer = createBusinessLayer(
439
+ dataList,
440
+ vectorConfig || {
441
+ isLine: false,
442
+ key: "faceList",
443
+ fillColor: "#4247DF",
444
+ strokeWeight: 1,
445
+ strokeStyle: "dashed",
446
+ strokeColor: "#4247DF"
447
+ }
448
+ );
494
449
  instance.addLayer(vectorLayer);
495
450
  }
496
451
  massMarksLayer.setProperties({
@@ -509,80 +464,19 @@ var updateMarksLayersByStatus = (checkedStatusList = []) => {
509
464
 
510
465
  // src/create-map.ts
511
466
  var import_interaction2 = require("ol/interaction");
512
- var instance;
513
- var mapCenter = [119.71512016971076, 30.122490541963536];
514
- var createMapInstance = (config = {}) => {
515
- const innerConfig = Object.assign(
516
- {
517
- zoom: 9.4,
518
- maxZoom: 18,
519
- minZoom: 9.4,
520
- center: mapCenter,
521
- baseLayer: "vec-layer",
522
- projection: "EPSG:4326",
523
- layers: [createBaseLayer()],
524
- smoothExtentConstraint: false,
525
- tk: "c77eddc667c5bed016fded560baf93e7"
526
- },
527
- config || {}
528
- );
529
- if (instance) {
530
- return instance;
531
- }
532
- instance = new import_Map.default({
533
- view: new import_View.default(innerConfig),
534
- controls: (0, import_control.defaults)({
535
- zoom: false,
536
- rotate: false,
537
- attribution: false
538
- }),
539
- interactions: (0, import_interaction2.defaults)({
540
- doubleClickZoom: false
541
- }),
542
- layers: innerConfig.layers || [createBaseLayer()]
543
- });
544
- mapCenter = innerConfig.center || mapCenter;
545
- instance.activeBaseLayer = innerConfig.baseLayer;
546
- instance.getLayerByName = getLayerByName;
547
- instance.removeLayerByName = removeLayerByName;
548
- instance.changeLayersByNames = changeLayersByNames;
549
- instance.on("pointermove", (evt) => {
550
- instance.getTargetElement().style.cursor = instance.hasFeatureAtPixel(
551
- evt.pixel
552
- ) ? "pointer" : "";
553
- });
554
- return instance;
555
- };
556
- var disposeMap = () => {
557
- const layers = instance.getAllLayers();
558
- layers.forEach((layer) => {
559
- instance.removeLayer(layer);
560
- });
561
- instance.setTarget("");
562
- instance = void 0;
563
- };
564
- var getMapInstance = () => instance;
565
- var resetZoomAndCenter = (center = mapCenter) => {
566
- const view = instance.getView();
567
- view.animate({
568
- zoom: 9.4,
569
- center,
570
- duration: 1e3
571
- });
572
- };
573
- var resetMap = (config = { center: mapCenter, isClearAll: true }) => {
574
- removeAllLayers(config.isClearAll);
575
- resetZoomAndCenter(config.center || mapCenter);
576
- };
577
467
 
578
468
  // src/base-layer.ts
579
- var import_WMTS2 = __toESM(require("ol/tilegrid/WMTS"), 1);
469
+ var import_source = require("ol/source");
470
+ var import_source2 = require("ol/source");
471
+ var import_tilegrid = require("ol/tilegrid");
472
+ var import_layer = require("ol/layer");
473
+ var import_WMTS = __toESM(require("ol/tilegrid/WMTS"), 1);
580
474
  var createBaseLayer = (isDark = true) => {
581
475
  return new import_layer.Tile({
582
476
  zIndex: -1,
583
477
  minZoom: 8,
584
478
  maxZoom: 21,
585
- source: new import_source2.XYZ({
479
+ source: new import_source.XYZ({
586
480
  tileGrid: new import_tilegrid.TileGrid({
587
481
  tileSize: 256,
588
482
  resolutions: [
@@ -601,7 +495,12 @@ var createBaseLayer = (isDark = true) => {
601
495
  134089306640625e-20
602
496
  ],
603
497
  origin: [118.125614083886, 31.2857011022836],
604
- extent: [118.340502132662, 29.2073269598186, 120.724787992425, 30.5617943760008]
498
+ extent: [
499
+ 118.340502132662,
500
+ 29.2073269598186,
501
+ 120.724787992425,
502
+ 30.5617943760008
503
+ ]
605
504
  }),
606
505
  projection: "EPSG:4326",
607
506
  urls: isDark ? [
@@ -628,7 +527,7 @@ var createMapWorldLayer = (layerName, tk = "c77eddc667c5bed016fded560baf93e7") =
628
527
  return new import_layer.Tile({
629
528
  cacheSize: 20240,
630
529
  zIndex: -1,
631
- source: new import_source3.WMTS({
530
+ source: new import_source2.WMTS({
632
531
  crossOrigin: "anonymous",
633
532
  projection: "EPSG:4326",
634
533
  wrapX: true,
@@ -637,7 +536,7 @@ var createMapWorldLayer = (layerName, tk = "c77eddc667c5bed016fded560baf93e7") =
637
536
  version: "1.0.0",
638
537
  format: "image/png",
639
538
  matrixSet,
640
- tileGrid: new import_WMTS2.default({
539
+ tileGrid: new import_WMTS.default({
641
540
  origin: [-180, 90],
642
541
  matrixIds: [
643
542
  "1",
@@ -703,6 +602,142 @@ var changeLayersByNames = (activeNames, allLayerNames) => {
703
602
  layer.setVisible(activeNames == null ? void 0 : activeNames.includes(layer.getClassName()));
704
603
  });
705
604
  };
605
+
606
+ // src/create-map.ts
607
+ var instance;
608
+ var mapCenter = [119.71512016971076, 30.122490541963536];
609
+ var createMapInstance = (config = {}) => {
610
+ const innerConfig = Object.assign(
611
+ {
612
+ zoom: 9.4,
613
+ maxZoom: 18,
614
+ minZoom: 9.4,
615
+ center: mapCenter,
616
+ baseLayer: "vec-layer",
617
+ projection: "EPSG:4326",
618
+ layers: [createBaseLayer()],
619
+ smoothExtentConstraint: false,
620
+ tk: "c77eddc667c5bed016fded560baf93e7"
621
+ },
622
+ config || {}
623
+ );
624
+ if (instance) {
625
+ return instance;
626
+ }
627
+ instance = new import_Map.default({
628
+ view: new import_View.default(innerConfig),
629
+ controls: (0, import_control.defaults)({
630
+ zoom: false,
631
+ rotate: false,
632
+ attribution: false
633
+ }),
634
+ interactions: (0, import_interaction2.defaults)({
635
+ doubleClickZoom: false
636
+ }),
637
+ layers: innerConfig.layers || [createBaseLayer()]
638
+ });
639
+ mapCenter = innerConfig.center || mapCenter;
640
+ instance.activeBaseLayer = innerConfig.baseLayer;
641
+ instance.getLayerByName = getLayerByName;
642
+ instance.removeLayerByName = removeLayerByName;
643
+ instance.changeLayersByNames = changeLayersByNames;
644
+ instance.on("pointermove", (evt) => {
645
+ instance.getTargetElement().style.cursor = instance.hasFeatureAtPixel(
646
+ evt.pixel
647
+ ) ? "pointer" : "";
648
+ });
649
+ return instance;
650
+ };
651
+ var disposeMap = () => {
652
+ const layers = instance.getAllLayers();
653
+ layers.forEach((layer) => {
654
+ instance.removeLayer(layer);
655
+ });
656
+ instance.setTarget("");
657
+ instance = void 0;
658
+ };
659
+ var getMapInstance = () => instance;
660
+ var resetZoomAndCenter = (center = mapCenter) => {
661
+ const view = instance.getView();
662
+ view.animate({
663
+ zoom: 9.4,
664
+ center,
665
+ duration: 1e3
666
+ });
667
+ };
668
+ var resetMap = (config = { center: mapCenter, isClearAll: true }) => {
669
+ removeAllLayers(config.isClearAll);
670
+ resetZoomAndCenter(config.center || mapCenter);
671
+ };
672
+
673
+ // src/helper.ts
674
+ var hexToRgba = (hex, alpha) => {
675
+ if (hex.startsWith("#")) {
676
+ let tempHex = hex.replace("#", "");
677
+ if (tempHex.length === 3) {
678
+ tempHex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
679
+ }
680
+ const r = parseInt(tempHex.substring(0, 2), 16);
681
+ const g = parseInt(tempHex.substring(2, 4), 16);
682
+ const b = parseInt(tempHex.substring(4, 6), 16);
683
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
684
+ } else {
685
+ return hex;
686
+ }
687
+ };
688
+ var getLayersDataList = () => {
689
+ var _a;
690
+ return ((_a = instance) == null ? void 0 : _a.getAllLayers().map((layer) => layer.get("_dataList") || []).flat(2)) || [];
691
+ };
692
+
693
+ // src/ogc-utils.ts
694
+ var import_source3 = require("ol/source");
695
+ var import_Tile = __toESM(require("ol/layer/Tile"), 1);
696
+ var import_format2 = require("ol/format");
697
+ var import_WMTS2 = require("ol/source/WMTS");
698
+ var parser = new import_format2.WMTSCapabilities();
699
+ var capabilitiesMap = /* @__PURE__ */ new Map();
700
+ var getCapabilities = (url) => {
701
+ return new Promise((resolve) => {
702
+ const capabilities = capabilitiesMap.get(url);
703
+ if (capabilities) {
704
+ resolve(capabilities);
705
+ } else {
706
+ fetch(url).then((data) => data.text()).then((text) => {
707
+ const capabilities2 = parser.read(text);
708
+ capabilitiesMap.set(url, capabilities2);
709
+ resolve(capabilities2);
710
+ });
711
+ }
712
+ });
713
+ };
714
+ var createWmtsLayer = (serverUrl) => (config) => __async(void 0, null, function* () {
715
+ const { style, format, version, layerName, matrixSet } = config;
716
+ const [workspace, datastore] = layerName.split(":");
717
+ const capabilitiesUrl = `${serverUrl}/${workspace}/${datastore}/gwc/service/wmts?request=GetCapabilities`;
718
+ return new Promise((resolve, reject) => {
719
+ getCapabilities(capabilitiesUrl).then((data) => {
720
+ const options = (0, import_WMTS2.optionsFromCapabilities)(data, {
721
+ Style: style || "",
722
+ layer: datastore,
723
+ version: version || "1.1.0",
724
+ format: format || "image/png",
725
+ matrixSet: matrixSet || "EPSG:4326"
726
+ });
727
+ if (options) {
728
+ resolve(
729
+ new import_Tile.default({
730
+ zIndex: 3,
731
+ className: layerName,
732
+ source: new import_source3.WMTS(options)
733
+ })
734
+ );
735
+ } else {
736
+ reject(new Error("Unable to create TileLayer"));
737
+ }
738
+ });
739
+ });
740
+ });
706
741
  // Annotate the CommonJS export names for ESM import in node:
707
742
  0 && (module.exports = {
708
743
  activeMarkerByUid,
@@ -720,6 +755,7 @@ var changeLayersByNames = (activeNames, allLayerNames) => {
720
755
  createWmtsLayer,
721
756
  disposeMap,
722
757
  emitter,
758
+ getLayersDataList,
723
759
  getMapInstance,
724
760
  instance,
725
761
  removeAllLayers,
package/dist/index.d.cts CHANGED
@@ -64,13 +64,6 @@ type MassData = {
64
64
  }[];
65
65
  lnglat: [string, string] | [number, number];
66
66
  };
67
- type MassMarkersStyleOptions = {
68
- url: string;
69
- zIndex?: number;
70
- rotation: number;
71
- size: [number, number];
72
- anchor?: [number, number];
73
- };
74
67
  type WmtsSourceOptions = {
75
68
  style?: string;
76
69
  format?: string;
@@ -81,6 +74,12 @@ type WmtsSourceOptions = {
81
74
 
82
75
  declare const emitter: Emitter<Record<EventType, any>>;
83
76
 
77
+ declare const getLayersDataList: () => any[];
78
+
79
+ /**
80
+ * 创建WMTS图层
81
+ * @param serverUrl
82
+ */
84
83
  declare const createWmtsLayer: (serverUrl: string) => (config: WmtsSourceOptions) => Promise<TileLayer>;
85
84
 
86
85
  /**
@@ -163,4 +162,4 @@ declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[
163
162
  */
164
163
  declare const updateMarksLayersByStatus: (checkedStatusList?: string[]) => void;
165
164
 
166
- export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type MassData, type MassMarkersStyleOptions, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
165
+ export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type MassData, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getLayersDataList, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
package/dist/index.d.ts CHANGED
@@ -64,13 +64,6 @@ type MassData = {
64
64
  }[];
65
65
  lnglat: [string, string] | [number, number];
66
66
  };
67
- type MassMarkersStyleOptions = {
68
- url: string;
69
- zIndex?: number;
70
- rotation: number;
71
- size: [number, number];
72
- anchor?: [number, number];
73
- };
74
67
  type WmtsSourceOptions = {
75
68
  style?: string;
76
69
  format?: string;
@@ -81,6 +74,12 @@ type WmtsSourceOptions = {
81
74
 
82
75
  declare const emitter: Emitter<Record<EventType, any>>;
83
76
 
77
+ declare const getLayersDataList: () => any[];
78
+
79
+ /**
80
+ * 创建WMTS图层
81
+ * @param serverUrl
82
+ */
84
83
  declare const createWmtsLayer: (serverUrl: string) => (config: WmtsSourceOptions) => Promise<TileLayer>;
85
84
 
86
85
  /**
@@ -163,4 +162,4 @@ declare const addMassMarksLayer: (getImgUrlFn: GetImgUrlFn) => (dataList: never[
163
162
  */
164
163
  declare const updateMarksLayersByStatus: (checkedStatusList?: string[]) => void;
165
164
 
166
- export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type MassData, type MassMarkersStyleOptions, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
165
+ export { type CustomMap, type GetImgUrl, type GetImgUrlFn, type IconConfig, type MassData, type VectorConfig, type WmtsSourceOptions, activeMarkerByUid, addMassMarksLayer, buildMassMarksStyles, createAnimationMarker, createBaseLayer, createBusinessLayer, createMapInstance, createMapWorldLayer, createMassMarksLayer, createSelectByLayer, createVectorFaceLayer, createVectorLineLayer, createWmtsLayer, disposeMap, emitter, getLayersDataList, getMapInstance, instance, removeAllLayers, resetActiveMarker, resetActiveVector, resetMap, resetZoomAndCenter, updateMarksLayersByStatus };
package/dist/index.js CHANGED
@@ -43,62 +43,6 @@ import mitt from "mitt";
43
43
  var emitter = mitt();
44
44
  var emitter_default = emitter;
45
45
 
46
- // src/ogc-utils.ts
47
- import { WMTS } from "ol/source";
48
- import TileLayer from "ol/layer/Tile";
49
- import { WMTSCapabilities } from "ol/format";
50
- import { optionsFromCapabilities } from "ol/source/WMTS";
51
- var parser = new WMTSCapabilities();
52
- var capabilitiesMap = /* @__PURE__ */ new Map();
53
- var getCapabilities = (url) => {
54
- return new Promise((resolve) => {
55
- const capabilities = capabilitiesMap.get(url);
56
- if (capabilities) {
57
- resolve(capabilities);
58
- } else {
59
- fetch(url).then((data) => data.text()).then((text) => {
60
- const capabilities2 = parser.read(text);
61
- capabilitiesMap.set(url, capabilities2);
62
- resolve(capabilities2);
63
- });
64
- }
65
- });
66
- };
67
- var createWmtsLayer = (serverUrl) => (config) => __async(void 0, null, function* () {
68
- const { style, format, version, layerName, matrixSet } = config;
69
- const [workspace, datastore] = layerName.split(":");
70
- const capabilitiesUrl = `${serverUrl}/${workspace}/${datastore}/gwc/service/wmts?request=GetCapabilities`;
71
- return new Promise((resolve, reject) => {
72
- getCapabilities(capabilitiesUrl).then((data) => {
73
- const options = optionsFromCapabilities(data, {
74
- Style: style || "",
75
- layer: datastore,
76
- version: version || "1.1.0",
77
- format: format || "image/png",
78
- matrixSet: matrixSet || "EPSG:4326"
79
- });
80
- console.log(options);
81
- if (options) {
82
- resolve(
83
- new TileLayer({
84
- zIndex: 3,
85
- className: layerName,
86
- source: new WMTS(options)
87
- })
88
- );
89
- } else {
90
- reject(new Error("Unable to create TileLayer"));
91
- }
92
- });
93
- });
94
- });
95
-
96
- // src/base-layer.ts
97
- import { XYZ } from "ol/source";
98
- import { WMTS as WMTS2 } from "ol/source";
99
- import { TileGrid } from "ol/tilegrid";
100
- import { Tile } from "ol/layer";
101
-
102
46
  // src/create-map.ts
103
47
  import Map2 from "ol/Map";
104
48
  import View from "ol/View";
@@ -107,24 +51,6 @@ import { defaults } from "ol/control";
107
51
  // src/layer-utils.ts
108
52
  import gcoord from "gcoord";
109
53
  import { Point } from "ol/geom";
110
-
111
- // src/helper.ts
112
- var hexToRgba = (hex, alpha) => {
113
- if (hex.startsWith("#")) {
114
- let tempHex = hex.replace("#", "");
115
- if (tempHex.length === 3) {
116
- tempHex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
117
- }
118
- const r = parseInt(tempHex.substring(0, 2), 16);
119
- const g = parseInt(tempHex.substring(2, 4), 16);
120
- const b = parseInt(tempHex.substring(4, 6), 16);
121
- return `rgba(${r}, ${g}, ${b}, ${alpha})`;
122
- } else {
123
- return hex;
124
- }
125
- };
126
-
127
- // src/layer-utils.ts
128
54
  import { GeoJSON } from "ol/format";
129
55
  import { Feature, Overlay } from "ol";
130
56
  import { Select } from "ol/interaction";
@@ -187,7 +113,15 @@ var assembleGeoJson = (dataList, config) => {
187
113
  return !needTransform ? { type: "FeatureCollection", features: tempList } : gcoord.transform({ type: "FeatureCollection", features: tempList }, gcoord.GCJ02, gcoord.WGS84);
188
114
  };
189
115
  var createVectorStyle = (data, config) => {
190
- const { isLine, colorMap, fillColor, colorKey, strokeColor, strokeWeight, fillOpacity } = config || {};
116
+ const {
117
+ isLine,
118
+ colorMap,
119
+ fillColor,
120
+ colorKey,
121
+ strokeColor,
122
+ strokeWeight,
123
+ fillOpacity
124
+ } = config || {};
191
125
  const style = new Style({
192
126
  stroke: new Stroke({
193
127
  width: strokeWeight,
@@ -197,14 +131,17 @@ var createVectorStyle = (data, config) => {
197
131
  if (!isLine) {
198
132
  style.setFill(
199
133
  new Fill({
200
- color: hexToRgba((colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || fillColor : fillColor) || "", fillOpacity || 1)
134
+ color: hexToRgba(
135
+ (colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || fillColor : fillColor) || "",
136
+ fillOpacity || 1
137
+ )
201
138
  })
202
139
  );
203
140
  }
204
141
  return style;
205
142
  };
206
143
  var createBusinessLayer = (dataList, config) => {
207
- const { layerName } = config || {};
144
+ const { layerName } = config;
208
145
  const geoJson = assembleGeoJson(dataList, config);
209
146
  const vectorLayer = new VectorLayer({
210
147
  zIndex: 5,
@@ -216,7 +153,10 @@ var createBusinessLayer = (dataList, config) => {
216
153
  })
217
154
  })
218
155
  });
219
- vectorLayer.set("_layerName", layerName);
156
+ vectorLayer.setProperties({
157
+ _layerName: layerName,
158
+ _dataList: [...dataList]
159
+ });
220
160
  return vectorLayer;
221
161
  };
222
162
  var createVectorFaceLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign(config, { isLine: false }));
@@ -234,7 +174,7 @@ var removeAllLayers = (isClearAll = true) => {
234
174
  };
235
175
  var resetActiveMarker = () => {
236
176
  removeOverlays();
237
- const massMarksLayers = instance.getLayers().getArray().filter((layer) => layer.get("_isMassMarksLayer"));
177
+ const massMarksLayers = instance.getAllLayers().filter((layer) => layer.get("_isMassMarksLayer"));
238
178
  massMarksLayers.forEach((layer) => {
239
179
  const selectInteraction = layer.get("_selectInteraction");
240
180
  if (selectInteraction) {
@@ -257,11 +197,15 @@ var activeMarkerByUid = (uid) => {
257
197
  );
258
198
  if (targetLayer) {
259
199
  const tempList = ((_a = targetLayer.getSource()) == null ? void 0 : _a.getFeatures()) || [];
260
- const targetFeature = tempList.find((feature) => feature.get("_uuid") === uid);
200
+ const targetFeature = tempList.find(
201
+ (feature) => feature.get("_uuid") === uid
202
+ );
261
203
  const selectInteraction = targetLayer.get("_selectInteraction");
262
204
  if (selectInteraction) {
263
205
  const collection = selectInteraction.getFeatures().getArray();
264
- const hasFeature = collection.find((feature) => feature.get("_uuid") === uid);
206
+ const hasFeature = collection.find(
207
+ (feature) => feature.get("_uuid") === uid
208
+ );
265
209
  if (!hasFeature) {
266
210
  selectInteraction.dispatchEvent({
267
211
  type: "select",
@@ -356,7 +300,11 @@ var createSelectByLayer = (vectorLayer) => {
356
300
  }, 1e3);
357
301
  }
358
302
  const view = instance.getView();
359
- view.animate({ zoom: 12, center: [+data.lnglat[0], +data.lnglat[1]], duration: 1e3 });
303
+ view.animate({
304
+ zoom: 12,
305
+ center: [+data.lnglat[0], +data.lnglat[1]],
306
+ duration: 1e3
307
+ });
360
308
  }
361
309
  if (deselected.length) {
362
310
  const feature = deselected[0];
@@ -420,22 +368,28 @@ var addMassMarksLayer = (getImgUrlFn) => {
420
368
  createSelectByLayer(massMarksLayer);
421
369
  }
422
370
  if (hasLine) {
423
- const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
424
- key: "line",
425
- isLine: true,
426
- strokeColor: "rgba(29, 235, 255, 0.8)"
427
- });
371
+ const vectorLayer = createBusinessLayer(
372
+ dataList,
373
+ vectorConfig || {
374
+ key: "line",
375
+ isLine: true,
376
+ strokeColor: "rgba(29, 235, 255, 0.8)"
377
+ }
378
+ );
428
379
  instance.addLayer(vectorLayer);
429
380
  }
430
381
  if (hasFace) {
431
- const vectorLayer = createBusinessLayer(dataList, vectorConfig ? vectorConfig : {
432
- isLine: false,
433
- key: "faceList",
434
- fillColor: "#4247DF",
435
- strokeWeight: 1,
436
- strokeStyle: "dashed",
437
- strokeColor: "#4247DF"
438
- });
382
+ const vectorLayer = createBusinessLayer(
383
+ dataList,
384
+ vectorConfig || {
385
+ isLine: false,
386
+ key: "faceList",
387
+ fillColor: "#4247DF",
388
+ strokeWeight: 1,
389
+ strokeStyle: "dashed",
390
+ strokeColor: "#4247DF"
391
+ }
392
+ );
439
393
  instance.addLayer(vectorLayer);
440
394
  }
441
395
  massMarksLayer.setProperties({
@@ -454,73 +408,12 @@ var updateMarksLayersByStatus = (checkedStatusList = []) => {
454
408
 
455
409
  // src/create-map.ts
456
410
  import { defaults as interactionDefaults } from "ol/interaction";
457
- var instance;
458
- var mapCenter = [119.71512016971076, 30.122490541963536];
459
- var createMapInstance = (config = {}) => {
460
- const innerConfig = Object.assign(
461
- {
462
- zoom: 9.4,
463
- maxZoom: 18,
464
- minZoom: 9.4,
465
- center: mapCenter,
466
- baseLayer: "vec-layer",
467
- projection: "EPSG:4326",
468
- layers: [createBaseLayer()],
469
- smoothExtentConstraint: false,
470
- tk: "c77eddc667c5bed016fded560baf93e7"
471
- },
472
- config || {}
473
- );
474
- if (instance) {
475
- return instance;
476
- }
477
- instance = new Map2({
478
- view: new View(innerConfig),
479
- controls: defaults({
480
- zoom: false,
481
- rotate: false,
482
- attribution: false
483
- }),
484
- interactions: interactionDefaults({
485
- doubleClickZoom: false
486
- }),
487
- layers: innerConfig.layers || [createBaseLayer()]
488
- });
489
- mapCenter = innerConfig.center || mapCenter;
490
- instance.activeBaseLayer = innerConfig.baseLayer;
491
- instance.getLayerByName = getLayerByName;
492
- instance.removeLayerByName = removeLayerByName;
493
- instance.changeLayersByNames = changeLayersByNames;
494
- instance.on("pointermove", (evt) => {
495
- instance.getTargetElement().style.cursor = instance.hasFeatureAtPixel(
496
- evt.pixel
497
- ) ? "pointer" : "";
498
- });
499
- return instance;
500
- };
501
- var disposeMap = () => {
502
- const layers = instance.getAllLayers();
503
- layers.forEach((layer) => {
504
- instance.removeLayer(layer);
505
- });
506
- instance.setTarget("");
507
- instance = void 0;
508
- };
509
- var getMapInstance = () => instance;
510
- var resetZoomAndCenter = (center = mapCenter) => {
511
- const view = instance.getView();
512
- view.animate({
513
- zoom: 9.4,
514
- center,
515
- duration: 1e3
516
- });
517
- };
518
- var resetMap = (config = { center: mapCenter, isClearAll: true }) => {
519
- removeAllLayers(config.isClearAll);
520
- resetZoomAndCenter(config.center || mapCenter);
521
- };
522
411
 
523
412
  // src/base-layer.ts
413
+ import { XYZ } from "ol/source";
414
+ import { WMTS } from "ol/source";
415
+ import { TileGrid } from "ol/tilegrid";
416
+ import { Tile } from "ol/layer";
524
417
  import WMTSTileGrid from "ol/tilegrid/WMTS";
525
418
  var createBaseLayer = (isDark = true) => {
526
419
  return new Tile({
@@ -546,7 +439,12 @@ var createBaseLayer = (isDark = true) => {
546
439
  134089306640625e-20
547
440
  ],
548
441
  origin: [118.125614083886, 31.2857011022836],
549
- extent: [118.340502132662, 29.2073269598186, 120.724787992425, 30.5617943760008]
442
+ extent: [
443
+ 118.340502132662,
444
+ 29.2073269598186,
445
+ 120.724787992425,
446
+ 30.5617943760008
447
+ ]
550
448
  }),
551
449
  projection: "EPSG:4326",
552
450
  urls: isDark ? [
@@ -573,7 +471,7 @@ var createMapWorldLayer = (layerName, tk = "c77eddc667c5bed016fded560baf93e7") =
573
471
  return new Tile({
574
472
  cacheSize: 20240,
575
473
  zIndex: -1,
576
- source: new WMTS2({
474
+ source: new WMTS({
577
475
  crossOrigin: "anonymous",
578
476
  projection: "EPSG:4326",
579
477
  wrapX: true,
@@ -648,6 +546,142 @@ var changeLayersByNames = (activeNames, allLayerNames) => {
648
546
  layer.setVisible(activeNames == null ? void 0 : activeNames.includes(layer.getClassName()));
649
547
  });
650
548
  };
549
+
550
+ // src/create-map.ts
551
+ var instance;
552
+ var mapCenter = [119.71512016971076, 30.122490541963536];
553
+ var createMapInstance = (config = {}) => {
554
+ const innerConfig = Object.assign(
555
+ {
556
+ zoom: 9.4,
557
+ maxZoom: 18,
558
+ minZoom: 9.4,
559
+ center: mapCenter,
560
+ baseLayer: "vec-layer",
561
+ projection: "EPSG:4326",
562
+ layers: [createBaseLayer()],
563
+ smoothExtentConstraint: false,
564
+ tk: "c77eddc667c5bed016fded560baf93e7"
565
+ },
566
+ config || {}
567
+ );
568
+ if (instance) {
569
+ return instance;
570
+ }
571
+ instance = new Map2({
572
+ view: new View(innerConfig),
573
+ controls: defaults({
574
+ zoom: false,
575
+ rotate: false,
576
+ attribution: false
577
+ }),
578
+ interactions: interactionDefaults({
579
+ doubleClickZoom: false
580
+ }),
581
+ layers: innerConfig.layers || [createBaseLayer()]
582
+ });
583
+ mapCenter = innerConfig.center || mapCenter;
584
+ instance.activeBaseLayer = innerConfig.baseLayer;
585
+ instance.getLayerByName = getLayerByName;
586
+ instance.removeLayerByName = removeLayerByName;
587
+ instance.changeLayersByNames = changeLayersByNames;
588
+ instance.on("pointermove", (evt) => {
589
+ instance.getTargetElement().style.cursor = instance.hasFeatureAtPixel(
590
+ evt.pixel
591
+ ) ? "pointer" : "";
592
+ });
593
+ return instance;
594
+ };
595
+ var disposeMap = () => {
596
+ const layers = instance.getAllLayers();
597
+ layers.forEach((layer) => {
598
+ instance.removeLayer(layer);
599
+ });
600
+ instance.setTarget("");
601
+ instance = void 0;
602
+ };
603
+ var getMapInstance = () => instance;
604
+ var resetZoomAndCenter = (center = mapCenter) => {
605
+ const view = instance.getView();
606
+ view.animate({
607
+ zoom: 9.4,
608
+ center,
609
+ duration: 1e3
610
+ });
611
+ };
612
+ var resetMap = (config = { center: mapCenter, isClearAll: true }) => {
613
+ removeAllLayers(config.isClearAll);
614
+ resetZoomAndCenter(config.center || mapCenter);
615
+ };
616
+
617
+ // src/helper.ts
618
+ var hexToRgba = (hex, alpha) => {
619
+ if (hex.startsWith("#")) {
620
+ let tempHex = hex.replace("#", "");
621
+ if (tempHex.length === 3) {
622
+ tempHex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
623
+ }
624
+ const r = parseInt(tempHex.substring(0, 2), 16);
625
+ const g = parseInt(tempHex.substring(2, 4), 16);
626
+ const b = parseInt(tempHex.substring(4, 6), 16);
627
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
628
+ } else {
629
+ return hex;
630
+ }
631
+ };
632
+ var getLayersDataList = () => {
633
+ var _a;
634
+ return ((_a = instance) == null ? void 0 : _a.getAllLayers().map((layer) => layer.get("_dataList") || []).flat(2)) || [];
635
+ };
636
+
637
+ // src/ogc-utils.ts
638
+ import { WMTS as WMTS2 } from "ol/source";
639
+ import TileLayer from "ol/layer/Tile";
640
+ import { WMTSCapabilities } from "ol/format";
641
+ import { optionsFromCapabilities } from "ol/source/WMTS";
642
+ var parser = new WMTSCapabilities();
643
+ var capabilitiesMap = /* @__PURE__ */ new Map();
644
+ var getCapabilities = (url) => {
645
+ return new Promise((resolve) => {
646
+ const capabilities = capabilitiesMap.get(url);
647
+ if (capabilities) {
648
+ resolve(capabilities);
649
+ } else {
650
+ fetch(url).then((data) => data.text()).then((text) => {
651
+ const capabilities2 = parser.read(text);
652
+ capabilitiesMap.set(url, capabilities2);
653
+ resolve(capabilities2);
654
+ });
655
+ }
656
+ });
657
+ };
658
+ var createWmtsLayer = (serverUrl) => (config) => __async(void 0, null, function* () {
659
+ const { style, format, version, layerName, matrixSet } = config;
660
+ const [workspace, datastore] = layerName.split(":");
661
+ const capabilitiesUrl = `${serverUrl}/${workspace}/${datastore}/gwc/service/wmts?request=GetCapabilities`;
662
+ return new Promise((resolve, reject) => {
663
+ getCapabilities(capabilitiesUrl).then((data) => {
664
+ const options = optionsFromCapabilities(data, {
665
+ Style: style || "",
666
+ layer: datastore,
667
+ version: version || "1.1.0",
668
+ format: format || "image/png",
669
+ matrixSet: matrixSet || "EPSG:4326"
670
+ });
671
+ if (options) {
672
+ resolve(
673
+ new TileLayer({
674
+ zIndex: 3,
675
+ className: layerName,
676
+ source: new WMTS2(options)
677
+ })
678
+ );
679
+ } else {
680
+ reject(new Error("Unable to create TileLayer"));
681
+ }
682
+ });
683
+ });
684
+ });
651
685
  export {
652
686
  activeMarkerByUid,
653
687
  addMassMarksLayer,
@@ -664,6 +698,7 @@ export {
664
698
  createWmtsLayer,
665
699
  disposeMap,
666
700
  emitter_default as emitter,
701
+ getLayersDataList,
667
702
  getMapInstance,
668
703
  instance,
669
704
  removeAllLayers,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "map-ol-utils",
3
- "version": "0.0.29",
3
+ "version": "0.0.31",
4
4
  "type": "module",
5
5
  "description": "Openlayers utils library",
6
6
  "files": [