map-ol-utils 0.1.31 → 1.0.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.
package/dist/index.cjs CHANGED
@@ -1,1170 +1 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __defProps = Object.defineProperties;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
- var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __getProtoOf = Object.getPrototypeOf;
10
- var __hasOwnProp = Object.prototype.hasOwnProperty;
11
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
- var __spreadValues = (a, b) => {
14
- for (var prop in b || (b = {}))
15
- if (__hasOwnProp.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- if (__getOwnPropSymbols)
18
- for (var prop of __getOwnPropSymbols(b)) {
19
- if (__propIsEnum.call(b, prop))
20
- __defNormalProp(a, prop, b[prop]);
21
- }
22
- return a;
23
- };
24
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
- var __export = (target, all) => {
26
- for (var name in all)
27
- __defProp(target, name, { get: all[name], enumerable: true });
28
- };
29
- var __copyProps = (to, from, except, desc) => {
30
- if (from && typeof from === "object" || typeof from === "function") {
31
- for (let key of __getOwnPropNames(from))
32
- if (!__hasOwnProp.call(to, key) && key !== except)
33
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
34
- }
35
- return to;
36
- };
37
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
38
- // If the importer is in node compatibility mode or this is not an ESM
39
- // file that has been converted to a CommonJS file using a Babel-
40
- // compatible transform (i.e. "__esModule" has not been set), then set
41
- // "default" to the CommonJS "module.exports" for node compatibility.
42
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
43
- mod
44
- ));
45
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
46
- var __async = (__this, __arguments, generator) => {
47
- return new Promise((resolve, reject) => {
48
- var fulfilled = (value) => {
49
- try {
50
- step(generator.next(value));
51
- } catch (e) {
52
- reject(e);
53
- }
54
- };
55
- var rejected = (value) => {
56
- try {
57
- step(generator.throw(value));
58
- } catch (e) {
59
- reject(e);
60
- }
61
- };
62
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
63
- step((generator = generator.apply(__this, __arguments)).next());
64
- });
65
- };
66
-
67
- // src/index.ts
68
- var index_exports = {};
69
- __export(index_exports, {
70
- GeometryType: () => GeometryType,
71
- activeFeatureByUid: () => activeFeatureByUid,
72
- addFeaturesByLayer: () => addFeaturesByLayer,
73
- addMassMarksLayer: () => addMassMarksLayer,
74
- appendFeaturesByLayer: () => appendFeaturesByLayer,
75
- buildMassMarksStyles: () => buildMassMarksStyles,
76
- createAnimationMarker: () => createAnimationMarker,
77
- createBaseLayer: () => createBaseLayer,
78
- createBusinessLayer: () => createBusinessLayer,
79
- createClusterLayer: () => createClusterLayer,
80
- createMap: () => createMap,
81
- createMapInstance: () => createMapInstance,
82
- createMapWorldLayer: () => createMapWorldLayer,
83
- createMassMarksLayer: () => createMassMarksLayer,
84
- createOverlay: () => createOverlay,
85
- createSelectByLayer: () => createSelectByLayer,
86
- createVectorFaceLayer: () => createVectorFaceLayer,
87
- createVectorLineLayer: () => createVectorLineLayer,
88
- createWmtsLayer: () => createWmtsLayer,
89
- createZheJiangLayer: () => createZheJiangLayer,
90
- disposeMap: () => disposeMap,
91
- emitter: () => emitter_default,
92
- getLayerByName: () => getLayerByName,
93
- getLayersDataList: () => getLayersDataList,
94
- getMapInstance: () => getMapInstance,
95
- instance: () => instance,
96
- removeAllLayers: () => removeAllLayers,
97
- removeLayerByName: () => removeLayerByName,
98
- removeOverlays: () => removeOverlays,
99
- resetActiveFeature: () => resetActiveFeature,
100
- resetActiveVector: () => resetActiveVector,
101
- resetMap: () => resetMap,
102
- resetZoomAndCenter: () => resetZoomAndCenter,
103
- setFitViewByCoords: () => setFitViewByCoords,
104
- setFitViewByGeom: () => setFitViewByGeom,
105
- setFitViewByLayer: () => setFitViewByLayer,
106
- updateMarksLayersByStatus: () => updateMarksLayersByStatus
107
- });
108
- module.exports = __toCommonJS(index_exports);
109
-
110
- // src/types.ts
111
- var GeometryType = /* @__PURE__ */ ((GeometryType2) => {
112
- GeometryType2["LineString"] = "LineString";
113
- GeometryType2["MultiLineString"] = "MultiLineString";
114
- GeometryType2["Polygon"] = "Polygon";
115
- GeometryType2["MultiPolygon"] = "MultiPolygon";
116
- GeometryType2["Invalid"] = "Invalid";
117
- return GeometryType2;
118
- })(GeometryType || {});
119
-
120
- // src/emitter.ts
121
- var import_mitt = __toESM(require("mitt"), 1);
122
- var emitter = (0, import_mitt.default)();
123
- var emitter_default = emitter;
124
-
125
- // src/create-map.ts
126
- var import_Map = __toESM(require("ol/Map"), 1);
127
- var import_View = __toESM(require("ol/View"), 1);
128
- var import_control = require("ol/control");
129
-
130
- // src/overlay.ts
131
- var import_gcoord = __toESM(require("gcoord"), 1);
132
- var import_ol = require("ol");
133
- var removeOverlays = (key = "") => {
134
- if (instance) {
135
- const overlays = instance.getOverlays().getArray().filter((overlay) => overlay.get(key || "position"));
136
- overlays.forEach((overlay) => instance.removeOverlay(overlay));
137
- }
138
- };
139
- var removeAnimationMarker = () => removeOverlays("_isAnimationMarker");
140
- var createAnimationMarker = (imgUrl, data) => {
141
- removeAnimationMarker();
142
- const { width, height, lnglat, crsForm } = data;
143
- const element = document.createElement("div");
144
- element.innerHTML = `<img src=${imgUrl} height=${height} width=${width} alt="" />`;
145
- const overlay = new import_ol.Overlay({
146
- element,
147
- stopEvent: false,
148
- positioning: "bottom-center",
149
- position: import_gcoord.default.transform(
150
- [+lnglat[0], +lnglat[1]],
151
- crsForm || import_gcoord.default.WGS84,
152
- import_gcoord.default.WGS84
153
- )
154
- });
155
- overlay.set("_isAnimationMarker", true);
156
- instance.addOverlay(overlay);
157
- };
158
- var createOverlay = (config = { id: "popup-container", positioning: "top-center" }) => {
159
- return new import_ol.Overlay(
160
- Object.assign(
161
- {
162
- element: document.getElementById(config.id) || void 0
163
- },
164
- config
165
- )
166
- );
167
- };
168
-
169
- // src/layer-manager.ts
170
- var resetActiveVector = () => {
171
- removeOverlays();
172
- const layers = instance.getAllLayers();
173
- layers.forEach((layer) => {
174
- const interaction = layer.get("_selectInteraction");
175
- interaction == null ? void 0 : interaction.getFeatures().clear();
176
- });
177
- };
178
- var removeAllLayers = () => {
179
- removeOverlays();
180
- if (instance) {
181
- instance.getAllLayers().forEach((layer) => {
182
- if (!layer.get("_isBaseLayer")) {
183
- const source = layer.getSource();
184
- if (source && source.dispose) {
185
- source.dispose();
186
- }
187
- instance.removeLayer(layer);
188
- layer.dispose();
189
- }
190
- });
191
- }
192
- };
193
- var resetActiveFeature = () => {
194
- removeOverlays();
195
- const targetLayers = instance.getAllLayers().filter((layer) => layer.get("_isVectorLayer"));
196
- targetLayers.forEach((layer) => {
197
- const selectInteraction = layer.get("_selectInteraction");
198
- if (selectInteraction) {
199
- selectInteraction.dispatchEvent({
200
- type: "select",
201
- selected: [],
202
- mapBrowserEvent: void 0,
203
- deselected: selectInteraction.getFeatures().getArray()
204
- });
205
- selectInteraction.getFeatures().clear();
206
- }
207
- });
208
- };
209
- var activeFeatureByUid = (uid) => {
210
- var _a;
211
- const targetLayers = instance.getAllLayers().filter((layer) => layer.get("_isVectorLayer"));
212
- if (targetLayers.length) {
213
- const targetLayer = targetLayers.find(
214
- (layer) => layer.get("_uuidSet").has(uid) && layer.get("_selectInteraction")
215
- );
216
- if (targetLayer) {
217
- const tempList = ((_a = targetLayer.getSource()) == null ? void 0 : _a.getFeatures()) || [];
218
- const targetFeature = tempList.find(
219
- (feature) => feature.get("_uuid") === uid
220
- );
221
- const selectInteraction = targetLayer.get("_selectInteraction");
222
- if (selectInteraction) {
223
- const collection = selectInteraction.getFeatures().getArray();
224
- const hasFeature = collection.find(
225
- (feature) => feature.get("_uuid") === uid
226
- );
227
- if (!hasFeature) {
228
- selectInteraction.dispatchEvent({
229
- type: "select",
230
- deselected: collection,
231
- selected: [targetFeature],
232
- mapBrowserEvent: void 0
233
- });
234
- selectInteraction.getFeatures().push(targetFeature);
235
- }
236
- }
237
- }
238
- }
239
- };
240
-
241
- // src/create-map.ts
242
- var import_interaction = require("ol/interaction");
243
-
244
- // src/base-layer.ts
245
- var import_source = require("ol/source");
246
- var import_tilegrid = require("ol/tilegrid");
247
- var import_layer = require("ol/layer");
248
- var import_WMTS = __toESM(require("ol/tilegrid/WMTS"), 1);
249
-
250
- // src/constants.ts
251
- var DEFAULT_TIANDITU_TK = "c77eddc667c5bed016fded560baf93e7";
252
- var DEFAULT_ZHEJIANG_TOKEN = "3b0cdd02-c366-4363-b6de-081a9f12b364";
253
-
254
- // src/base-layer.ts
255
- var createBaseLayer = (layerName = "hzsyvector_dark") => {
256
- const config = {
257
- zIndex: -5,
258
- preload: 1,
259
- minZoom: 8,
260
- maxZoom: 21,
261
- source: new import_source.XYZ({
262
- tileGrid: new import_tilegrid.TileGrid({
263
- tileSize: 256,
264
- resolutions: [
265
- 0.00549933137253187,
266
- 0.00274966568626595,
267
- 0.00137483284313297,
268
- 687416421566485e-18,
269
- 343708210783242e-18,
270
- 171854105391621e-18,
271
- 859270526958104e-19,
272
- 429635263479052e-19,
273
- 214817631739526e-19,
274
- 107408815869763e-19,
275
- 537044079348816e-20,
276
- 268522039674407e-20,
277
- 134261019837204e-20
278
- ],
279
- origin: [118.122911693886, 31.2869311022836],
280
- extent: [
281
- 116.43263049006,
282
- 28.6201742126026,
283
- 123.705594256347,
284
- 31.9765041681924
285
- ]
286
- }),
287
- projection: "EPSG:4326",
288
- urls: [
289
- `https://ywtg.citybrain.hangzhou.gov.cn/${layerName}/{z}/{y}/{x}`,
290
- `https://ywtg.citybrain.hangzhou.gov.cn:9456/${layerName}/{z}/{y}/{x}`,
291
- `https://ywtg.citybrain.hangzhou.gov.cn:9457/${layerName}/{z}/{y}/{x}`,
292
- `https://ywtg.citybrain.hangzhou.gov.cn:9458/${layerName}/{z}/{y}/{x}`,
293
- `https://ywtg.citybrain.hangzhou.gov.cn:9459/${layerName}/{z}/{y}/{x}`
294
- ]
295
- }),
296
- properties: {
297
- _isBaseLayer: true,
298
- _layerName: layerName
299
- }
300
- };
301
- return new import_layer.Tile(config);
302
- };
303
- var createMapWorldLayer = (layerName, tk = DEFAULT_TIANDITU_TK) => {
304
- const [name, matrixSet] = layerName.split("_");
305
- const config = {
306
- preload: 1,
307
- zIndex: -10,
308
- cacheSize: 20240,
309
- properties: {
310
- _isBaseLayer: true,
311
- _layerName: layerName
312
- },
313
- source: new import_source.WMTS({
314
- crossOrigin: "anonymous",
315
- projection: "EPSG:4326",
316
- wrapX: true,
317
- layer: name,
318
- style: "default",
319
- version: "1.0.0",
320
- format: "image/png",
321
- matrixSet,
322
- tileGrid: new import_WMTS.default({
323
- tileSize: 256,
324
- origin: [-180, 90],
325
- matrixIds: [
326
- "1",
327
- "2",
328
- "3",
329
- "4",
330
- "5",
331
- "6",
332
- "7",
333
- "8",
334
- "9",
335
- "10",
336
- "11",
337
- "12",
338
- "13",
339
- "14",
340
- "15",
341
- "16",
342
- "17",
343
- "18",
344
- "19"
345
- ],
346
- resolutions: [
347
- 0.703125,
348
- 0.3515625,
349
- 0.17578125,
350
- 0.087890625,
351
- 0.0439453125,
352
- 0.02197265625,
353
- 0.010986328125,
354
- 0.0054931640625,
355
- 0.00274658203125,
356
- 0.001373291015625,
357
- 6866455078125e-16,
358
- 34332275390625e-17,
359
- 171661376953125e-18,
360
- 858306884765625e-19,
361
- 4291534423828125e-20,
362
- 21457672119140625e-21,
363
- 10728836059570312e-21,
364
- 5364418029785156e-21,
365
- 2682209014892578e-21
366
- ]
367
- }),
368
- url: `https://t{0-7}.tianditu.gov.cn/${layerName}/wmts?tk=${tk}`
369
- })
370
- };
371
- return new import_layer.Tile(config);
372
- };
373
- var createZheJiangLayer = (layerName = "emap", tk = DEFAULT_ZHEJIANG_TOKEN) => {
374
- return new import_layer.Tile({
375
- preload: 1,
376
- minZoom: 4,
377
- maxZoom: 20,
378
- zIndex: -10,
379
- cacheSize: 20240,
380
- source: new import_source.XYZ({
381
- wrapX: true,
382
- projection: "EPSG:4326",
383
- crossOrigin: "anonymous",
384
- url: `https://ditu{0-6}.zjzwfw.gov.cn/services/wmts/${layerName}/default/oss/getTile/{z}/{y}/{x}?token=${tk}`
385
- })
386
- });
387
- };
388
- var getLayerByName = (name) => instance.getAllLayers().find((item) => (item.get("_layerName") || item.getClassName()) === name);
389
- var removeLayerByName = (name) => {
390
- const layer = getLayerByName(name);
391
- if (layer) {
392
- const source = layer.getSource();
393
- if (source && source.dispose) {
394
- source.dispose();
395
- }
396
- instance.removeLayer(layer);
397
- layer.dispose();
398
- }
399
- };
400
- var changeLayersByNames = (activeNames, allLayerNames) => {
401
- const changeLayers = instance.getAllLayers().filter((item) => allLayerNames.includes(item.getClassName()));
402
- changeLayers.forEach((layer) => {
403
- layer.setVisible(activeNames == null ? void 0 : activeNames.includes(layer.getClassName()));
404
- });
405
- };
406
-
407
- // src/create-map.ts
408
- var instance;
409
- var mapCenter = [119.71512016971076, 30.122490541963536];
410
- var createMapInstance = (config = {}) => {
411
- if (instance) {
412
- return instance;
413
- }
414
- instance = createMap(config);
415
- return instance;
416
- };
417
- var createMap = (config = {}) => {
418
- const innerConfig = Object.assign(
419
- {
420
- zoom: 9.4,
421
- maxZoom: 18,
422
- minZoom: 9.4,
423
- center: mapCenter,
424
- baseLayer: "vec-layer",
425
- projection: "EPSG:4326",
426
- layers: [createBaseLayer()],
427
- constrainResolution: false,
428
- smoothExtentConstraint: false,
429
- tk: DEFAULT_TIANDITU_TK
430
- },
431
- config || {}
432
- );
433
- const map = new import_Map.default({
434
- view: new import_View.default(innerConfig),
435
- controls: (0, import_control.defaults)({
436
- zoom: false,
437
- rotate: false,
438
- attribution: false
439
- }),
440
- interactions: (0, import_interaction.defaults)({
441
- pinchRotate: false,
442
- doubleClickZoom: false,
443
- altShiftDragRotate: false
444
- }),
445
- layers: innerConfig.layers || [createBaseLayer()]
446
- });
447
- mapCenter = innerConfig.center || mapCenter;
448
- map.activeBaseLayer = innerConfig.baseLayer;
449
- map.getLayerByName = getLayerByName;
450
- map.removeLayerByName = removeLayerByName;
451
- map.changeLayersByNames = changeLayersByNames;
452
- map.on("pointermove", (evt) => {
453
- map.getTargetElement().style.cursor = map.hasFeatureAtPixel(evt.pixel) ? "pointer" : "";
454
- });
455
- return map;
456
- };
457
- var disposeMap = () => {
458
- instance.getOverlays().forEach((overlay) => {
459
- instance.removeOverlay(overlay);
460
- });
461
- instance.getInteractions().clear();
462
- const layers = instance.getAllLayers();
463
- layers.forEach((layer) => {
464
- const source = layer.getSource();
465
- if (source && source.dispose) {
466
- source.dispose();
467
- }
468
- instance.removeLayer(layer);
469
- layer.dispose();
470
- });
471
- instance.setTarget("");
472
- instance.dispose();
473
- instance = void 0;
474
- };
475
- var getMapInstance = () => instance;
476
- var resetZoomAndCenter = (center = mapCenter) => {
477
- if (instance) {
478
- const view = instance.getView();
479
- view.animate({
480
- zoom: 9.4,
481
- center,
482
- duration: 1e3
483
- });
484
- }
485
- };
486
- var resetMap = (config = { center: mapCenter, isClearAll: true }) => {
487
- removeAllLayers();
488
- resetZoomAndCenter(config.center || mapCenter);
489
- };
490
-
491
- // src/helper.ts
492
- var hexToRgba = (hex, alpha) => {
493
- if (hex.startsWith("#")) {
494
- let tempHex = hex.replace("#", "");
495
- if (tempHex.length === 3) {
496
- tempHex = tempHex[0] + tempHex[0] + tempHex[1] + tempHex[1] + tempHex[2] + tempHex[2];
497
- }
498
- const r = parseInt(tempHex.substring(0, 2), 16);
499
- const g = parseInt(tempHex.substring(2, 4), 16);
500
- const b = parseInt(tempHex.substring(4, 6), 16);
501
- return `rgba(${r}, ${g}, ${b}, ${alpha})`;
502
- } else {
503
- return hex;
504
- }
505
- };
506
- var getLayersDataList = () => {
507
- var _a;
508
- return ((_a = instance) == null ? void 0 : _a.getAllLayers().map((layer) => layer.get("_dataList") || []).flat(2)) || [];
509
- };
510
- var determineGeometryType = (coordinates) => {
511
- const getArrayDepth = (arr) => {
512
- if (!Array.isArray(arr) || arr.length === 0) return 0;
513
- return 1 + getArrayDepth(arr[0]);
514
- };
515
- const isClosedRing = (coords) => {
516
- if (!Array.isArray(coords) || coords.length < 3) return false;
517
- const first = coords[0];
518
- const last = coords[coords.length - 1];
519
- return first[0] === last[0] && first[1] === last[1];
520
- };
521
- const isValidCoordinate = (coord) => {
522
- return Array.isArray(coord) && coord.length >= 2 && typeof coord[0] === "number" && typeof coord[1] === "number";
523
- };
524
- const isValidLineString = (coords) => {
525
- return Array.isArray(coords) && coords.length >= 2 && coords.every(isValidCoordinate);
526
- };
527
- const isValidPolygon = (coords) => {
528
- if (!Array.isArray(coords)) return false;
529
- const rings = getArrayDepth(coords) === 2 ? [coords] : coords;
530
- return rings.every(
531
- (ring) => Array.isArray(ring) && ring.length >= 4 && isClosedRing(ring) && ring.every(isValidCoordinate)
532
- );
533
- };
534
- const depth = getArrayDepth(coordinates);
535
- try {
536
- if (depth < 2 || !coordinates || coordinates.length === 0) {
537
- return "Invalid" /* Invalid */;
538
- } else if (depth === 2 && isValidLineString(coordinates)) {
539
- return isClosedRing(coordinates) && coordinates.length >= 4 ? "Polygon" /* Polygon */ : "LineString" /* LineString */;
540
- } else if (depth === 3 && Array.isArray(coordinates) && coordinates.every(isValidLineString)) {
541
- if (isValidPolygon(coordinates)) {
542
- return "Polygon" /* Polygon */;
543
- } else if (coordinates.every((arr) => !isClosedRing(arr))) {
544
- return "MultiLineString" /* MultiLineString */;
545
- } else {
546
- return "Invalid" /* Invalid */;
547
- }
548
- } else if (depth === 4 && Array.isArray(coordinates) && coordinates.every((rings) => isValidPolygon(rings))) {
549
- return "MultiPolygon" /* MultiPolygon */;
550
- } else {
551
- return "Invalid" /* Invalid */;
552
- }
553
- } catch (error) {
554
- console.error("Error analyzing coordinates:", error);
555
- return "Invalid" /* Invalid */;
556
- }
557
- };
558
-
559
- // src/ogc-utils.ts
560
- var import_source2 = require("ol/source");
561
- var import_Tile = __toESM(require("ol/layer/Tile"), 1);
562
- var import_format = require("ol/format");
563
- var import_WMTS2 = require("ol/source/WMTS");
564
- var parser = new import_format.WMTSCapabilities();
565
- var capabilitiesMap = /* @__PURE__ */ new Map();
566
- var getCapabilities = (url) => {
567
- return new Promise((resolve) => {
568
- const capabilities = capabilitiesMap.get(url);
569
- if (capabilities) {
570
- resolve(capabilities);
571
- } else {
572
- fetch(url).then((data) => data.text()).then((text) => {
573
- const capabilities2 = parser.read(text);
574
- capabilitiesMap.set(url, capabilities2);
575
- resolve(capabilities2);
576
- });
577
- }
578
- });
579
- };
580
- var createWmtsLayer = (serverUrl) => (config) => __async(null, null, function* () {
581
- const { style, format, version, layerName, matrixSet } = config;
582
- const [workspace, datastore] = layerName.split(":");
583
- const capabilitiesUrl = `${serverUrl}/${workspace}/${datastore}/gwc/service/wmts?request=GetCapabilities`;
584
- return new Promise((resolve, reject) => {
585
- getCapabilities(capabilitiesUrl).then((data) => {
586
- const options = (0, import_WMTS2.optionsFromCapabilities)(data, {
587
- Style: style || "",
588
- layer: datastore,
589
- version: version || "1.1.0",
590
- format: format || "image/png",
591
- matrixSet: matrixSet || "EPSG:4326"
592
- });
593
- if (options) {
594
- resolve(
595
- new import_Tile.default({
596
- zIndex: 3,
597
- className: layerName,
598
- source: new import_source2.WMTS(options)
599
- })
600
- );
601
- } else {
602
- reject(new Error("Unable to create TileLayer"));
603
- }
604
- });
605
- });
606
- });
607
-
608
- // src/view-fit.ts
609
- var import_extent = require("ol/extent");
610
- var DEFAULT_FIT_OPTIONS = {
611
- padding: [50, 50, 50, 50],
612
- duration: 1e3
613
- };
614
- var setFitViewByCoords = (coords, mapInstance = instance, fitOptions) => {
615
- const view = mapInstance.getView();
616
- if (coords.length === 1) {
617
- view.animate(__spreadValues({
618
- zoom: 14,
619
- duration: 1e3,
620
- center: coords[0]
621
- }, fitOptions || {}));
622
- } else {
623
- const extent = (0, import_extent.boundingExtent)(coords);
624
- view.fit(extent, __spreadValues(__spreadValues({}, DEFAULT_FIT_OPTIONS), fitOptions || {}));
625
- }
626
- };
627
- var setFitViewByGeom = (geom, mapInstance = instance, fitOptions) => {
628
- mapInstance.getView().fit(geom, __spreadValues(__spreadValues({}, DEFAULT_FIT_OPTIONS), fitOptions || {}));
629
- };
630
- var setFitViewByLayer = (layer, mapInstance = instance, fitOptions) => {
631
- var _a;
632
- const extent = ((_a = layer.getSource()) == null ? void 0 : _a.getExtent()) || [];
633
- mapInstance.getView().fit(extent, __spreadValues(__spreadValues({}, DEFAULT_FIT_OPTIONS), fitOptions || {}));
634
- };
635
-
636
- // src/select.ts
637
- var import_extent2 = require("ol/extent");
638
- var import_interaction2 = require("ol/interaction");
639
- var import_condition = require("ol/events/condition");
640
- var selectEventHandle = (vectorLayer, feature) => {
641
- const data = feature.getProperties();
642
- const { activeStyle } = data;
643
- feature.setStyle(activeStyle);
644
- emitter_default.emit("selected-feature", data);
645
- vectorLayer.set("_hasActive", true);
646
- if (vectorLayer.get("_isDynamic")) {
647
- const activeImage = activeStyle.getImage();
648
- setTimeout(() => {
649
- emitter_default.emit(
650
- "dynamic-marker",
651
- Object.assign({}, data.rawData || {}, {
652
- lnglat: data.lnglat,
653
- style: data.style,
654
- crsForm: data.crsForm,
655
- width: activeImage.getWidth(),
656
- height: activeImage.getHeight()
657
- })
658
- );
659
- }, 1e3);
660
- }
661
- const isAutoFit = vectorLayer.get("_isAutoFit");
662
- if (isAutoFit) {
663
- const view = instance.getView();
664
- view.animate({
665
- duration: 1e3,
666
- zoom: view.getZoom(),
667
- center: (0, import_extent2.getCenter)(feature.getGeometry().getExtent())
668
- });
669
- }
670
- };
671
- var createSelectByLayer = (vectorLayer) => {
672
- const interaction = new import_interaction2.Select({
673
- style: null,
674
- multi: false,
675
- hitTolerance: 10,
676
- layers: [vectorLayer],
677
- condition: (evt) => {
678
- let hasFeature = false;
679
- instance.forEachFeatureAtPixel(
680
- evt.pixel,
681
- () => {
682
- hasFeature = true;
683
- },
684
- {
685
- layerFilter: (layer) => layer === vectorLayer
686
- }
687
- );
688
- return (0, import_condition.singleClick)(evt) && hasFeature;
689
- }
690
- });
691
- interaction.on("select", (evt) => {
692
- const { selected, deselected } = evt;
693
- if (selected.length) {
694
- const feature = selected[0];
695
- const isClusterLayer = vectorLayer.get("_isClusterLayer");
696
- if (isClusterLayer) {
697
- const features = feature.get("features");
698
- if (features.length === 1) {
699
- selectEventHandle(vectorLayer, features[0]);
700
- }
701
- } else {
702
- selectEventHandle(vectorLayer, feature);
703
- }
704
- }
705
- if (deselected.length) {
706
- const feature = deselected[0];
707
- const data = feature.getProperties();
708
- feature.setStyle(data.unActiveStyle);
709
- vectorLayer.set("_hasActive", false);
710
- }
711
- });
712
- instance.addInteraction(interaction);
713
- vectorLayer.set("_selectInteraction", interaction);
714
- return interaction;
715
- };
716
-
717
- // src/vector-layer.ts
718
- var import_format2 = require("ol/format");
719
- var import_gcoord2 = __toESM(require("gcoord"), 1);
720
- var import_Vector = __toESM(require("ol/layer/Vector"), 1);
721
- var import_Vector2 = __toESM(require("ol/source/Vector"), 1);
722
- var import_style = require("ol/style");
723
- var resolveColor = (data, colorKey, colorMap, fallback) => colorKey ? (colorMap == null ? void 0 : colorMap.get(data[colorKey])) || fallback : fallback;
724
- var assembleGeoJson = (dataList, config) => {
725
- const { key, crsForm } = config;
726
- const tempList = [];
727
- dataList.forEach((item) => {
728
- try {
729
- const raw = item[key];
730
- const pathArray = Array.isArray(raw) ? raw : JSON.parse(raw || "[]");
731
- if (pathArray.length) {
732
- const type = item["geoType"] || determineGeometryType(pathArray);
733
- if (type !== "Invalid" /* Invalid */) {
734
- tempList.push({
735
- type: "Feature",
736
- properties: __spreadValues({}, item),
737
- geometry: {
738
- type,
739
- coordinates: pathArray
740
- }
741
- });
742
- }
743
- }
744
- } catch (e) {
745
- console.error(`\u521B\u5EFA\u7EBF\u72B6\u6570\u636E\u5931\u8D25\uFF1A${e}`);
746
- }
747
- });
748
- return import_gcoord2.default.transform(
749
- { type: "FeatureCollection", features: tempList },
750
- crsForm || import_gcoord2.default.WGS84,
751
- import_gcoord2.default.WGS84
752
- );
753
- };
754
- var createVectorStyle = (feature, config) => {
755
- const {
756
- isLine,
757
- colorMap,
758
- fillColor,
759
- colorKey,
760
- strokeColor,
761
- fillOpacity,
762
- strokeWeight,
763
- activeFillColor,
764
- activeFillOpacity,
765
- activeStrokeColor,
766
- activeStrokeWeight
767
- } = config || {};
768
- const data = feature.getProperties();
769
- const activeStyle = new import_style.Style({
770
- stroke: new import_style.Stroke({
771
- width: activeStrokeWeight || strokeWeight || 4,
772
- color: activeStrokeColor || resolveColor(data, colorKey, colorMap, strokeColor)
773
- })
774
- });
775
- const unActiveStyle = new import_style.Style({
776
- stroke: new import_style.Stroke({
777
- width: strokeWeight || 2,
778
- color: resolveColor(data, colorKey, colorMap, strokeColor)
779
- })
780
- });
781
- if (!isLine) {
782
- activeStyle.setFill(
783
- new import_style.Fill({
784
- color: hexToRgba(
785
- activeFillColor || fillColor || "",
786
- activeFillOpacity || 1
787
- ) || hexToRgba(
788
- resolveColor(data, colorKey, colorMap, fillColor) || "",
789
- fillOpacity || 1
790
- )
791
- })
792
- );
793
- unActiveStyle.setFill(
794
- new import_style.Fill({
795
- color: hexToRgba(
796
- resolveColor(data, colorKey, colorMap, fillColor) || "",
797
- fillOpacity || 1
798
- )
799
- })
800
- );
801
- }
802
- feature.setProperties({
803
- activeStyle,
804
- unActiveStyle
805
- });
806
- return unActiveStyle;
807
- };
808
- var createBusinessLayer = (dataList, config) => {
809
- const { isAutoFit, layerName, openClick } = config;
810
- const geoJson = assembleGeoJson(dataList, config);
811
- const vectorLayer = new import_Vector.default({
812
- zIndex: 5,
813
- className: layerName ? layerName : "ol-layer",
814
- source: new import_Vector2.default({
815
- features: new import_format2.GeoJSON().readFeatures(geoJson).map((feature) => {
816
- feature.setStyle(createVectorStyle(feature, config));
817
- return feature;
818
- })
819
- })
820
- });
821
- if (openClick) {
822
- createSelectByLayer(vectorLayer);
823
- }
824
- vectorLayer.setProperties({
825
- _isCustom: true,
826
- _isAutoFit: isAutoFit,
827
- _isVectorLayer: true,
828
- _vectorConfig: config,
829
- _layerName: layerName,
830
- _dataList: [...dataList],
831
- _uuidSet: new Set(dataList.map((item) => item._uuid) || [])
832
- });
833
- return vectorLayer;
834
- };
835
- var appendFeaturesByLayer = (targetLayer, dataList, crsForm) => {
836
- const vectorSource = targetLayer.getSource();
837
- const tempSet = targetLayer.get("_uuidSet") || /* @__PURE__ */ new Set();
838
- dataList.forEach((item) => tempSet.add(item._uuid));
839
- targetLayer.set("_uuidSet", tempSet);
840
- const { _vectorConfig: config } = targetLayer.getProperties() || {};
841
- const geoJson = assembleGeoJson(
842
- dataList,
843
- Object.assign({}, config, { crsForm })
844
- );
845
- vectorSource.addFeatures(
846
- new import_format2.GeoJSON().readFeatures(geoJson).map((feature) => {
847
- feature.setStyle(createVectorStyle(feature, config));
848
- return feature;
849
- })
850
- );
851
- };
852
- var createVectorFaceLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign({}, config, { isLine: false }));
853
- var createVectorLineLayer = (dataList = [], config) => createBusinessLayer(dataList, Object.assign({}, config, { isLine: true }));
854
-
855
- // src/mass-marks.ts
856
- var import_ol2 = require("ol");
857
- var import_geom = require("ol/geom");
858
- var import_gcoord3 = __toESM(require("gcoord"), 1);
859
- var import_style2 = require("ol/style");
860
- var import_Vector3 = __toESM(require("ol/layer/Vector"), 1);
861
- var import_Vector4 = __toESM(require("ol/source/Vector"), 1);
862
- var buildMassMarksStyles = (getImgUrlFn) => {
863
- return (iconConfig) => {
864
- const {
865
- baseUrl,
866
- markerIcon,
867
- statusNum = 5,
868
- activeScale = 1.3,
869
- markerSize = [32, 32]
870
- } = iconConfig;
871
- const getMarkerUrl = getImgUrlFn(baseUrl);
872
- const [x, y] = markerSize;
873
- const massMarksStyles = new Array(statusNum * 2);
874
- for (let i = 0; i < statusNum; i++) {
875
- const imageUrl = getMarkerUrl(`${markerIcon}-${i}`, ".webp");
876
- massMarksStyles[i] = new import_style2.Style({
877
- zIndex: 88 + i,
878
- image: new import_style2.Icon({
879
- width: x,
880
- height: y,
881
- src: imageUrl,
882
- anchor: [0.5, 1]
883
- })
884
- });
885
- const activeImage = getMarkerUrl(`${markerIcon}-${i}-active`, ".webp");
886
- massMarksStyles[i + statusNum] = new import_style2.Style({
887
- zIndex: 120,
888
- image: new import_style2.Icon({
889
- width: x * activeScale,
890
- height: y * activeScale,
891
- anchor: [0.5, 1],
892
- src: activeImage ? activeImage : imageUrl
893
- })
894
- });
895
- }
896
- return massMarksStyles;
897
- };
898
- };
899
- var createFeatures = (dataList, styleList = []) => {
900
- return dataList.map((item) => {
901
- const { crsForm } = item;
902
- const coord = import_gcoord3.default.transform(
903
- [+item.lnglat[0], +item.lnglat[1]],
904
- crsForm || import_gcoord3.default.WGS84,
905
- import_gcoord3.default.WGS84
906
- );
907
- const feature = new import_ol2.Feature({
908
- geometry: new import_geom.Point(coord)
909
- });
910
- feature.setProperties(__spreadProps(__spreadValues({}, item), {
911
- unActiveStyle: styleList[item.style],
912
- activeStyle: styleList[item.style + styleList.length / 2]
913
- }));
914
- feature.setStyle(styleList[item.style]);
915
- return feature;
916
- });
917
- };
918
- var addFeaturesByLayer = (targetLayer, dataList, config) => {
919
- const massMarksStyles = targetLayer.get("_massMarksStyles");
920
- const targetSource = targetLayer == null ? void 0 : targetLayer.getSource();
921
- const { clear } = config;
922
- if (clear) {
923
- targetSource == null ? void 0 : targetSource.clear();
924
- }
925
- targetSource == null ? void 0 : targetSource.addFeatures(createFeatures(dataList, massMarksStyles));
926
- };
927
- var createMassMarksLayer = (dataList, styleList = []) => {
928
- const vectorLayer = new import_Vector3.default({
929
- zIndex: 2e3,
930
- source: new import_Vector4.default({
931
- features: createFeatures(dataList, styleList)
932
- })
933
- });
934
- vectorLayer.setProperties({
935
- _isCustom: true,
936
- _isVectorLayer: true,
937
- _isMassMarksLayer: true,
938
- _statusNum: styleList.length / 2,
939
- _dataList: [...dataList],
940
- _uuidSet: new Set(dataList.map((item) => item._uuid) || [])
941
- });
942
- return vectorLayer;
943
- };
944
- var addMassMarksLayer = (getImgUrlFn) => {
945
- return (dataList = [], iconConfig, openClick = true) => {
946
- const {
947
- offset = [0, 0],
948
- baseUrl,
949
- hasLine,
950
- hasFace,
951
- layerName,
952
- isDynamic,
953
- isAutoFit,
954
- statusNum,
955
- markerIcon,
956
- marksStyles,
957
- markerSize,
958
- activeScale,
959
- vectorConfig
960
- } = iconConfig;
961
- const massMarksStyles = marksStyles ? marksStyles : buildMassMarksStyles(getImgUrlFn)({
962
- baseUrl,
963
- markerIcon,
964
- markerSize,
965
- statusNum: statusNum || 5,
966
- activeScale: activeScale || 1.3
967
- });
968
- const massMarksLayer = createMassMarksLayer(dataList, massMarksStyles);
969
- if (openClick) {
970
- massMarksLayer.setProperties({
971
- _offset: offset,
972
- _isAutoFit: isAutoFit
973
- });
974
- createSelectByLayer(massMarksLayer);
975
- }
976
- if (hasLine) {
977
- const vectorLayer = createBusinessLayer(
978
- dataList,
979
- Object.assign(
980
- {},
981
- {
982
- key: "line",
983
- isLine: true,
984
- openClick: false,
985
- strokeWeight: 4,
986
- strokeColor: "rgba(29, 235, 255, 0.8)"
987
- },
988
- vectorConfig || {}
989
- )
990
- );
991
- instance.addLayer(vectorLayer);
992
- }
993
- if (hasFace) {
994
- const vectorLayer = createBusinessLayer(
995
- dataList,
996
- Object.assign(
997
- {},
998
- {
999
- isLine: false,
1000
- key: "faceList",
1001
- strokeWeight: 1,
1002
- openClick: false,
1003
- fillColor: "#4247DF",
1004
- strokeStyle: "dashed",
1005
- strokeColor: "#4247DF"
1006
- },
1007
- vectorConfig || {}
1008
- )
1009
- );
1010
- instance.addLayer(vectorLayer);
1011
- }
1012
- massMarksLayer.setProperties({
1013
- _isCustom: true,
1014
- _offset: offset,
1015
- _hasLine: hasLine,
1016
- _hasFace: hasFace,
1017
- className: layerName,
1018
- _layerName: layerName,
1019
- _isVectorLayer: true,
1020
- _isDynamic: isDynamic,
1021
- _massMarksStyles: massMarksStyles
1022
- });
1023
- instance.addLayer(massMarksLayer);
1024
- return massMarksLayer;
1025
- };
1026
- };
1027
- var updateMarksLayersByStatus = (checkedStatusList = []) => {
1028
- const hideStyle = new import_style2.Style({});
1029
- const tempList = [];
1030
- const targetLayers = instance.getAllLayers().filter((layer) => layer.get("_isMassMarksLayer"));
1031
- targetLayers.forEach((layer) => {
1032
- const features = layer.getSource().getFeatures();
1033
- features.forEach((feature) => {
1034
- const data = feature.getProperties();
1035
- if (!checkedStatusList.includes(data.status)) {
1036
- feature.setStyle(hideStyle);
1037
- } else {
1038
- tempList.push(data);
1039
- feature.setStyle(data.unActiveStyle);
1040
- }
1041
- });
1042
- });
1043
- return tempList;
1044
- };
1045
-
1046
- // src/cluster.ts
1047
- var import_ol3 = require("ol");
1048
- var import_geom2 = require("ol/geom");
1049
- var import_Cluster = __toESM(require("ol/source/Cluster"), 1);
1050
- var import_Circle = __toESM(require("ol/style/Circle"), 1);
1051
- var import_Vector5 = __toESM(require("ol/layer/Vector"), 1);
1052
- var import_Vector6 = __toESM(require("ol/source/Vector"), 1);
1053
- var import_style3 = require("ol/style");
1054
- var createClusterLayer = (dataList, config) => {
1055
- const count = dataList.length;
1056
- const styleCache = {};
1057
- const {
1058
- distance,
1059
- minDistance,
1060
- openClick,
1061
- buildStyle,
1062
- singleStyles,
1063
- computedRadius,
1064
- layerName = "cluster-layer"
1065
- } = config;
1066
- const innerComputedRadius = (size) => Math.pow(size / count, 1 / 18);
1067
- styleCache[1] = singleStyles;
1068
- const innerBuildStyle = (feature) => {
1069
- const size = feature.get("features").length;
1070
- let style = styleCache[size];
1071
- const tempRadius = computedRadius ? computedRadius(size) : innerComputedRadius(size);
1072
- if (!style) {
1073
- style = new import_style3.Style({
1074
- image: new import_Circle.default({
1075
- radius: tempRadius * 20,
1076
- stroke: new import_style3.Stroke({
1077
- width: 2,
1078
- color: `hsla(${180 - tempRadius * 180}, 100%, 40%, 1)`
1079
- }),
1080
- fill: new import_style3.Fill({
1081
- color: `hsla(${180 - tempRadius * 180}, 100%, 50%, 1)`
1082
- })
1083
- }),
1084
- text: new import_style3.Text({
1085
- text: size.toString(),
1086
- fill: new import_style3.Fill({
1087
- color: `hsla(${180 - tempRadius * 180}, 100%, 10%, 1)`
1088
- }),
1089
- textBaseline: "middle"
1090
- })
1091
- });
1092
- styleCache[size] = style;
1093
- }
1094
- if (Array.isArray(style)) {
1095
- const tempFeature = feature.get("features")[0];
1096
- const index = tempFeature.get("styleIndex") || 0;
1097
- tempFeature.setProperties({
1098
- unActiveStyle: style[index],
1099
- activeStyle: style[index + style.length / 2]
1100
- });
1101
- return style[index];
1102
- }
1103
- return style;
1104
- };
1105
- const vectorLayer = new import_Vector5.default({
1106
- zIndex: 200,
1107
- className: layerName,
1108
- source: new import_Cluster.default({
1109
- distance: distance || 80,
1110
- minDistance: minDistance || 0,
1111
- source: new import_Vector6.default({
1112
- features: dataList.map((item) => {
1113
- const feature = new import_ol3.Feature(new import_geom2.Point(item.lnglat));
1114
- feature.setProperties(item);
1115
- return feature;
1116
- })
1117
- })
1118
- }),
1119
- style: (feature) => buildStyle ? buildStyle(feature) : innerBuildStyle(feature)
1120
- });
1121
- vectorLayer.setProperties({
1122
- _isCustom: true,
1123
- _isVectorLayer: true,
1124
- _isClusterLayer: true
1125
- });
1126
- if (openClick) {
1127
- createSelectByLayer(vectorLayer);
1128
- }
1129
- return vectorLayer;
1130
- };
1131
- // Annotate the CommonJS export names for ESM import in node:
1132
- 0 && (module.exports = {
1133
- GeometryType,
1134
- activeFeatureByUid,
1135
- addFeaturesByLayer,
1136
- addMassMarksLayer,
1137
- appendFeaturesByLayer,
1138
- buildMassMarksStyles,
1139
- createAnimationMarker,
1140
- createBaseLayer,
1141
- createBusinessLayer,
1142
- createClusterLayer,
1143
- createMap,
1144
- createMapInstance,
1145
- createMapWorldLayer,
1146
- createMassMarksLayer,
1147
- createOverlay,
1148
- createSelectByLayer,
1149
- createVectorFaceLayer,
1150
- createVectorLineLayer,
1151
- createWmtsLayer,
1152
- createZheJiangLayer,
1153
- disposeMap,
1154
- emitter,
1155
- getLayerByName,
1156
- getLayersDataList,
1157
- getMapInstance,
1158
- instance,
1159
- removeAllLayers,
1160
- removeLayerByName,
1161
- removeOverlays,
1162
- resetActiveFeature,
1163
- resetActiveVector,
1164
- resetMap,
1165
- resetZoomAndCenter,
1166
- setFitViewByCoords,
1167
- setFitViewByGeom,
1168
- setFitViewByLayer,
1169
- updateMarksLayersByStatus
1170
- });
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("tdt-vts-core"),l=require("ol/format/MVT.js");l=s(l,1);let u=require("ol/layer/VectorTile.js");u=s(u,1);let d=require("ol/TileState.js");d=s(d,1);let f=require("ol/source/VectorTile.js");f=s(f,1);let p=require("mitt");p=s(p,1);let m=require("ol/source.js"),h=require("ol/layer/Tile.js");h=s(h,1);let g=require("ol/format.js"),_=require("ol/source/WMTS.js"),v=require("ol/tilegrid.js"),y=require("ol/layer.js"),b=require("ol/tilegrid/WMTS.js");b=s(b,1);let ee=require("ol/Observable.js"),x=require("ol/layer/Image.js");x=s(x,1);let S=require("ol/source/Raster.js");S=s(S,1);let C=require("ol/Map.js");C=s(C,1);let w=require("ol/View.js");w=s(w,1);let te=require("ol/control.js"),T=require("gcoord");T=s(T,1);let E=require("ol"),D=require("ol/interaction.js"),ne=require("ol/extent.js"),re=require("ol/events/condition.js"),O=require("ol/Feature.js");O=s(O,1);let k=require("ol/geom/Point.js");k=s(k,1);let A=require("ol/layer/Vector.js");A=s(A,1);let j=require("ol/source/Vector.js");j=s(j,1);let M=require("ol/style.js"),N=require("ol/interaction/Draw.js");N=s(N,1);let ie=require("ol/sphere.js"),P=require("ol/format/GeoJSON.js");P=s(P,1);let ae=require("ol/geom.js"),F=require("ol/source/Cluster.js");F=s(F,1);let I=require("ol/style/Circle.js");I=s(I,1);let oe=function(e){return e.LineString=`LineString`,e.MultiLineString=`MultiLineString`,e.Polygon=`Polygon`,e.MultiPolygon=`MultiPolygon`,e.Invalid=`Invalid`,e}({});const se=async e=>{if(typeof e!=`string`)return e;if(!e.trim())throw TypeError(`style 地址不能为空`);let t=await fetch(e);if(!t.ok)throw Error(`加载 style 失败:HTTP ${t.status}`);return await t.json()},ce=e=>{if(!e.hosts?.length||e.hosts.some(e=>!e.trim()))throw TypeError(`hosts 不能为空`);let t=new c.TdtDecoderWorkerClient(e.restoreMode,e.decoderOptions),n=new l.default({layerName:`mvt:layer`}),r=new f.default({projection:`EPSG:3857`,minZoom:e.minZoom??1,maxZoom:e.maxZoom??18,tileSize:512,wrapX:!0,format:n,attributions:`© <a href="https://www.tianditu.gov.cn/" target="_blank" rel="noopener">天地图</a>`,tileUrlFunction(t){if(!t)return;let[n,r,i]=t;if(n!==void 0&&r!==void 0&&i!==void 0)return(0,c.createTdtVtsUrl)([n,r,i],{token:e.token,hosts:e.hosts,maxZoom:e.maxZoom??18,wrapX:!0})},tileLoadFunction(r,i){let a=r;a.setLoader(async(r,o,s)=>{let l=(0,c.redactTdtToken)(i);try{let o=await t.decode(i),c=n.readFeatures(o.buffer,{extent:r,featureProjection:s});a.setFeatures(c),e.diagnostics?.onDecoded?.(o.stats,l)}catch(t){let n=t instanceof Error?t:Error(String(t));e.diagnostics?.onError?.(n,l),console.error(`天地图私有 VTS 加载失败`,l,n),a.setState(d.default.ERROR)}})}}),i=r.dispose.bind(r);return r.dispose=()=>{t.dispose(),i()},{source:r,decoder:t}},le=async e=>{let t=await se(e.style);if(t?.version!==8||!t.sources||!Array.isArray(t.layers))throw TypeError(`style 必须是 Style v8 对象或其 JSON 地址`);let{source:n}=ce({token:e.token,hosts:e.hosts,restoreMode:`auto`}),r=new u.default({declutter:!0,source:n}),i=r.dispose.bind(r);r.dispose=()=>{n.dispose(),i()};try{let{applyBackground:e,applyStyle:n}=await import(`ol-mapbox-style`),i=structuredClone(t);for(let e of i.layers)e.type===`symbol`&&e.layout?.[`text-font`]&&(e.layout[`text-font`]=[`sans-serif`]);return await Promise.all([n(r,i,{projection:`EPSG:4326`,source:`base-tdt-vector-tile`,updateSource:!1}),e(r,i)]),r}catch(e){throw r.dispose(),e}},L=(0,p.default)();let R;const ue=e=>{R=e},de=()=>{R=void 0},z=(e,t)=>{if(e.startsWith(`#`)){let n=e.replace(`#`,``);return n.length===3&&(n=n[0]+n[0]+n[1]+n[1]+n[2]+n[2]),`rgba(${parseInt(n.substring(0,2),16)}, ${parseInt(n.substring(2,4),16)}, ${parseInt(n.substring(4,6),16)}, ${t})`}return e},fe=()=>R?.getAllLayers().map(e=>e.get(`_dataList`)||[]).flat(2)||[],pe=e=>{let t=e=>!Array.isArray(e)||e.length===0?0:1+t(e[0]),n=e=>{if(!Array.isArray(e)||e.length<3)return!1;let t=e[0],n=e[e.length-1];return t[0]===n[0]&&t[1]===n[1]},r=e=>Array.isArray(e)&&e.length>=2&&typeof e[0]==`number`&&typeof e[1]==`number`,i=e=>Array.isArray(e)&&e.length>=2&&e.every(r),a=e=>Array.isArray(e)?(t(e)===2?[e]:e).every(e=>Array.isArray(e)&&e.length>=4&&n(e)&&e.every(r)):!1,o=t(e);try{return o<2||!e||e.length===0?`Invalid`:o===2&&i(e)?n(e)&&e.length>=4?`Polygon`:`LineString`:o===3&&Array.isArray(e)&&e.every(i)?a(e)?`Polygon`:e.every(e=>!n(e))?`MultiLineString`:`Invalid`:o===4&&Array.isArray(e)&&e.every(e=>a(e))?`MultiPolygon`:`Invalid`}catch(e){return console.error(`Error analyzing coordinates:`,e),`Invalid`}},me=new g.WMTSCapabilities,he=new Map,ge=async e=>{let t=he.get(e);if(t)return t;let n=await fetch(e);if(!n.ok)throw Error(`WMTS capabilities 请求失败:${n.status}`);let r=me.read(await n.text());return he.set(e,r),r},_e=e=>async t=>{let{style:n,format:r,version:i,layerName:a,matrixSet:o}=t,[s,c]=a.split(`:`),l=`${e}/${s}/${c}/gwc/service/wmts?request=GetCapabilities`,u=await ge(l),d=(0,_.optionsFromCapabilities)(u,{style:n||``,layer:c,version:i||`1.1.0`,format:r||`image/png`,matrixSet:o||`EPSG:4326`});if(!d)throw Error(`Unable to create TileLayer`);return new h.default({zIndex:3,className:a,source:new m.WMTS(d)})},ve=`c77eddc667c5bed016fded560baf93e7`,B=(e,t)=>{let n=t.get(`_selectInteraction`);n&&(e.removeInteraction(n),n.dispose(),t.unset(`_selectInteraction`));let r=t.get(`_resolutionChangeKey`);r&&((0,ee.unByKey)(r),t.unset(`_resolutionChangeKey`));let i=t.get(`_dynamicMarkerTimer`);i!==void 0&&(clearTimeout(i),t.unset(`_dynamicMarkerTimer`)),t.getSource()?.dispose(),e.removeLayer(t),t.dispose()},V=(e=`hzsyvector_dark`)=>{let t={zIndex:-5,preload:1,minZoom:8,maxZoom:21,source:new m.XYZ({tileGrid:new v.TileGrid({tileSize:256,resolutions:[.00549933137253187,.00274966568626595,.00137483284313297,.000687416421566485,.000343708210783242,.000171854105391621,859270526958104e-19,429635263479052e-19,214817631739526e-19,107408815869763e-19,537044079348816e-20,268522039674407e-20,134261019837204e-20],origin:[118.122911693886,31.2869311022836],extent:[116.43263049006,28.6201742126026,123.705594256347,31.9765041681924]}),projection:`EPSG:4326`,urls:[`https://ywtg.citybrain.hangzhou.gov.cn/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9456/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9457/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9458/${e}/{z}/{y}/{x}`,`https://ywtg.citybrain.hangzhou.gov.cn:9459/${e}/{z}/{y}/{x}`]}),properties:{_isBaseLayer:!0,_layerName:e}};return new y.Tile(t)},ye=(e,t=ve)=>{let[n,r]=e.split(`_`),i={preload:1,zIndex:-10,cacheSize:20240,properties:{_isBaseLayer:!0,_layerName:e},source:new m.WMTS({crossOrigin:`anonymous`,projection:`EPSG:4326`,wrapX:!0,layer:n,style:`default`,version:`1.0.0`,format:`image/png`,matrixSet:r,tileGrid:new b.default({tileSize:256,origin:[-180,90],matrixIds:[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`,`13`,`14`,`15`,`16`,`17`,`18`,`19`],resolutions:[.703125,.3515625,.17578125,.087890625,.0439453125,.02197265625,.010986328125,.0054931640625,.00274658203125,.001373291015625,.0006866455078125,.00034332275390625,.000171661376953125,858306884765625e-19,4291534423828125e-20,21457672119140625e-21,10728836059570312e-21,5364418029785156e-21,2682209014892578e-21]}),url:`https://t{0-7}.tianditu.gov.cn/${e}/wmts?tk=${t}`})};return new y.Tile(i)},be=e=>({baseImgLayer:new y.Tile({className:`img-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCiaLayer:new y.Tile({className:`img-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2}),baseVecLayer:new y.Tile({className:`vec-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:1}),baseCvaLayer:new y.Tile({className:`vec-layer`,source:new m.XYZ({crossOrigin:`anonymous`,tileSize:256,url:`https://t{0-7}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=${e}`}),zIndex:2})}),xe=(e=`emap`,t=`3b0cdd02-c366-4363-b6de-081a9f12b364`)=>new y.Tile({preload:1,minZoom:4,maxZoom:20,zIndex:-10,cacheSize:20240,source:new m.XYZ({wrapX:!0,projection:`EPSG:4326`,crossOrigin:`anonymous`,url:`https://ditu{0-6}.zjzwfw.gov.cn/services/wmts/${e}/default/oss/getTile/{z}/{y}/{x}?token=${t}`})}),Se=e=>R.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e),Ce=e=>{let t=Se(e);t&&B(R,t)},we=()=>Math.max(1,Math.min(4,globalThis.navigator?.hardwareConcurrency??2)),H=(e,t,n,r={})=>{let i=new S.default({sources:[e],operationType:`image`,operation:(e,t)=>(((e,t)=>{let n=t.ratioArray,r=t.rgbColorArray;if(n&&r){let[t=0,i=0,a=0]=n;for(let n=0;n<e.length;n+=4){let o=e[n],s=e[n+1],c=e[n+2],l=o*t+s*i+c*a;e[n]=r[0]-l,e[n+1]=r[1]-l,e[n+2]=r[2]-l}}})(e[0].data,t),e[0]),threads:r.threads??we()});return i.on(`beforeoperations`,e=>{e.data.ratioArray=n,e.data.rgbColorArray=t}),i},Te=(e,t,n,r={})=>new x.default({source:H(e,t,n,r)}),U=(e=``)=>{R&&R.getOverlays().getArray().filter(t=>t.get(e||`position`)).forEach(e=>R.removeOverlay(e))},Ee=()=>U(`_isAnimationMarker`),De=(e,t)=>{Ee();let{width:n,height:r,lnglat:i,crsForm:a}=t,o=document.createElement(`div`),s=document.createElement(`img`);s.src=e,s.alt=``,n!==void 0&&(s.width=n),r!==void 0&&(s.height=r),o.append(s);let c=new E.Overlay({element:o,stopEvent:!1,positioning:`bottom-center`,position:T.default.transform([+i[0],+i[1]],a||T.default.WGS84,T.default.WGS84)});c.set(`_isAnimationMarker`,!0),R.addOverlay(c)},Oe=(e={id:`popup-container`,positioning:`top-center`})=>new E.Overlay(Object.assign({element:document.getElementById(e.id)||void 0},e)),ke=()=>{U(),R.getAllLayers().forEach(e=>{e.get(`_selectInteraction`)?.getFeatures().clear()})},Ae=()=>{U(),R&&R.getAllLayers().forEach(e=>{e.get(`_isBaseLayer`)||B(R,e)})},je=()=>{U(),R.getAllLayers().filter(e=>e.get(`_isVectorLayer`)).forEach(e=>{let t=e.get(`_selectInteraction`);t&&(t.dispatchEvent({type:`select`,selected:[],mapBrowserEvent:void 0,deselected:t.getFeatures().getArray()}),t.getFeatures().clear())})},Me=e=>{let t=R.getAllLayers().filter(e=>e.get(`_isVectorLayer`));if(t.length){let n=t.find(t=>t.get(`_uuidSet`).has(e)&&t.get(`_selectInteraction`));if(n){let t=(n.getSource()?.getFeatures()||[]).find(t=>t.get(`_uuid`)===e),r=n.get(`_selectInteraction`);if(r){let n=r.getFeatures().getArray();n.find(t=>t.get(`_uuid`)===e)||(r.dispatchEvent({type:`select`,deselected:n,selected:[t],mapBrowserEvent:void 0}),r.getFeatures().push(t))}}}};let W=[119.71512016971076,30.122490541963536];const Ne=(e={})=>{if(R)return R;let t=Pe(e);return ue(t),t},Pe=(e={})=>{let t=Object.assign({zoom:9.4,maxZoom:18,minZoom:9.4,center:W,baseLayer:`vec-layer`,projection:`EPSG:4326`,layers:[V()],constrainResolution:!1,smoothExtentConstraint:!1,tk:ve},e||{}),n=new C.default({view:new w.default(t),controls:(0,te.defaults)({zoom:!1,rotate:!1,attribution:!1}),interactions:(0,D.defaults)({pinchRotate:!1,doubleClickZoom:!1,altShiftDragRotate:!1}),layers:t.layers||[V()]});W=t.center||W,n.activeBaseLayer=t.baseLayer;let r=e=>n.getAllLayers().find(t=>(t.get(`_layerName`)||t.getClassName())===e);n.getLayerByName=r,n.removeLayerByName=e=>{let t=r(e);t&&B(n,t)},n.changeLayersByNames=(e,t)=>{n.getAllLayers().filter(e=>t.includes(e.getClassName())).forEach(t=>t.setVisible(e?.includes(t.getClassName())))};let i,a;return n.on(`pointermove`,e=>{if(a=e.pixel,i!==void 0)return;let t=()=>{i=void 0,a&&(n.getTargetElement().style.cursor=n.hasFeatureAtPixel(a)?`pointer`:``)};i=typeof globalThis.requestAnimationFrame==`function`?globalThis.requestAnimationFrame(t):setTimeout(t,16)}),n.set(`_disposePointerMove`,()=>{i!==void 0&&(typeof globalThis.cancelAnimationFrame==`function`?globalThis.cancelAnimationFrame(i):clearTimeout(i),i=void 0)}),n},Fe=()=>{if(!R)return;let e=R;e.get(`_disposePointerMove`)?.(),e.unset(`_disposePointerMove`),e.getOverlays().forEach(t=>{e.removeOverlay(t)}),e.getInteractions().clear(),e.getAllLayers().forEach(t=>B(e,t)),e.setTarget(``),e.dispose(),de()},Ie=()=>Fe(),Le=()=>R,Re=(e=W)=>{R&&R.getView().animate({zoom:9.4,center:e,duration:1e3})},ze=(e={center:W,isClearAll:!0})=>{Ae(),Re(e.center||W)},G={padding:[50,50,50,50],duration:1e3},Be=(e,t=R,n)=>{let r=t.getView();if(e.length===1)r.animate({zoom:14,duration:1e3,center:e[0],...n||{}});else{let t=(0,ne.boundingExtent)(e);r.fit(t,{...G,...n||{}})}},Ve=(e,t=R,n)=>{t.getView().fit(e,{...G,...n||{}})},He=(e,t=R,n)=>{let r=e.getSource();if(!r||r.isEmpty())return;let i=r.getExtent();i&&t.getView().fit(i,{...G,...n||{}})},Ue=(e,t)=>{let n=R.getView(),r=n.getZoom();n.animate({center:e,duration:2e3}),t?n.animate({zoom:t-2,duration:1e3},{zoom:t,duration:1e3}):n.animate({zoom:r-2,duration:1e3},{zoom:r+2>12?12:r+2,duration:1e3})},We=e=>new M.Text({text:e.text,offsetY:e.offsetY,offsetX:e.offsetX,justify:`center`,textAlign:`center`,font:`16px PingFangSC-Semibold`,fill:new M.Fill({color:`rgba(255, 255, 255, 0.8)`})}),K=(e,t=!1)=>new M.Style({image:new M.Icon({scale:e.scale||1,rotation:e.rotation||0,anchor:e.anchor||[.5,1],src:t&&e.activeImg||e.img}),text:e.showText?We(e):void 0}),q=(e,t)=>{let n=new O.default({geometry:new k.default([+e.lng,+e.lat]),data:Object.assign({},e||{},{layerName:t.layerName})});return n.setStyle(K(e)),n},Ge=(e,t)=>{let{layerName:n,visible:r=!0,zIndex:i=10}=t,a=new j.default;return e.forEach(e=>a.addFeature(q(e,t))),new A.default({zIndex:i,visible:r,source:a,className:n||`marker-layer`})},J=(e,t)=>{let n=t>=14?`largeImg`:t>=11?`smallImg`:`img`;e.forEach(e=>{let t=e.get(`data`);t.isSelected||e.setStyle(K({...t,img:t[n]},!1))})},Y=(e,t)=>{let n=e.get(`data`),r={...n,isSelected:t};e.set(`data`,r),n.isElastic?J([e],R.getView().getZoom()):e.setStyle(K(r,t))},Ke=e=>{e.forEach(e=>{Y(e,!1)}),e.clear()},qe=(e,t)=>{let n=e.map(e=>({...e,isElastic:!0})),r=Ge(n,t),i=r.getSource().getFeatures(),a=R.getView();return J(i,a.getZoom()),r.set(`_resolutionChangeKey`,a.on(`change:resolution`,()=>J(i,a.getZoom()))),r},Je=(e,t)=>{let n=q(e,t),r=new A.default({className:t.layerName||`ol-layer`,source:new j.default({features:[n]})});return R.addLayer(r),{vectorLayer:r}},Ye=(e,t)=>{let n=t.getProperties(),{activeStyle:r}=n;if(t.setStyle(r),L.emit(`selected-feature`,n),e.set(`_hasActive`,!0),e.get(`_isDynamic`)){let t=r.getImage(),i=e.get(`_dynamicMarkerTimer`);i!==void 0&&clearTimeout(i);let a=setTimeout(()=>{e.unset(`_dynamicMarkerTimer`),L.emit(`dynamic-marker`,Object.assign({},n.rawData||{},{lnglat:n.lnglat,style:n.style,crsForm:n.crsForm,width:t.getWidth(),height:t.getHeight()}))},1e3);e.set(`_dynamicMarkerTimer`,a)}if(e.get(`_isAutoFit`)){let e=R.getView();e.animate({duration:1e3,zoom:e.getZoom(),center:(0,ne.getCenter)(t.getGeometry().getExtent())})}},X=e=>{let t=new D.Select({style:null,multi:!1,hitTolerance:10,layers:[e],condition:t=>{if(!(0,re.singleClick)(t))return!1;let n=!1;return R.forEachFeatureAtPixel(t.pixel,()=>{n=!0},{layerFilter:t=>t===e}),n}});return t.on(`select`,t=>{let{selected:n,deselected:r}=t;if(n.length){let t=n[0];if(e.get(`_isClusterLayer`)){let n=t.get(`features`);n.length===1&&Ye(e,n[0])}else Ye(e,t)}if(r.length){let t=r[0],n=t.getProperties();t.setStyle(n.unActiveStyle),e.set(`_hasActive`,!1)}}),R.addInteraction(t),e.set(`_selectInteraction`,t),t},Xe=(e,t,n)=>{let r=new D.Select({style:null,layers:t=>e.includes(t.getClassName())});return r.on(`select`,({deselected:e,selected:r})=>{if(e.length){let t=e[0];Y(t,!1),n?.(t)}if(r.length){let e=r[0];Y(e,!0),t?.(e)}}),r},Ze=e=>{let t=(0,ie.getArea)(e,{projection:`EPSG:4326`});return t>1e4?`${Math.round(t/1e6*100)/100} km\xB2`:`${Math.round(t*100)/100} m\xB2`},Qe=e=>{let t=(0,ie.getLength)(e,{projection:`EPSG:4326`});return t>100?`${Math.round(t/1e3*100)/100} km`:`${Math.round(t*100)/100} m`},$e=new M.Style({fill:new M.Fill({color:`rgba(255, 255, 255, 0.2)`}),stroke:new M.Stroke({color:`rgba(0, 0, 0, 0.5)`,lineDash:[10,10],width:2}),image:new M.Circle({radius:5,stroke:new M.Stroke({color:`rgba(0, 0, 0, 0.7)`}),fill:new M.Fill({color:`rgba(255, 255, 255, 0.2)`})})}),et=new WeakMap,tt=e=>{let t=et.get(e);if(t)return t;let n=new M.Style({text:new M.Text({font:`14px`,fill:new M.Fill({color:`rgba(255, 255, 255, 1)`}),backgroundFill:new M.Fill({color:`rgba(0, 0, 0, 0.7)`}),padding:[3,3,3,3],textBaseline:`bottom`,offsetY:-15}),image:new M.RegularShape({radius:8,points:3,angle:Math.PI,displacement:[0,10],fill:new M.Fill({color:`rgba(0, 0, 0, 0.7)`})})});return et.set(e,n),n},nt=(e,t=$e)=>{let n=t?[t]:[],r=e.getGeometry(),i,a;if(r.getType()===`Polygon`?(i=r.getInteriorPoint(),a=Ze(r)):r.getType()===`LineString`&&(i=new k.default(r.getLastCoordinate()),a=Qe(r)),i&&a){let t=tt(e);t.setGeometry(i),t.getText().setText(a),n.push(t)}return n},rt=(e=`Point`,t,n)=>new N.default({source:t.getSource(),type:e,style:n?e=>nt(e,void 0):void 0}),it=(e,t,n)=>{let{layerName:r}=n||{},i=Object.assign({className:r||`ol-layer`,source:new j.default({features:new P.default().readFeatures(e)}),style:t||new M.Style({stroke:new M.Stroke({color:`red`,lineDash:[10],width:3}),fill:new M.Fill({color:`rgba(0, 0, 255, 0.1)`})})},n||{});return new A.default(i)},Z=(e,t,n,r)=>t&&n?.get(e[t])||r,at=(e,t)=>{let{key:n,crsForm:r}=t,i=[];return e.forEach(e=>{try{let t=e[n],r=Array.isArray(t)?t:JSON.parse(t||`[]`);if(r.length){let t=e.geoType||pe(r);t!==`Invalid`&&i.push({type:`Feature`,properties:{...e},geometry:{type:t,coordinates:r}})}}catch(e){console.error(`创建线状数据失败:${e}`)}}),T.default.transform({type:`FeatureCollection`,features:i},r||T.default.WGS84,T.default.WGS84)},ot=(e,t)=>{let{isLine:n,colorMap:r,fillColor:i,colorKey:a,strokeColor:o,fillOpacity:s,strokeWeight:c,activeFillColor:l,activeFillOpacity:u,activeStrokeColor:d,activeStrokeWeight:f}=t||{},p=e.getProperties(),m=new M.Style({stroke:new M.Stroke({width:f??c??4,color:d||Z(p,a,r,o)})}),h=new M.Style({stroke:new M.Stroke({width:c??2,color:Z(p,a,r,o)})});return n||(m.setFill(new M.Fill({color:z(l||i||``,u??s??1)||z(Z(p,a,r,i)||``,s??1)})),h.setFill(new M.Fill({color:z(Z(p,a,r,i)||``,s??1)}))),e.setProperties({activeStyle:m,unActiveStyle:h}),h},st=(e,t)=>{let n=at(e,t),r=new g.GeoJSON().readFeatures(n),i=r.map(e=>{let t={...e.getProperties()};return delete t.geometry,t});return r.forEach(e=>{e.setStyle(ot(e,t))}),{features:r,acceptedData:i}},Q=(e,t)=>{let{isAutoFit:n,layerName:r,openClick:i}=t,{features:a,acceptedData:o}=st(e,t),s=new A.default({zIndex:5,className:r||`ol-layer`,source:new j.default({features:a})});return i&&X(s),s.setProperties({_isCustom:!0,_isAutoFit:n,_isVectorLayer:!0,_vectorConfig:t,_layerName:r,_dataList:o,_uuidSet:new Set(o.map(e=>e._uuid))}),s},ct=(e,t,n)=>{let r=e.getSource(),{_vectorConfig:i}=e.getProperties()||{},{features:a,acceptedData:o}=st(t,Object.assign({},i,{crsForm:n??i?.crsForm}));r.addFeatures(a);let s=new Set(e.get(`_uuidSet`)||[]);o.forEach(e=>s.add(e._uuid)),e.set(`_uuidSet`,s),e.set(`_dataList`,[...e.get(`_dataList`)||[],...o])},lt=(e=[],t)=>Q(e,Object.assign({},t,{isLine:!1})),ut=(e=[],t)=>Q(e,Object.assign({},t,{isLine:!0})),dt=e=>t=>{let{baseUrl:n,markerIcon:r,statusNum:i=5,activeScale:a=1.3,markerSize:o=[32,32]}=t,s=e(n),[c,l]=o,u=Array(i*2);for(let e=0;e<i;e++){let t=s(`${r}-${e}`,`.webp`);u[e]=new M.Style({zIndex:88+e,image:new M.Icon({width:c,height:l,src:t,anchor:[.5,1]})});let n=s(`${r}-${e}-active`,`.webp`);u[e+i]=new M.Style({zIndex:120,image:new M.Icon({width:c*a,height:l*a,anchor:[.5,1],src:n||t})})}return u},ft=(e,t=[])=>e.map(e=>{let{crsForm:n}=e,r=T.default.transform([+e.lnglat[0],+e.lnglat[1]],n||T.default.WGS84,T.default.WGS84),i=new E.Feature({geometry:new ae.Point(r)});return i.setProperties({...e,unActiveStyle:t[e.style],activeStyle:t[e.style+t.length/2]}),i.setStyle(t[e.style]),i}),pt=(e,t,n={})=>{let r=e.get(`_massMarksStyles`),i=e?.getSource(),{clear:a}=n,o=ft(t,r);a&&i?.clear(),i?.addFeatures(o);let s=[...a?[]:e.get(`_dataList`)||[],...t];e.set(`_dataList`,s),e.set(`_uuidSet`,new Set(s.map(e=>e._uuid)))},$=(e,t=[])=>{let n=new A.default({zIndex:2e3,source:new j.default({features:ft(e,t)})});return n.setProperties({_isCustom:!0,_isVectorLayer:!0,_isMassMarksLayer:!0,_statusNum:t.length/2,_dataList:[...e],_uuidSet:new Set(e.map(e=>e._uuid)||[])}),n},mt=e=>(t=[],n,r=!0)=>{let{offset:i=[0,0],baseUrl:a,hasLine:o,hasFace:s,layerName:c,isDynamic:l,isAutoFit:u,statusNum:d,markerIcon:f,marksStyles:p,markerSize:m,activeScale:h,vectorConfig:g}=n,_=p||dt(e)({baseUrl:a,markerIcon:f,markerSize:m,statusNum:d||5,activeScale:h||1.3}),v=$(t,_);if(r&&(v.setProperties({_offset:i,_isAutoFit:u}),X(v)),o){let e=Q(t,Object.assign({},{key:`line`,isLine:!0,openClick:!1,strokeWeight:4,strokeColor:`rgba(29, 235, 255, 0.8)`},g||{}));R.addLayer(e)}if(s){let e=Q(t,Object.assign({},{isLine:!1,key:`faceList`,strokeWeight:1,openClick:!1,fillColor:`#4247DF`,strokeStyle:`dashed`,strokeColor:`#4247DF`},g||{}));R.addLayer(e)}return v.setProperties({_isCustom:!0,_offset:i,_hasLine:o,_hasFace:s,className:c,_layerName:c,_isVectorLayer:!0,_isDynamic:l,_massMarksStyles:_}),R.addLayer(v),v},ht=(e=[])=>{let t=new M.Style({}),n=new Set(e),r=[];return R.getAllLayers().filter(e=>e.get(`_isMassMarksLayer`)).forEach(e=>{e.getSource().getFeatures().forEach(e=>{let i=e.getProperties();n.has(i.status)?(r.push(i),e.setStyle(i.unActiveStyle)):e.setStyle(t)})}),r},gt=(e,t)=>{let n=e.length,r={},{distance:i,minDistance:a,openClick:o,buildStyle:s,singleStyles:c,computedRadius:l,layerName:u=`cluster-layer`}=t,d=e=>(e/n)**(1/18);r[1]=c;let f=e=>{let t=e.get(`features`).length,n=r[t],i=l?l(t):d(t);if(n||(n=new M.Style({image:new I.default({radius:i*20,stroke:new M.Stroke({width:2,color:`hsla(${180-i*180}, 100%, 40%, 1)`}),fill:new M.Fill({color:`hsla(${180-i*180}, 100%, 50%, 1)`})}),text:new M.Text({text:t.toString(),fill:new M.Fill({color:`hsla(${180-i*180}, 100%, 10%, 1)`}),textBaseline:`middle`})}),r[t]=n),Array.isArray(n)){let t=e.get(`features`)[0].get(`styleIndex`)??0;return n[t]}return n},p=new A.default({zIndex:200,className:u,source:new F.default({distance:i||80,minDistance:a||0,source:new j.default({features:e.map(e=>{let t=new E.Feature(new ae.Point(e.lnglat));t.setProperties(e);let n=e.style??0;return t.setProperties({unActiveStyle:c[n],activeStyle:c[n+c.length/2]}),t})})}),style:e=>s?s(e):f(e)});return p.setProperties({_isCustom:!0,_isVectorLayer:!0,_isClusterLayer:!0}),o&&X(p),p};exports.GeometryType=oe,exports.activeFeatureByUid=Me,exports.addFeaturesByLayer=pt,exports.addMassMarksLayer=mt,exports.appendFeaturesByLayer=ct,exports.baseLayers=be,exports.buildMassMarksStyles=dt,exports.changeLayer=Te,exports.changeSource=H,exports.changeUnselectStyle=Ke,exports.createAnimationMarker=De,exports.createBaseLayer=V,exports.createBusinessLayer=Q,exports.createClusterLayer=gt,exports.createDrawInteraction=rt,exports.createElasticMarkerLayer=qe,exports.createGeoJsonLayer=it,exports.createIconStyle=K,exports.createLayerSelectByNames=Xe,exports.createMap=Pe,exports.createMapInstance=Ne,exports.createMapWorldLayer=ye,exports.createMarker=q,exports.createMarkersLayer=Ge,exports.createMassMarksLayer=$,exports.createMoveMarkerLayer=Je,exports.createOverlay=Oe,exports.createSelectByLayer=X,exports.createTdtVectorSource=ce,exports.createTdtVtsLayer=le,exports.createText=We,exports.createVectorFaceLayer=lt,exports.createVectorLineLayer=ut,exports.createWmtsLayer=_e,exports.createZheJiangLayer=xe,exports.disposeInstance=Ie,exports.disposeMap=Fe,exports.emitter=L,exports.flyToAnimate=Ue,exports.getDrawStyle=nt,exports.getLayerByName=Se,exports.getLayersDataList=fe,exports.getMapInstance=Le,Object.defineProperty(exports,"instance",{enumerable:!0,get:function(){return R}}),exports.removeAllLayers=Ae,exports.removeLayerByName=Ce,exports.removeOverlays=U,exports.resetActiveFeature=je,exports.resetActiveVector=ke,exports.resetMap=ze,exports.resetZoomAndCenter=Re,exports.setFitViewByCoords=Be,exports.setFitViewByGeom=Ve,exports.setFitViewByLayer=He,exports.updateMarksLayersByStatus=ht,Object.keys(c).forEach(function(e){e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return c[e]}})});