vue-openlayers-plugin 1.0.58 → 1.0.60

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/lib/index.umd.js CHANGED
@@ -69650,17 +69650,27 @@ ${this.attributes_.map(
69650
69650
  }
69651
69651
  const STORAGE_CONFIG = {
69652
69652
  ENABLED: false,
69653
+ // 默认禁用本地存储
69653
69654
  MAX_MEASUREMENTS: 100,
69655
+ // 减少到100条,避免过多累积
69654
69656
  MAX_LAYER_CONFIGS: 30,
69657
+ // 减少到30个,够用即可
69655
69658
  MAX_SEARCH_HISTORY: 20,
69659
+ // 新增:搜索历史限制
69656
69660
  QUOTA_WARNING_THRESHOLD: 0.6,
69661
+ // 配额警告阈值(60%)
69657
69662
  AUTO_CLEANUP_THRESHOLD: 0.7,
69663
+ // 自动清理阈值(70%)
69658
69664
  COMPRESSION_ENABLED: true,
69665
+ // 是否启用压缩
69659
69666
  BATCH_CLEANUP_SIZE: 10,
69667
+ // 减少批量清理数量
69660
69668
  // 新增:数据过期时间配置(毫秒)
69661
69669
  DATA_EXPIRY: {
69662
69670
  MEASUREMENTS: 30 * 24 * 60 * 60 * 1e3,
69671
+ // 30天
69663
69672
  MAP_STATE: 7 * 24 * 60 * 60 * 1e3,
69673
+ // 7天
69664
69674
  SEARCH_HISTORY: 7 * 24 * 60 * 60 * 1e3
69665
69675
  // 7天
69666
69676
  }
@@ -69715,7 +69725,9 @@ ${this.attributes_.map(
69715
69725
  cleanupExpiredData() {
69716
69726
  try {
69717
69727
  const measurements = this.getMeasurements();
69718
- const validMeasurements = measurements.filter((m2) => !m2.timestamp || !this.isDataExpired(m2.timestamp, "MEASUREMENTS"));
69728
+ const validMeasurements = measurements.filter(
69729
+ (m2) => !m2.timestamp || !this.isDataExpired(m2.timestamp, "MEASUREMENTS")
69730
+ );
69719
69731
  if (validMeasurements.length !== measurements.length) {
69720
69732
  this.saveMeasurements(validMeasurements);
69721
69733
  console.log(`清理过期测量结果:${measurements.length} -> ${validMeasurements.length}`);
@@ -69834,7 +69846,6 @@ ${this.attributes_.map(
69834
69846
  */
69835
69847
  safeSetItem(key2, value) {
69836
69848
  if (!this.storageEnabled) {
69837
- console.log("存储功能已禁用,跳过存储操作");
69838
69849
  return false;
69839
69850
  }
69840
69851
  try {
@@ -69901,7 +69912,7 @@ ${this.attributes_.map(
69901
69912
  timestamp: m2.timestamp || Date.now()
69902
69913
  }));
69903
69914
  const success = this.safeSetItem(this.storageKeys.MEASUREMENTS, JSON.stringify(limitedMeasurements));
69904
- if (!success) {
69915
+ if (!success && this.storageEnabled) {
69905
69916
  console.error("保存测量结果失败: 存储空间不足");
69906
69917
  }
69907
69918
  } catch (error2) {
@@ -69994,7 +70005,7 @@ ${this.attributes_.map(
69994
70005
  return optimizedConfig;
69995
70006
  });
69996
70007
  const success = this.safeSetItem(this.storageKeys.LAYER_CONFIGS, JSON.stringify(configsToSave));
69997
- if (!success) {
70008
+ if (!success && this.storageEnabled) {
69998
70009
  console.error("保存图层配置失败: 存储空间不足");
69999
70010
  }
70000
70011
  } catch (error2) {
@@ -70020,7 +70031,7 @@ ${this.attributes_.map(
70020
70031
  try {
70021
70032
  const state = { center: center2, zoom, rotation, timestamp: Date.now() };
70022
70033
  const success = this.safeSetItem(this.storageKeys.MAP_STATE, JSON.stringify(state));
70023
- if (!success) {
70034
+ if (!success && this.storageEnabled) {
70024
70035
  console.error("保存地图状态失败: 存储空间不足");
70025
70036
  }
70026
70037
  } catch (error2) {
@@ -70097,7 +70108,12 @@ ${this.attributes_.map(
70097
70108
  * 手动清理存储
70098
70109
  */
70099
70110
  manualCleanup(options = {}) {
70100
- const { clearMeasurements = false, clearLayerConfigs = false, clearMapState = false, keepRecentCount = 50 } = options;
70111
+ const {
70112
+ clearMeasurements = false,
70113
+ clearLayerConfigs = false,
70114
+ clearMapState = false,
70115
+ keepRecentCount = 50
70116
+ } = options;
70101
70117
  if (clearMeasurements) {
70102
70118
  if (keepRecentCount > 0) {
70103
70119
  const measurements = this.getMeasurements();
@@ -81915,38 +81931,38 @@ ${this.attributes_.map(
81915
81931
  this.map = map2;
81916
81932
  }
81917
81933
  }
81918
- exports2.FilterType = void 0;
81919
- (function(FilterType) {
81920
- FilterType["ATTRIBUTE"] = "attribute";
81921
- FilterType["SPATIAL"] = "spatial";
81922
- FilterType["CQL"] = "cql";
81923
- FilterType["CUSTOM"] = "custom";
81924
- })(exports2.FilterType || (exports2.FilterType = {}));
81925
- exports2.FilterOperator = void 0;
81926
- (function(FilterOperator) {
81927
- FilterOperator["EQUAL"] = "equal";
81928
- FilterOperator["NOT_EQUAL"] = "not_equal";
81929
- FilterOperator["GREATER_THAN"] = "greater_than";
81930
- FilterOperator["LESS_THAN"] = "less_than";
81931
- FilterOperator["GREATER_EQUAL"] = "greater_equal";
81932
- FilterOperator["LESS_EQUAL"] = "less_equal";
81933
- FilterOperator["LIKE"] = "like";
81934
- FilterOperator["IN"] = "in";
81935
- FilterOperator["NOT_IN"] = "not_in";
81936
- FilterOperator["BETWEEN"] = "between";
81937
- FilterOperator["IS_NULL"] = "is_null";
81938
- FilterOperator["IS_NOT_NULL"] = "is_not_null";
81939
- })(exports2.FilterOperator || (exports2.FilterOperator = {}));
81940
- exports2.SpatialFilterType = void 0;
81941
- (function(SpatialFilterType) {
81942
- SpatialFilterType["INTERSECTS"] = "intersects";
81943
- SpatialFilterType["CONTAINS"] = "contains";
81944
- SpatialFilterType["WITHIN"] = "within";
81945
- SpatialFilterType["TOUCHES"] = "touches";
81946
- SpatialFilterType["CROSSES"] = "crosses";
81947
- SpatialFilterType["OVERLAPS"] = "overlaps";
81948
- SpatialFilterType["DISJOINT"] = "disjoint";
81949
- })(exports2.SpatialFilterType || (exports2.SpatialFilterType = {}));
81934
+ var FilterType = /* @__PURE__ */ ((FilterType2) => {
81935
+ FilterType2["ATTRIBUTE"] = "attribute";
81936
+ FilterType2["SPATIAL"] = "spatial";
81937
+ FilterType2["CQL"] = "cql";
81938
+ FilterType2["CUSTOM"] = "custom";
81939
+ return FilterType2;
81940
+ })(FilterType || {});
81941
+ var FilterOperator = /* @__PURE__ */ ((FilterOperator2) => {
81942
+ FilterOperator2["EQUAL"] = "equal";
81943
+ FilterOperator2["NOT_EQUAL"] = "not_equal";
81944
+ FilterOperator2["GREATER_THAN"] = "greater_than";
81945
+ FilterOperator2["LESS_THAN"] = "less_than";
81946
+ FilterOperator2["GREATER_EQUAL"] = "greater_equal";
81947
+ FilterOperator2["LESS_EQUAL"] = "less_equal";
81948
+ FilterOperator2["LIKE"] = "like";
81949
+ FilterOperator2["IN"] = "in";
81950
+ FilterOperator2["NOT_IN"] = "not_in";
81951
+ FilterOperator2["BETWEEN"] = "between";
81952
+ FilterOperator2["IS_NULL"] = "is_null";
81953
+ FilterOperator2["IS_NOT_NULL"] = "is_not_null";
81954
+ return FilterOperator2;
81955
+ })(FilterOperator || {});
81956
+ var SpatialFilterType = /* @__PURE__ */ ((SpatialFilterType2) => {
81957
+ SpatialFilterType2["INTERSECTS"] = "intersects";
81958
+ SpatialFilterType2["CONTAINS"] = "contains";
81959
+ SpatialFilterType2["WITHIN"] = "within";
81960
+ SpatialFilterType2["TOUCHES"] = "touches";
81961
+ SpatialFilterType2["CROSSES"] = "crosses";
81962
+ SpatialFilterType2["OVERLAPS"] = "overlaps";
81963
+ SpatialFilterType2["DISJOINT"] = "disjoint";
81964
+ return SpatialFilterType2;
81965
+ })(SpatialFilterType || {});
81950
81966
  let BaseLayer$2 = class BaseLayer {
81951
81967
  constructor(config) {
81952
81968
  __publicField(this, "config");
@@ -82310,10 +82326,10 @@ ${this.attributes_.map(
82310
82326
  * @param operator 操作符
82311
82327
  * @param name 过滤器名称
82312
82328
  */
82313
- addAttributeFilter(id2, property, value, operator = exports2.FilterOperator.EQUAL, name2) {
82329
+ addAttributeFilter(id2, property, value, operator = FilterOperator.EQUAL, name2) {
82314
82330
  const filter2 = {
82315
82331
  id: id2,
82316
- type: exports2.FilterType.ATTRIBUTE,
82332
+ type: FilterType.ATTRIBUTE,
82317
82333
  enabled: true,
82318
82334
  name: name2 || `${property} ${operator} ${value}`,
82319
82335
  property,
@@ -82331,7 +82347,7 @@ ${this.attributes_.map(
82331
82347
  addCQLFilter(id2, expression, name2) {
82332
82348
  const filter2 = {
82333
82349
  id: id2,
82334
- type: exports2.FilterType.CQL,
82350
+ type: FilterType.CQL,
82335
82351
  enabled: true,
82336
82352
  name: name2 || `CQL: ${expression}`,
82337
82353
  cqlExpression: expression
@@ -82348,7 +82364,7 @@ ${this.attributes_.map(
82348
82364
  addCustomFilter(id2, filterFunction, name2, params2) {
82349
82365
  const filter2 = {
82350
82366
  id: id2,
82351
- type: exports2.FilterType.CUSTOM,
82367
+ type: FilterType.CUSTOM,
82352
82368
  enabled: true,
82353
82369
  name: name2 || `Custom Filter: ${id2}`,
82354
82370
  filterFunction
@@ -82356,8 +82372,7 @@ ${this.attributes_.map(
82356
82372
  this.addFilter(filter2);
82357
82373
  }
82358
82374
  };
82359
- var LayerType$1;
82360
- (function(LayerType2) {
82375
+ var LayerType$1 = /* @__PURE__ */ ((LayerType2) => {
82361
82376
  LayerType2["TILE"] = "tile";
82362
82377
  LayerType2["WMS"] = "wms";
82363
82378
  LayerType2["WMTS"] = "wmts";
@@ -82372,7 +82387,8 @@ ${this.attributes_.map(
82372
82387
  LayerType2["CANVAS"] = "canvas";
82373
82388
  LayerType2["IMAGE_VECTOR"] = "image_vector";
82374
82389
  LayerType2["VECTOR_TILE"] = "vector_tile";
82375
- })(LayerType$1 || (LayerType$1 = {}));
82390
+ return LayerType2;
82391
+ })(LayerType$1 || {});
82376
82392
  class TileLayerHandler extends BaseLayer$2 {
82377
82393
  constructor() {
82378
82394
  super(...arguments);
@@ -82615,17 +82631,27 @@ ${this.attributes_.map(
82615
82631
  const source = layer2.getSource();
82616
82632
  if (!source)
82617
82633
  return void 0;
82618
- return source.getFeatureInfoUrl(coordinate, resolution, projection2, {
82619
- "INFO_FORMAT": "application/json",
82620
- "FEATURE_COUNT": 10,
82621
- ...params2
82622
- });
82634
+ return source.getFeatureInfoUrl(
82635
+ coordinate,
82636
+ resolution,
82637
+ projection2,
82638
+ {
82639
+ "INFO_FORMAT": "application/json",
82640
+ "FEATURE_COUNT": 10,
82641
+ ...params2
82642
+ }
82643
+ );
82623
82644
  }
82624
82645
  /**
82625
82646
  * 通过坐标获取要素信息
82626
82647
  */
82627
82648
  async getFeatureInfoAtCoordinate(coordinate, options = {}) {
82628
- const { infoFormat = "application/json", featureCount = 10, resolution, projection: projection2 = "EPSG:3857" } = options;
82649
+ const {
82650
+ infoFormat = "application/json",
82651
+ featureCount = 10,
82652
+ resolution,
82653
+ projection: projection2 = "EPSG:3857"
82654
+ } = options;
82629
82655
  try {
82630
82656
  const map2 = this.map;
82631
82657
  if (!map2) {
@@ -82639,10 +82665,15 @@ ${this.attributes_.map(
82639
82665
  console.warn("无法获取地图分辨率");
82640
82666
  return [];
82641
82667
  }
82642
- const url = this.getFeatureInfoUrl(coordinate, currentResolution, currentProjection, {
82643
- "INFO_FORMAT": infoFormat,
82644
- "FEATURE_COUNT": featureCount
82645
- });
82668
+ const url = this.getFeatureInfoUrl(
82669
+ coordinate,
82670
+ currentResolution,
82671
+ currentProjection,
82672
+ {
82673
+ "INFO_FORMAT": infoFormat,
82674
+ "FEATURE_COUNT": featureCount
82675
+ }
82676
+ );
82646
82677
  if (!url) {
82647
82678
  console.warn("无法构建GetFeatureInfo请求URL");
82648
82679
  return [];
@@ -82719,8 +82750,8 @@ ${this.attributes_.map(
82719
82750
  */
82720
82751
  applyFilters() {
82721
82752
  const enabledFilters = this.getEnabledFilters();
82722
- const attributeFilters = enabledFilters.filter((filter2) => filter2.type === exports2.FilterType.ATTRIBUTE);
82723
- const cqlFilters = enabledFilters.filter((filter2) => filter2.type === exports2.FilterType.CQL);
82753
+ const attributeFilters = enabledFilters.filter((filter2) => filter2.type === FilterType.ATTRIBUTE);
82754
+ const cqlFilters = enabledFilters.filter((filter2) => filter2.type === FilterType.CQL);
82724
82755
  const allCQLExpressions = [];
82725
82756
  attributeFilters.forEach((filter2) => {
82726
82757
  const config = filter2;
@@ -82753,34 +82784,34 @@ ${this.attributes_.map(
82753
82784
  return null;
82754
82785
  }
82755
82786
  switch (operator) {
82756
- case exports2.FilterOperator.EQUAL:
82787
+ case FilterOperator.EQUAL:
82757
82788
  return typeof value === "string" ? `${property} = '${value}'` : `${property} = ${value}`;
82758
- case exports2.FilterOperator.NOT_EQUAL:
82789
+ case FilterOperator.NOT_EQUAL:
82759
82790
  return typeof value === "string" ? `${property} <> '${value}'` : `${property} <> ${value}`;
82760
- case exports2.FilterOperator.GREATER_THAN:
82791
+ case FilterOperator.GREATER_THAN:
82761
82792
  return `${property} > ${value}`;
82762
- case exports2.FilterOperator.GREATER_EQUAL:
82793
+ case FilterOperator.GREATER_EQUAL:
82763
82794
  return `${property} >= ${value}`;
82764
- case exports2.FilterOperator.LESS_THAN:
82795
+ case FilterOperator.LESS_THAN:
82765
82796
  return `${property} < ${value}`;
82766
- case exports2.FilterOperator.LESS_EQUAL:
82797
+ case FilterOperator.LESS_EQUAL:
82767
82798
  return `${property} <= ${value}`;
82768
- case exports2.FilterOperator.LIKE:
82799
+ case FilterOperator.LIKE:
82769
82800
  return `${property} LIKE '%${value}%'`;
82770
- case exports2.FilterOperator.IN:
82801
+ case FilterOperator.IN:
82771
82802
  if (Array.isArray(value)) {
82772
82803
  const valueList = value.map((v5) => typeof v5 === "string" ? `'${v5}'` : v5).join(",");
82773
82804
  return `${property} IN (${valueList})`;
82774
82805
  }
82775
82806
  return null;
82776
- case exports2.FilterOperator.BETWEEN:
82807
+ case FilterOperator.BETWEEN:
82777
82808
  if (Array.isArray(value) && value.length === 2) {
82778
82809
  return `${property} BETWEEN ${value[0]} AND ${value[1]}`;
82779
82810
  }
82780
82811
  return null;
82781
- case exports2.FilterOperator.IS_NULL:
82812
+ case FilterOperator.IS_NULL:
82782
82813
  return `${property} IS NULL`;
82783
- case exports2.FilterOperator.IS_NOT_NULL:
82814
+ case FilterOperator.IS_NOT_NULL:
82784
82815
  return `${property} IS NOT NULL`;
82785
82816
  default:
82786
82817
  console.warn(`WMS图层不支持的过滤器操作符: ${operator}`);
@@ -82803,7 +82834,7 @@ ${this.attributes_.map(
82803
82834
  if (filterId) {
82804
82835
  this.removeFilter(filterId);
82805
82836
  } else {
82806
- const cqlFilters = this.getAllFilters().filter((filter2) => filter2.type === exports2.FilterType.CQL);
82837
+ const cqlFilters = this.getAllFilters().filter((filter2) => filter2.type === FilterType.CQL);
82807
82838
  cqlFilters.forEach((filter2) => this.removeFilter(filter2.id));
82808
82839
  }
82809
82840
  }
@@ -83106,14 +83137,14 @@ ${this.attributes_.map(
83106
83137
  if (!this.config.wfsConfig.filters) {
83107
83138
  this.config.wfsConfig.filters = [];
83108
83139
  }
83109
- if (filter2.type === exports2.FilterType.ATTRIBUTE) {
83140
+ if (filter2.type === FilterType.ATTRIBUTE) {
83110
83141
  const config = filter2;
83111
83142
  let wfsOperator = "equalTo";
83112
83143
  switch (config.operator) {
83113
- case exports2.FilterOperator.EQUAL:
83144
+ case FilterOperator.EQUAL:
83114
83145
  wfsOperator = "equalTo";
83115
83146
  break;
83116
- case exports2.FilterOperator.LIKE:
83147
+ case FilterOperator.LIKE:
83117
83148
  wfsOperator = "like";
83118
83149
  break;
83119
83150
  default:
@@ -83149,14 +83180,14 @@ ${this.attributes_.map(
83149
83180
  }
83150
83181
  this.config.wfsConfig.filters = [];
83151
83182
  enabledFilters.forEach((filter2) => {
83152
- if (filter2.type === exports2.FilterType.ATTRIBUTE) {
83183
+ if (filter2.type === FilterType.ATTRIBUTE) {
83153
83184
  const config = filter2;
83154
83185
  let wfsOperator = "equalTo";
83155
83186
  switch (config.operator) {
83156
- case exports2.FilterOperator.EQUAL:
83187
+ case FilterOperator.EQUAL:
83157
83188
  wfsOperator = "equalTo";
83158
83189
  break;
83159
- case exports2.FilterOperator.LIKE:
83190
+ case FilterOperator.LIKE:
83160
83191
  wfsOperator = "like";
83161
83192
  break;
83162
83193
  default:
@@ -83177,7 +83208,13 @@ ${this.attributes_.map(
83177
83208
  * 便捷方法:添加WFS属性过滤器
83178
83209
  */
83179
83210
  addWFSAttributeFilter(id2, property, value, operator = "equalTo", description) {
83180
- this.addAttributeFilter(id2, property, value, operator === "equalTo" ? exports2.FilterOperator.EQUAL : exports2.FilterOperator.LIKE, description);
83211
+ this.addAttributeFilter(
83212
+ id2,
83213
+ property,
83214
+ value,
83215
+ operator === "equalTo" ? FilterOperator.EQUAL : FilterOperator.LIKE,
83216
+ description
83217
+ );
83181
83218
  }
83182
83219
  /**
83183
83220
  * 便捷方法:移除WFS过滤器
@@ -83245,8 +83282,7 @@ ${this.attributes_.map(
83245
83282
  }
83246
83283
  }
83247
83284
  }
83248
- var GeometryType$2;
83249
- (function(GeometryType2) {
83285
+ var GeometryType$2 = /* @__PURE__ */ ((GeometryType2) => {
83250
83286
  GeometryType2["POINT"] = "Point";
83251
83287
  GeometryType2["LINE_STRING"] = "LineString";
83252
83288
  GeometryType2["POLYGON"] = "Polygon";
@@ -83255,7 +83291,8 @@ ${this.attributes_.map(
83255
83291
  GeometryType2["MULTI_POLYGON"] = "MultiPolygon";
83256
83292
  GeometryType2["GEOMETRY_COLLECTION"] = "GeometryCollection";
83257
83293
  GeometryType2["CIRCLE"] = "Circle";
83258
- })(GeometryType$2 || (GeometryType$2 = {}));
83294
+ return GeometryType2;
83295
+ })(GeometryType$2 || {});
83259
83296
  class StyleFactory {
83260
83297
  /**
83261
83298
  * 创建填充样式
@@ -83295,7 +83332,6 @@ ${this.attributes_.map(
83295
83332
  const textStyle = new Text$5({
83296
83333
  text: config.text,
83297
83334
  font: config.font || `${config.fontSize || 12}px ${config.fontFamily || "Arial"}`,
83298
- scale: config.scale,
83299
83335
  fill: this.createFill(config.fill),
83300
83336
  stroke: this.createStroke(config.stroke),
83301
83337
  offsetX: config.offsetX,
@@ -83303,10 +83339,6 @@ ${this.attributes_.map(
83303
83339
  textAlign: config.textAlign,
83304
83340
  textBaseline: config.textBaseline,
83305
83341
  rotation: config.rotation,
83306
- rotateWithView: config.rotateWithView,
83307
- maxAngle: config.maxAngle,
83308
- placement: config.placement,
83309
- overflow: config.overflow,
83310
83342
  backgroundFill: this.createFill(config.backgroundFill),
83311
83343
  backgroundStroke: this.createStroke(config.backgroundStroke),
83312
83344
  padding: config.padding
@@ -83406,8 +83438,7 @@ ${this.attributes_.map(
83406
83438
  });
83407
83439
  }
83408
83440
  if (config == null ? void 0 : config.text) {
83409
- const textCfg = { placement: "line", overflow: true, ...config.text };
83410
- styleOptions.text = this.createText(textCfg);
83441
+ styleOptions.text = this.createText(config.text);
83411
83442
  }
83412
83443
  return new Style$3(styleOptions);
83413
83444
  }
@@ -83615,7 +83646,7 @@ ${this.attributes_.map(
83615
83646
  */
83616
83647
  createStyleFunction(styleConfig) {
83617
83648
  return (feature2, resolution) => {
83618
- var _a3, _b3;
83649
+ var _a3;
83619
83650
  const geometryType = StyleFactory.getFeatureGeometryType(feature2);
83620
83651
  const defaultConfig = this.getDefaultStyle(geometryType);
83621
83652
  const customConfig = styleConfig == null ? void 0 : styleConfig[geometryType];
@@ -83624,11 +83655,11 @@ ${this.attributes_.map(
83624
83655
  const textCfg = { ...finalConfig.text };
83625
83656
  let content2 = textCfg.text;
83626
83657
  if (!content2 && typeof textCfg.field === "string") {
83627
- const v5 = (_a3 = feature2 == null ? void 0 : feature2.get) == null ? void 0 : _a3.call(feature2, textCfg.field);
83658
+ const v5 = feature2.get(textCfg.field);
83628
83659
  content2 = v5 !== void 0 && v5 !== null ? String(v5) : "";
83629
83660
  }
83630
83661
  if (typeof textCfg.template === "string" && textCfg.template.length > 0) {
83631
- const props = ((_b3 = feature2 == null ? void 0 : feature2.getProperties) == null ? void 0 : _b3.call(feature2)) || {};
83662
+ const props = ((_a3 = feature2.getProperties) == null ? void 0 : _a3.call(feature2)) || {};
83632
83663
  content2 = textCfg.template.replace(/\{([^}]+)\}/g, (_m, key2) => {
83633
83664
  const v5 = props[key2];
83634
83665
  return v5 !== void 0 && v5 !== null ? String(v5) : "";
@@ -83719,6 +83750,7 @@ ${this.attributes_.map(
83719
83750
  constructor(config, map2) {
83720
83751
  super(config, map2);
83721
83752
  __publicField(this, "styleConfig");
83753
+ // 新增:缓存启用的过滤器和原始要素集合
83722
83754
  __publicField(this, "currentFilters", []);
83723
83755
  __publicField(this, "originalFeatures", []);
83724
83756
  }
@@ -83751,23 +83783,8 @@ ${this.attributes_.map(
83751
83783
  } else if (this.config.url) {
83752
83784
  const source = new VectorSource$2({
83753
83785
  url: this.config.url,
83754
- format: new GeoJSON$4({
83755
- featureProjection: mapProjection
83756
- })
83786
+ format: new GeoJSON$4({ featureProjection: mapProjection })
83757
83787
  });
83758
- try {
83759
- const logOnce = (e3) => {
83760
- var _a4, _b3;
83761
- try {
83762
- const props = ((_b3 = (_a4 = e3.feature) == null ? void 0 : _a4.getProperties) == null ? void 0 : _b3.call(_a4)) || {};
83763
- console.log("[GeoJSONLayerHandler] addfeature 属性示例:", props);
83764
- } catch (_2) {
83765
- }
83766
- source.un("addfeature", logOnce);
83767
- };
83768
- source.on("addfeature", logOnce);
83769
- } catch (e3) {
83770
- }
83771
83788
  source.on("featuresloadend", () => {
83772
83789
  this.originalFeatures = source.getFeatures();
83773
83790
  });
@@ -83781,39 +83798,16 @@ ${this.attributes_.map(
83781
83798
  */
83782
83799
  createStyleFunction() {
83783
83800
  this.parseStyleConfig();
83784
- const baseStyleFn = styleManager.createStyleFunction(this.styleConfig);
83785
- return (feature2, resolution) => {
83786
- var _a3, _b3, _c2, _d, _e2, _f;
83787
- const style = baseStyleFn(feature2, resolution);
83788
- try {
83789
- const geometry2 = (_a3 = feature2 == null ? void 0 : feature2.getGeometry) == null ? void 0 : _a3.call(feature2);
83790
- const geometryType = ((_b3 = geometry2 == null ? void 0 : geometry2.getType) == null ? void 0 : _b3.call(geometry2)) || "Point";
83791
- const textCfg = (_d = (_c2 = this.styleConfig) == null ? void 0 : _c2[geometryType]) == null ? void 0 : _d.text;
83792
- if (textCfg && this.map && typeof this.map.getView === "function") {
83793
- const z2 = (_f = (_e2 = this.map.getView()).getZoom) == null ? void 0 : _f.call(_e2);
83794
- if (typeof z2 === "number") {
83795
- const minZ = textCfg.minZoom;
83796
- const maxZ = textCfg.maxZoom;
83797
- const outOfRange = minZ != null && z2 < minZ || maxZ != null && z2 > maxZ;
83798
- if (outOfRange && typeof style.setText === "function") {
83799
- style.setText(null);
83800
- }
83801
- }
83802
- }
83803
- } catch (_2) {
83804
- }
83805
- return style;
83806
- };
83801
+ return styleManager.createStyleFunction(this.styleConfig);
83807
83802
  }
83808
83803
  /**
83809
83804
  * 解析样式配置
83810
83805
  */
83811
83806
  parseStyleConfig() {
83812
- var _a3;
83813
83807
  if (!this.styleConfig) {
83814
83808
  this.styleConfig = {};
83815
83809
  }
83816
- const style = (_a3 = this.config) == null ? void 0 : _a3.style;
83810
+ const style = this.config.style;
83817
83811
  if (style && typeof style === "object") {
83818
83812
  const polygonStyle2 = {};
83819
83813
  if (style.fill)
@@ -83823,12 +83817,12 @@ ${this.attributes_.map(
83823
83817
  if (style.text)
83824
83818
  polygonStyle2.text = style.text;
83825
83819
  if (Object.keys(polygonStyle2).length > 0) {
83826
- this.styleConfig.Polygon = {
83827
- ...this.styleConfig.Polygon || {},
83820
+ this.styleConfig[GeometryType$2.POLYGON] = {
83821
+ ...this.styleConfig[GeometryType$2.POLYGON] || {},
83828
83822
  ...polygonStyle2
83829
83823
  };
83830
- this.styleConfig.MultiPolygon = {
83831
- ...this.styleConfig.MultiPolygon || {},
83824
+ this.styleConfig[GeometryType$2.MULTI_POLYGON] = {
83825
+ ...this.styleConfig[GeometryType$2.MULTI_POLYGON] || {},
83832
83826
  ...polygonStyle2
83833
83827
  };
83834
83828
  }
@@ -83838,12 +83832,12 @@ ${this.attributes_.map(
83838
83832
  if (style.text)
83839
83833
  lineStyle2.text = style.text;
83840
83834
  if (Object.keys(lineStyle2).length > 0) {
83841
- this.styleConfig.LineString = {
83842
- ...this.styleConfig.LineString || {},
83835
+ this.styleConfig[GeometryType$2.LINE_STRING] = {
83836
+ ...this.styleConfig[GeometryType$2.LINE_STRING] || {},
83843
83837
  ...lineStyle2
83844
83838
  };
83845
- this.styleConfig.MultiLineString = {
83846
- ...this.styleConfig.MultiLineString || {},
83839
+ this.styleConfig[GeometryType$2.MULTI_LINE_STRING] = {
83840
+ ...this.styleConfig[GeometryType$2.MULTI_LINE_STRING] || {},
83847
83841
  ...lineStyle2
83848
83842
  };
83849
83843
  }
@@ -83857,12 +83851,12 @@ ${this.attributes_.map(
83857
83851
  if (style.text)
83858
83852
  pointStyle2.text = style.text;
83859
83853
  if (Object.keys(pointStyle2).length > 0) {
83860
- this.styleConfig.Point = {
83861
- ...this.styleConfig.Point || {},
83854
+ this.styleConfig[GeometryType$2.POINT] = {
83855
+ ...this.styleConfig[GeometryType$2.POINT] || {},
83862
83856
  ...pointStyle2
83863
83857
  };
83864
- this.styleConfig.MultiPoint = {
83865
- ...this.styleConfig.MultiPoint || {},
83858
+ this.styleConfig[GeometryType$2.MULTI_POINT] = {
83859
+ ...this.styleConfig[GeometryType$2.MULTI_POINT] || {},
83866
83860
  ...pointStyle2
83867
83861
  };
83868
83862
  }
@@ -83993,13 +83987,11 @@ ${this.attributes_.map(
83993
83987
  * 设置基于属性的样式
83994
83988
  */
83995
83989
  setPropertyBasedStyle(propertyName, styleMapping, defaultStyleConfig) {
83996
- const styleFunction = styleManager.createPropertyBasedStyleFunction(
83997
- propertyName,
83998
- styleMapping,
83999
- defaultStyleConfig
84000
- );
83990
+ if (defaultStyleConfig) {
83991
+ this.styleConfig = defaultStyleConfig;
83992
+ }
84001
83993
  const layer2 = this.getLayer();
84002
- layer2.setStyle(styleFunction);
83994
+ layer2.setStyle(this.createStyleFunction());
84003
83995
  }
84004
83996
  /**
84005
83997
  * 定位到图层中的所有要素
@@ -84184,7 +84176,6 @@ ${this.attributes_.map(
84184
84176
  * 应用过滤器(实现基类的抽象方法)
84185
84177
  */
84186
84178
  applyFilters() {
84187
- debugger;
84188
84179
  const layer2 = this.getLayer();
84189
84180
  const source = layer2.getSource();
84190
84181
  if (!source)
@@ -84212,11 +84203,11 @@ ${this.attributes_.map(
84212
84203
  */
84213
84204
  checkFeatureAgainstFilter(feature2, filter2) {
84214
84205
  switch (filter2.type) {
84215
- case exports2.FilterType.ATTRIBUTE:
84206
+ case FilterType.ATTRIBUTE:
84216
84207
  return this.checkAttributeFilter(feature2, filter2);
84217
- case exports2.FilterType.CQL:
84208
+ case FilterType.CQL:
84218
84209
  return this.checkCQLFilter(feature2, filter2);
84219
- case exports2.FilterType.CUSTOM:
84210
+ case FilterType.CUSTOM:
84220
84211
  const customConfig = filter2;
84221
84212
  return customConfig.filterFunction(feature2);
84222
84213
  default:
@@ -84299,30 +84290,30 @@ ${this.attributes_.map(
84299
84290
  parseSingleCQLCondition(condition, index2) {
84300
84291
  const patterns = [
84301
84292
  // property = 'value' 或 property = value
84302
- { regex: /^(\w+)\s*=\s*'([^']*)'$/, operator: exports2.FilterOperator.EQUAL },
84303
- { regex: /^(\w+)\s*=\s*([^'\s]+)$/, operator: exports2.FilterOperator.EQUAL },
84293
+ { regex: /^(\w+)\s*=\s*'([^']*)'$/, operator: FilterOperator.EQUAL },
84294
+ { regex: /^(\w+)\s*=\s*([^'\s]+)$/, operator: FilterOperator.EQUAL },
84304
84295
  // property != 'value' 或 property <> 'value'
84305
- { regex: /^(\w+)\s*(?:!=|<>)\s*'([^']*)'$/, operator: exports2.FilterOperator.NOT_EQUAL },
84306
- { regex: /^(\w+)\s*(?:!=|<>)\s*([^'\s]+)$/, operator: exports2.FilterOperator.NOT_EQUAL },
84296
+ { regex: /^(\w+)\s*(?:!=|<>)\s*'([^']*)'$/, operator: FilterOperator.NOT_EQUAL },
84297
+ { regex: /^(\w+)\s*(?:!=|<>)\s*([^'\s]+)$/, operator: FilterOperator.NOT_EQUAL },
84307
84298
  // property > value
84308
- { regex: /^(\w+)\s*>\s*([^'\s]+)$/, operator: exports2.FilterOperator.GREATER_THAN },
84299
+ { regex: /^(\w+)\s*>\s*([^'\s]+)$/, operator: FilterOperator.GREATER_THAN },
84309
84300
  // property >= value
84310
- { regex: /^(\w+)\s*>=\s*([^'\s]+)$/, operator: exports2.FilterOperator.GREATER_EQUAL },
84301
+ { regex: /^(\w+)\s*>=\s*([^'\s]+)$/, operator: FilterOperator.GREATER_EQUAL },
84311
84302
  // property < value
84312
- { regex: /^(\w+)\s*<\s*([^'\s]+)$/, operator: exports2.FilterOperator.LESS_THAN },
84303
+ { regex: /^(\w+)\s*<\s*([^'\s]+)$/, operator: FilterOperator.LESS_THAN },
84313
84304
  // property <= value
84314
- { regex: /^(\w+)\s*<=\s*([^'\s]+)$/, operator: exports2.FilterOperator.LESS_EQUAL },
84305
+ { regex: /^(\w+)\s*<=\s*([^'\s]+)$/, operator: FilterOperator.LESS_EQUAL },
84315
84306
  // property LIKE 'pattern'
84316
- { regex: /^(\w+)\s+LIKE\s+'([^']*)'$/i, operator: exports2.FilterOperator.LIKE },
84317
- // property IN ('a','b',...) 或 property IN (1,2,...)
84318
- { regex: /^(\w+)\s+IN\s*[\((]\s*([\s\S]+?)\s*[\))]\s*$/i, operator: exports2.FilterOperator.IN }
84307
+ { regex: /^(\w+)\s+LIKE\s+'([^']*)'$/i, operator: FilterOperator.LIKE },
84308
+ // property IN ('a','b',...) 或 property IN (1,2,...),支持半角/全角括号
84309
+ { regex: /^(\w+)\s+IN\s*[\((]\s*([\s\S]+?)\s*[\))]\s*$/i, operator: FilterOperator.IN }
84319
84310
  ];
84320
84311
  for (const pattern of patterns) {
84321
84312
  const match2 = condition.match(pattern.regex);
84322
84313
  if (match2) {
84323
84314
  const property = match2[1];
84324
84315
  let value = match2[2];
84325
- if (pattern.operator === exports2.FilterOperator.IN) {
84316
+ if (pattern.operator === FilterOperator.IN) {
84326
84317
  const items = String(value).split(",").map((s2) => s2.trim()).map((s2) => {
84327
84318
  const m2 = s2.match(/^'(.*)'$/);
84328
84319
  const v5 = m2 ? m2[1] : s2;
@@ -84331,7 +84322,7 @@ ${this.attributes_.map(
84331
84322
  });
84332
84323
  value = items;
84333
84324
  } else {
84334
- if (pattern.operator !== exports2.FilterOperator.LIKE && pattern.operator !== exports2.FilterOperator.EQUAL) {
84325
+ if (pattern.operator !== FilterOperator.LIKE && pattern.operator !== FilterOperator.EQUAL) {
84335
84326
  const numValue = Number(value);
84336
84327
  if (!isNaN(numValue)) {
84337
84328
  value = numValue;
@@ -84340,7 +84331,7 @@ ${this.attributes_.map(
84340
84331
  }
84341
84332
  return {
84342
84333
  id: `cql_parsed_${index2}`,
84343
- type: exports2.FilterType.ATTRIBUTE,
84334
+ type: FilterType.ATTRIBUTE,
84344
84335
  enabled: true,
84345
84336
  name: `CQL: ${condition}`,
84346
84337
  property,
@@ -84364,25 +84355,27 @@ ${this.attributes_.map(
84364
84355
  return false;
84365
84356
  }
84366
84357
  switch (operator) {
84367
- case exports2.FilterOperator.EQUAL:
84358
+ case FilterOperator.EQUAL:
84368
84359
  return featureValue === filterValue;
84369
- case exports2.FilterOperator.NOT_EQUAL:
84360
+ case FilterOperator.NOT_EQUAL:
84370
84361
  return featureValue !== filterValue;
84371
- case exports2.FilterOperator.GREATER_THAN:
84362
+ case FilterOperator.GREATER_THAN:
84372
84363
  return Number(featureValue) > Number(filterValue);
84373
- case exports2.FilterOperator.GREATER_EQUAL:
84364
+ case FilterOperator.GREATER_EQUAL:
84374
84365
  return Number(featureValue) >= Number(filterValue);
84375
- case exports2.FilterOperator.LESS_THAN:
84366
+ case FilterOperator.LESS_THAN:
84376
84367
  return Number(featureValue) < Number(filterValue);
84377
- case exports2.FilterOperator.LESS_EQUAL:
84368
+ case FilterOperator.LESS_EQUAL:
84378
84369
  return Number(featureValue) <= Number(filterValue);
84379
- case exports2.FilterOperator.LIKE:
84370
+ case FilterOperator.LIKE:
84380
84371
  const searchValue = config.caseSensitive ? filterValue : filterValue.toLowerCase();
84381
84372
  const targetValue = config.caseSensitive ? String(featureValue) : String(featureValue).toLowerCase();
84382
84373
  return targetValue.includes(searchValue);
84383
- case exports2.FilterOperator.IN:
84384
- return Array.isArray(filterValue) && filterValue.includes(featureValue);
84385
- case exports2.FilterOperator.BETWEEN:
84374
+ case FilterOperator.IN:
84375
+ if (!Array.isArray(filterValue))
84376
+ return false;
84377
+ return filterValue.some((v5) => String(v5) === String(featureValue));
84378
+ case FilterOperator.BETWEEN:
84386
84379
  if (Array.isArray(filterValue) && filterValue.length === 2) {
84387
84380
  const numValue = Number(featureValue);
84388
84381
  return numValue >= Number(filterValue[0]) && numValue <= Number(filterValue[1]);
@@ -84397,7 +84390,7 @@ ${this.attributes_.map(
84397
84390
  * 便捷方法:按属性值过滤
84398
84391
  */
84399
84392
  filterFeaturesByProperty(property, value) {
84400
- this.addAttributeFilter("legacy", property, value, exports2.FilterOperator.EQUAL, `${property} = ${value}`);
84393
+ this.addAttributeFilter("legacy", property, value, FilterOperator.EQUAL, `${property} = ${value}`);
84401
84394
  }
84402
84395
  /**
84403
84396
  * 便捷方法:清除所有过滤器
@@ -84420,6 +84413,7 @@ ${this.attributes_.map(
84420
84413
  this.kmlFormat = new KML$1({
84421
84414
  className: this.config.className,
84422
84415
  extractStyles: true,
84416
+ // 提取KML中的样式
84423
84417
  showPointNames: false
84424
84418
  // 不显示点名称
84425
84419
  });
@@ -84605,9 +84599,9 @@ ${this.attributes_.map(
84605
84599
  */
84606
84600
  checkFeatureAgainstFilter(feature2, filter2) {
84607
84601
  switch (filter2.type) {
84608
- case exports2.FilterType.ATTRIBUTE:
84602
+ case FilterType.ATTRIBUTE:
84609
84603
  return this.checkAttributeFilter(feature2, filter2);
84610
- case exports2.FilterType.CUSTOM:
84604
+ case FilterType.CUSTOM:
84611
84605
  const customConfig = filter2;
84612
84606
  return customConfig.filterFunction(feature2);
84613
84607
  default:
@@ -84621,30 +84615,30 @@ ${this.attributes_.map(
84621
84615
  checkAttributeFilter(feature2, config) {
84622
84616
  const featureValue = feature2.get(config.property);
84623
84617
  const filterValue = config.value;
84624
- const operator = config.operator || exports2.FilterOperator.EQUAL;
84618
+ const operator = config.operator || FilterOperator.EQUAL;
84625
84619
  if (featureValue === void 0 || featureValue === null) {
84626
84620
  return false;
84627
84621
  }
84628
84622
  switch (operator) {
84629
- case exports2.FilterOperator.EQUAL:
84623
+ case FilterOperator.EQUAL:
84630
84624
  return featureValue === filterValue;
84631
- case exports2.FilterOperator.NOT_EQUAL:
84625
+ case FilterOperator.NOT_EQUAL:
84632
84626
  return featureValue !== filterValue;
84633
- case exports2.FilterOperator.GREATER_THAN:
84627
+ case FilterOperator.GREATER_THAN:
84634
84628
  return Number(featureValue) > Number(filterValue);
84635
- case exports2.FilterOperator.GREATER_EQUAL:
84629
+ case FilterOperator.GREATER_EQUAL:
84636
84630
  return Number(featureValue) >= Number(filterValue);
84637
- case exports2.FilterOperator.LESS_THAN:
84631
+ case FilterOperator.LESS_THAN:
84638
84632
  return Number(featureValue) < Number(filterValue);
84639
- case exports2.FilterOperator.LESS_EQUAL:
84633
+ case FilterOperator.LESS_EQUAL:
84640
84634
  return Number(featureValue) <= Number(filterValue);
84641
- case exports2.FilterOperator.LIKE:
84635
+ case FilterOperator.LIKE:
84642
84636
  const searchValue = config.caseSensitive ? filterValue : filterValue.toLowerCase();
84643
84637
  const targetValue = config.caseSensitive ? String(featureValue) : String(featureValue).toLowerCase();
84644
84638
  return targetValue.includes(searchValue);
84645
- case exports2.FilterOperator.IN:
84639
+ case FilterOperator.IN:
84646
84640
  return Array.isArray(filterValue) && filterValue.includes(featureValue);
84647
- case exports2.FilterOperator.BETWEEN:
84641
+ case FilterOperator.BETWEEN:
84648
84642
  if (Array.isArray(filterValue) && filterValue.length === 2) {
84649
84643
  const numValue = Number(featureValue);
84650
84644
  return numValue >= Number(filterValue[0]) && numValue <= Number(filterValue[1]);
@@ -84660,7 +84654,7 @@ ${this.attributes_.map(
84660
84654
  * @deprecated 建议使用 addAttributeFilter 方法
84661
84655
  */
84662
84656
  filterFeaturesByProperty(property, value) {
84663
- this.addAttributeFilter("legacy", property, value, exports2.FilterOperator.EQUAL, `${property} = ${value}`);
84657
+ this.addAttributeFilter("legacy", property, value, FilterOperator.EQUAL, `${property} = ${value}`);
84664
84658
  }
84665
84659
  /**
84666
84660
  * 便捷方法:清除所有过滤器(保持向后兼容)
@@ -84929,9 +84923,9 @@ ${this.attributes_.map(
84929
84923
  */
84930
84924
  checkFeatureAgainstFilter(feature2, filter2) {
84931
84925
  switch (filter2.type) {
84932
- case exports2.FilterType.ATTRIBUTE:
84926
+ case FilterType.ATTRIBUTE:
84933
84927
  return this.checkAttributeFilter(feature2, filter2);
84934
- case exports2.FilterType.CUSTOM:
84928
+ case FilterType.CUSTOM:
84935
84929
  const customConfig = filter2;
84936
84930
  return customConfig.filterFunction(feature2);
84937
84931
  default:
@@ -84945,30 +84939,30 @@ ${this.attributes_.map(
84945
84939
  checkAttributeFilter(feature2, config) {
84946
84940
  const featureValue = feature2.get(config.property);
84947
84941
  const filterValue = config.value;
84948
- const operator = config.operator || exports2.FilterOperator.EQUAL;
84942
+ const operator = config.operator || FilterOperator.EQUAL;
84949
84943
  if (featureValue === void 0 || featureValue === null) {
84950
84944
  return false;
84951
84945
  }
84952
84946
  switch (operator) {
84953
- case exports2.FilterOperator.EQUAL:
84947
+ case FilterOperator.EQUAL:
84954
84948
  return featureValue === filterValue;
84955
- case exports2.FilterOperator.NOT_EQUAL:
84949
+ case FilterOperator.NOT_EQUAL:
84956
84950
  return featureValue !== filterValue;
84957
- case exports2.FilterOperator.GREATER_THAN:
84951
+ case FilterOperator.GREATER_THAN:
84958
84952
  return Number(featureValue) > Number(filterValue);
84959
- case exports2.FilterOperator.GREATER_EQUAL:
84953
+ case FilterOperator.GREATER_EQUAL:
84960
84954
  return Number(featureValue) >= Number(filterValue);
84961
- case exports2.FilterOperator.LESS_THAN:
84955
+ case FilterOperator.LESS_THAN:
84962
84956
  return Number(featureValue) < Number(filterValue);
84963
- case exports2.FilterOperator.LESS_EQUAL:
84957
+ case FilterOperator.LESS_EQUAL:
84964
84958
  return Number(featureValue) <= Number(filterValue);
84965
- case exports2.FilterOperator.LIKE:
84959
+ case FilterOperator.LIKE:
84966
84960
  const searchValue = config.caseSensitive ? filterValue : filterValue.toLowerCase();
84967
84961
  const targetValue = config.caseSensitive ? String(featureValue) : String(featureValue).toLowerCase();
84968
84962
  return targetValue.includes(searchValue);
84969
- case exports2.FilterOperator.IN:
84963
+ case FilterOperator.IN:
84970
84964
  return Array.isArray(filterValue) && filterValue.includes(featureValue);
84971
- case exports2.FilterOperator.BETWEEN:
84965
+ case FilterOperator.BETWEEN:
84972
84966
  if (Array.isArray(filterValue) && filterValue.length === 2) {
84973
84967
  const numValue = Number(featureValue);
84974
84968
  return numValue >= Number(filterValue[0]) && numValue <= Number(filterValue[1]);
@@ -84984,7 +84978,7 @@ ${this.attributes_.map(
84984
84978
  * @deprecated 建议使用 addAttributeFilter 方法
84985
84979
  */
84986
84980
  filterFeaturesByProperty(property, value) {
84987
- this.addAttributeFilter("legacy", property, value, exports2.FilterOperator.EQUAL, `${property} = ${value}`);
84981
+ this.addAttributeFilter("legacy", property, value, FilterOperator.EQUAL, `${property} = ${value}`);
84988
84982
  }
84989
84983
  /**
84990
84984
  * 便捷方法:清除所有过滤器(保持向后兼容)
@@ -85322,9 +85316,9 @@ ${this.attributes_.map(
85322
85316
  */
85323
85317
  checkFeatureAgainstFilter(feature2, filter2) {
85324
85318
  switch (filter2.type) {
85325
- case exports2.FilterType.ATTRIBUTE:
85319
+ case FilterType.ATTRIBUTE:
85326
85320
  return this.checkAttributeFilter(feature2, filter2);
85327
- case exports2.FilterType.CUSTOM:
85321
+ case FilterType.CUSTOM:
85328
85322
  const customConfig = filter2;
85329
85323
  return customConfig.filterFunction(feature2);
85330
85324
  default:
@@ -85338,30 +85332,30 @@ ${this.attributes_.map(
85338
85332
  checkAttributeFilter(feature2, config) {
85339
85333
  const featureValue = feature2.get(config.property);
85340
85334
  const filterValue = config.value;
85341
- const operator = config.operator || exports2.FilterOperator.EQUAL;
85335
+ const operator = config.operator || FilterOperator.EQUAL;
85342
85336
  if (featureValue === void 0 || featureValue === null) {
85343
85337
  return false;
85344
85338
  }
85345
85339
  switch (operator) {
85346
- case exports2.FilterOperator.EQUAL:
85340
+ case FilterOperator.EQUAL:
85347
85341
  return featureValue === filterValue;
85348
- case exports2.FilterOperator.NOT_EQUAL:
85342
+ case FilterOperator.NOT_EQUAL:
85349
85343
  return featureValue !== filterValue;
85350
- case exports2.FilterOperator.GREATER_THAN:
85344
+ case FilterOperator.GREATER_THAN:
85351
85345
  return Number(featureValue) > Number(filterValue);
85352
- case exports2.FilterOperator.GREATER_EQUAL:
85346
+ case FilterOperator.GREATER_EQUAL:
85353
85347
  return Number(featureValue) >= Number(filterValue);
85354
- case exports2.FilterOperator.LESS_THAN:
85348
+ case FilterOperator.LESS_THAN:
85355
85349
  return Number(featureValue) < Number(filterValue);
85356
- case exports2.FilterOperator.LESS_EQUAL:
85350
+ case FilterOperator.LESS_EQUAL:
85357
85351
  return Number(featureValue) <= Number(filterValue);
85358
- case exports2.FilterOperator.LIKE:
85352
+ case FilterOperator.LIKE:
85359
85353
  const searchValue = config.caseSensitive ? filterValue : filterValue.toLowerCase();
85360
85354
  const targetValue = config.caseSensitive ? String(featureValue) : String(featureValue).toLowerCase();
85361
85355
  return targetValue.includes(searchValue);
85362
- case exports2.FilterOperator.IN:
85356
+ case FilterOperator.IN:
85363
85357
  return Array.isArray(filterValue) && filterValue.includes(featureValue);
85364
- case exports2.FilterOperator.BETWEEN:
85358
+ case FilterOperator.BETWEEN:
85365
85359
  if (Array.isArray(filterValue) && filterValue.length === 2) {
85366
85360
  const numValue = Number(featureValue);
85367
85361
  return numValue >= Number(filterValue[0]) && numValue <= Number(filterValue[1]);
@@ -85377,7 +85371,7 @@ ${this.attributes_.map(
85377
85371
  * @deprecated 建议使用 addAttributeFilter 方法
85378
85372
  */
85379
85373
  filterFeaturesByProperty(property, value) {
85380
- this.addAttributeFilter("legacy", property, value, exports2.FilterOperator.EQUAL, `${property} = ${value}`);
85374
+ this.addAttributeFilter("legacy", property, value, FilterOperator.EQUAL, `${property} = ${value}`);
85381
85375
  }
85382
85376
  /**
85383
85377
  * 便捷方法:清除所有过滤器(保持向后兼容)
@@ -85501,9 +85495,9 @@ ${this.attributes_.map(
85501
85495
  */
85502
85496
  checkFeatureAgainstFilter(feature2, filter2) {
85503
85497
  switch (filter2.type) {
85504
- case exports2.FilterType.ATTRIBUTE:
85498
+ case FilterType.ATTRIBUTE:
85505
85499
  return this.checkAttributeFilter(feature2, filter2.config);
85506
- case exports2.FilterType.CQL:
85500
+ case FilterType.CQL:
85507
85501
  console.warn("HeatmapLayerHandler: CQL过滤器暂不支持");
85508
85502
  return true;
85509
85503
  default:
@@ -85518,39 +85512,39 @@ ${this.attributes_.map(
85518
85512
  const properties = feature2.getProperties();
85519
85513
  const value = properties[config.property];
85520
85514
  if (value === void 0 || value === null) {
85521
- return config.operator === exports2.FilterOperator.IS_NULL;
85515
+ return config.operator === FilterOperator.IS_NULL;
85522
85516
  }
85523
85517
  switch (config.operator) {
85524
- case exports2.FilterOperator.EQUAL:
85518
+ case FilterOperator.EQUAL:
85525
85519
  return String(value) === String(config.value);
85526
- case exports2.FilterOperator.NOT_EQUAL:
85520
+ case FilterOperator.NOT_EQUAL:
85527
85521
  return String(value) !== String(config.value);
85528
- case exports2.FilterOperator.GREATER_THAN:
85522
+ case FilterOperator.GREATER_THAN:
85529
85523
  return Number(value) > Number(config.value);
85530
- case exports2.FilterOperator.LESS_THAN:
85524
+ case FilterOperator.LESS_THAN:
85531
85525
  return Number(value) < Number(config.value);
85532
- case exports2.FilterOperator.GREATER_EQUAL:
85526
+ case FilterOperator.GREATER_EQUAL:
85533
85527
  return Number(value) >= Number(config.value);
85534
- case exports2.FilterOperator.LESS_EQUAL:
85528
+ case FilterOperator.LESS_EQUAL:
85535
85529
  return Number(value) <= Number(config.value);
85536
- case exports2.FilterOperator.LIKE:
85530
+ case FilterOperator.LIKE:
85537
85531
  const pattern = String(config.value).replace(/%/g, ".*");
85538
85532
  const regex = new RegExp(pattern, "i");
85539
85533
  return regex.test(String(value));
85540
- case exports2.FilterOperator.IN:
85534
+ case FilterOperator.IN:
85541
85535
  if (Array.isArray(config.value)) {
85542
85536
  return config.value.includes(value);
85543
85537
  }
85544
85538
  return false;
85545
- case exports2.FilterOperator.BETWEEN:
85539
+ case FilterOperator.BETWEEN:
85546
85540
  if (Array.isArray(config.value) && config.value.length === 2) {
85547
85541
  const numValue = Number(value);
85548
85542
  return numValue >= Number(config.value[0]) && numValue <= Number(config.value[1]);
85549
85543
  }
85550
85544
  return false;
85551
- case exports2.FilterOperator.IS_NULL:
85545
+ case FilterOperator.IS_NULL:
85552
85546
  return false;
85553
- case exports2.FilterOperator.IS_NOT_NULL:
85547
+ case FilterOperator.IS_NOT_NULL:
85554
85548
  return true;
85555
85549
  default:
85556
85550
  console.warn("HeatmapLayerHandler: 未知的属性过滤操作符:", config.operator);
@@ -85560,7 +85554,7 @@ ${this.attributes_.map(
85560
85554
  /**
85561
85555
  * 根据属性过滤要素(便捷方法)
85562
85556
  */
85563
- filterFeaturesByProperty(property, value, operator = exports2.FilterOperator.EQUAL) {
85557
+ filterFeaturesByProperty(property, value, operator = FilterOperator.EQUAL) {
85564
85558
  const id2 = `heatmap-attr-${property}-${Date.now()}`;
85565
85559
  this.addAttributeFilter(id2, property, value, operator);
85566
85560
  }
@@ -85746,9 +85740,9 @@ ${this.attributes_.map(
85746
85740
  */
85747
85741
  checkFeatureAgainstFilter(feature2, filter2) {
85748
85742
  switch (filter2.type) {
85749
- case exports2.FilterType.ATTRIBUTE:
85743
+ case FilterType.ATTRIBUTE:
85750
85744
  return this.checkAttributeFilter(feature2, filter2.config);
85751
- case exports2.FilterType.CQL:
85745
+ case FilterType.CQL:
85752
85746
  console.warn("ClusterLayerHandler: CQL过滤器暂不支持");
85753
85747
  return true;
85754
85748
  default:
@@ -85763,39 +85757,39 @@ ${this.attributes_.map(
85763
85757
  const properties = feature2.getProperties();
85764
85758
  const value = properties[config.property];
85765
85759
  if (value === void 0 || value === null) {
85766
- return config.operator === exports2.FilterOperator.IS_NULL;
85760
+ return config.operator === FilterOperator.IS_NULL;
85767
85761
  }
85768
85762
  switch (config.operator) {
85769
- case exports2.FilterOperator.EQUAL:
85763
+ case FilterOperator.EQUAL:
85770
85764
  return String(value) === String(config.value);
85771
- case exports2.FilterOperator.NOT_EQUAL:
85765
+ case FilterOperator.NOT_EQUAL:
85772
85766
  return String(value) !== String(config.value);
85773
- case exports2.FilterOperator.GREATER_THAN:
85767
+ case FilterOperator.GREATER_THAN:
85774
85768
  return Number(value) > Number(config.value);
85775
- case exports2.FilterOperator.LESS_THAN:
85769
+ case FilterOperator.LESS_THAN:
85776
85770
  return Number(value) < Number(config.value);
85777
- case exports2.FilterOperator.GREATER_EQUAL:
85771
+ case FilterOperator.GREATER_EQUAL:
85778
85772
  return Number(value) >= Number(config.value);
85779
- case exports2.FilterOperator.LESS_EQUAL:
85773
+ case FilterOperator.LESS_EQUAL:
85780
85774
  return Number(value) <= Number(config.value);
85781
- case exports2.FilterOperator.LIKE:
85775
+ case FilterOperator.LIKE:
85782
85776
  const pattern = String(config.value).replace(/%/g, ".*");
85783
85777
  const regex = new RegExp(pattern, "i");
85784
85778
  return regex.test(String(value));
85785
- case exports2.FilterOperator.IN:
85779
+ case FilterOperator.IN:
85786
85780
  if (Array.isArray(config.value)) {
85787
85781
  return config.value.includes(value);
85788
85782
  }
85789
85783
  return false;
85790
- case exports2.FilterOperator.BETWEEN:
85784
+ case FilterOperator.BETWEEN:
85791
85785
  if (Array.isArray(config.value) && config.value.length === 2) {
85792
85786
  const numValue = Number(value);
85793
85787
  return numValue >= Number(config.value[0]) && numValue <= Number(config.value[1]);
85794
85788
  }
85795
85789
  return false;
85796
- case exports2.FilterOperator.IS_NULL:
85790
+ case FilterOperator.IS_NULL:
85797
85791
  return false;
85798
- case exports2.FilterOperator.IS_NOT_NULL:
85792
+ case FilterOperator.IS_NOT_NULL:
85799
85793
  return true;
85800
85794
  default:
85801
85795
  console.warn("ClusterLayerHandler: 未知的属性过滤操作符:", config.operator);
@@ -85805,7 +85799,7 @@ ${this.attributes_.map(
85805
85799
  /**
85806
85800
  * 根据属性过滤要素(便捷方法)
85807
85801
  */
85808
- filterFeaturesByProperty(property, value, operator = exports2.FilterOperator.EQUAL) {
85802
+ filterFeaturesByProperty(property, value, operator = FilterOperator.EQUAL) {
85809
85803
  const id2 = `cluster-attr-${property}-${Date.now()}`;
85810
85804
  this.addAttributeFilter(id2, property, value, operator);
85811
85805
  }
@@ -85839,7 +85833,10 @@ ${this.attributes_.map(
85839
85833
  */
85840
85834
  createClusterStyleFunction() {
85841
85835
  this.parseStyleConfig();
85842
- return styleManager.createClusterStyleFunction(this.clusterStyleConfig, this.singleFeatureStyleConfig);
85836
+ return styleManager.createClusterStyleFunction(
85837
+ this.clusterStyleConfig,
85838
+ this.singleFeatureStyleConfig
85839
+ );
85843
85840
  }
85844
85841
  /**
85845
85842
  * 解析样式配置
@@ -85859,6 +85856,7 @@ ${this.attributes_.map(
85859
85856
  return {
85860
85857
  circle: {
85861
85858
  radius: 15,
85859
+ // 动态半径将在样式管理器中处理
85862
85860
  fill: { color: legacyStyle.clusterFillColor || "rgba(255, 153, 0, 0.8)" },
85863
85861
  stroke: {
85864
85862
  color: legacyStyle.clusterStrokeColor || "#fff",
@@ -86033,9 +86031,13 @@ ${this.attributes_.map(
86033
86031
  style: this.createStyleFunction(),
86034
86032
  // ImageVector图层特有的配置
86035
86033
  imageRatio: this.config.imageRatio || 1,
86034
+ // 图像比率,用于高分辨率显示
86036
86035
  renderBuffer: this.config.renderBuffer || 100,
86036
+ // 渲染缓冲区
86037
86037
  renderOrder: this.config.renderOrder,
86038
+ // 渲染顺序
86038
86039
  background: this.config.background,
86040
+ // 背景色
86039
86041
  declutter: this.config.declutter || false
86040
86042
  // 是否启用标注避让
86041
86043
  });
@@ -86144,7 +86146,11 @@ ${this.attributes_.map(
86144
86146
  * 设置基于属性的样式
86145
86147
  */
86146
86148
  setPropertyBasedStyle(propertyName, styleMapping, defaultStyleConfig) {
86147
- const styleFunction = styleManager.createPropertyBasedStyleFunction(propertyName, styleMapping, defaultStyleConfig);
86149
+ const styleFunction = styleManager.createPropertyBasedStyleFunction(
86150
+ propertyName,
86151
+ styleMapping,
86152
+ defaultStyleConfig
86153
+ );
86148
86154
  const layer2 = this.getLayer();
86149
86155
  layer2.setStyle(styleFunction);
86150
86156
  }
@@ -86269,6 +86275,7 @@ ${this.attributes_.map(
86269
86275
  xyzOptions.tileGrid = new TileGrid$3({
86270
86276
  extent: extent3,
86271
86277
  origin: [-180, 90],
86278
+ // 左上角原点
86272
86279
  resolutions: this.generateResolutions(),
86273
86280
  tileSize: [256, 256]
86274
86281
  });
@@ -465377,9 +465384,13 @@ ${this.attributes_.map(
465377
465384
  if (config.center && config.center.length >= 2) {
465378
465385
  const layerCenter = config.center;
465379
465386
  const isInView = layerCenter[0] >= mapExtent[0] && layerCenter[0] <= mapExtent[2] && layerCenter[1] >= mapExtent[1] && layerCenter[1] <= mapExtent[3];
465380
- console.log(`图层中心点 [${layerCenter[0]}, ${layerCenter[1]}] 是否在当前视图内: ${isInView}`);
465387
+ console.log(
465388
+ `图层中心点 [${layerCenter[0]}, ${layerCenter[1]}] 是否在当前视图内: ${isInView}`
465389
+ );
465381
465390
  if (!isInView) {
465382
- console.warn(`⚠️ 图层 ${config.name} 的中心点不在当前地图视图范围内,可能需要缩放到图层位置`);
465391
+ console.warn(
465392
+ `⚠️ 图层 ${config.name} 的中心点不在当前地图视图范围内,可能需要缩放到图层位置`
465393
+ );
465383
465394
  }
465384
465395
  }
465385
465396
  }
@@ -465391,7 +465402,9 @@ ${this.attributes_.map(
465391
465402
  if (this.styleApplied || this.styleApplyAttempts >= this.maxStyleApplyAttempts)
465392
465403
  return;
465393
465404
  this.styleApplyAttempts++;
465394
- console.log(`尝试应用样式到SuperMap图层 ${this.config.name},第 ${this.styleApplyAttempts} 次`);
465405
+ console.log(
465406
+ `尝试应用样式到SuperMap图层 ${this.config.name},第 ${this.styleApplyAttempts} 次`
465407
+ );
465395
465408
  setTimeout(() => {
465396
465409
  if (this.layer && this.config.style) {
465397
465410
  try {
@@ -465399,7 +465412,10 @@ ${this.attributes_.map(
465399
465412
  this.styleApplied = true;
465400
465413
  console.log(`成功应用样式到SuperMap图层 ${this.config.name}`);
465401
465414
  } catch (error2) {
465402
- console.warn(`应用样式到SuperMap图层 ${this.config.name} 失败:`, error2);
465415
+ console.warn(
465416
+ `应用样式到SuperMap图层 ${this.config.name} 失败:`,
465417
+ error2
465418
+ );
465403
465419
  if (this.styleApplyAttempts < this.maxStyleApplyAttempts) {
465404
465420
  setTimeout(() => this.tryApplyStyles(), 500);
465405
465421
  }
@@ -465452,6 +465468,7 @@ ${this.attributes_.map(
465452
465468
  const sourceOptions = {
465453
465469
  url: config.url,
465454
465470
  wrapX: true,
465471
+ // SuperMap服务通常不需要wrapX
465455
465472
  format: config.format || "webp"
465456
465473
  };
465457
465474
  try {
@@ -465492,13 +465509,19 @@ ${this.attributes_.map(
465492
465509
  console.log("📏 瓦片大小:", tileSize);
465493
465510
  } else {
465494
465511
  console.warn("map.json中没有bounds信息,使用默认配置");
465495
- const tileGrid = await this.createTileGrid(projection2.getCode(), config);
465512
+ const tileGrid = await this.createTileGrid(
465513
+ projection2.getCode(),
465514
+ config
465515
+ );
465496
465516
  if (tileGrid)
465497
465517
  sourceOptions.tileGrid = tileGrid;
465498
465518
  }
465499
465519
  } else {
465500
465520
  console.warn(`无法获取map.json (${response.status}), 使用默认配置`);
465501
- const tileGrid = await this.createTileGrid(projection2.getCode(), config);
465521
+ const tileGrid = await this.createTileGrid(
465522
+ projection2.getCode(),
465523
+ config
465524
+ );
465502
465525
  if (tileGrid)
465503
465526
  sourceOptions.tileGrid = tileGrid;
465504
465527
  }
@@ -465535,6 +465558,7 @@ ${this.attributes_.map(
465535
465558
  origin,
465536
465559
  extent: extent3,
465537
465560
  resolutions,
465561
+ // 只显示前5个分辨率
465538
465562
  tileSize,
465539
465563
  configOrigin: config.origin,
465540
465564
  calculatedOrigin: [extent3[0], extent3[3]]
@@ -465681,7 +465705,12 @@ ${this.attributes_.map(
465681
465705
  * @returns Promise<any[]> 查询到的要素数组
465682
465706
  */
465683
465707
  async queryFeatureByPointOL(lon2, lat2, options = {}) {
465684
- const { datasetNames = ["hms:Football_field"], serviceUrl = "http://172.16.201.151/iserver/services/data-hms-public/rest/data", tolerance: tolerance2 = 0.027, vectorLayer = null } = options;
465708
+ const {
465709
+ datasetNames = ["hms:Football_field"],
465710
+ serviceUrl = "http://172.16.201.151/iserver/services/data-hms-public/rest/data",
465711
+ tolerance: tolerance2 = 0.027,
465712
+ vectorLayer = null
465713
+ } = options;
465685
465714
  const point2 = new Point$c([lon2, lat2]);
465686
465715
  let smGeom = Util.toSuperMapGeometry(point2);
465687
465716
  if (!smGeom) {
@@ -465701,36 +465730,39 @@ ${this.attributes_.map(
465701
465730
  // tolerance 参数在此版本中不支持,已移除
465702
465731
  });
465703
465732
  return new Promise((resolve, reject2) => {
465704
- new FeatureService(serviceUrl).getFeaturesByGeometry(queryParams, (result) => {
465705
- var _a3, _b3, _c2;
465706
- if (result.error) {
465707
- console.error("iServer 错误:", result.error);
465708
- reject2(result.error);
465709
- return;
465710
- }
465711
- const rawFeatures = ((_b3 = (_a3 = result.result) == null ? void 0 : _a3.features) == null ? void 0 : _b3.features) || [];
465712
- console.log("SuperMap查询结果:", result);
465713
- console.log("原始要素数组:", rawFeatures);
465714
- const features2 = rawFeatures.map((feature2) => {
465715
- console.log("转换前的SuperMap要素:", feature2);
465716
- console.log("要素的fieldNames:", feature2.fieldNames);
465717
- console.log("要素的fieldValues:", feature2.fieldValues);
465718
- const transformedFeature = this.transformSupermapFeature(feature2);
465719
- console.log("转换后的标准要素:", transformedFeature);
465720
- console.log("转换后的properties:", transformedFeature.properties);
465721
- return transformedFeature;
465722
- });
465723
- if (vectorLayer) {
465724
- (_c2 = vectorLayer.getSource()) == null ? void 0 : _c2.clear();
465725
- features2.forEach((f2) => {
465726
- var _a4;
465727
- const olFeat = new ol$1.Feature(Util.toSuperMapGeometry(f2.geometry));
465728
- olFeat.setProperties(f2.properties || {});
465729
- (_a4 = vectorLayer.getSource()) == null ? void 0 : _a4.addFeature(olFeat);
465733
+ new FeatureService(serviceUrl).getFeaturesByGeometry(
465734
+ queryParams,
465735
+ (result) => {
465736
+ var _a3, _b3, _c2;
465737
+ if (result.error) {
465738
+ console.error("iServer 错误:", result.error);
465739
+ reject2(result.error);
465740
+ return;
465741
+ }
465742
+ const rawFeatures = ((_b3 = (_a3 = result.result) == null ? void 0 : _a3.features) == null ? void 0 : _b3.features) || [];
465743
+ console.log("SuperMap查询结果:", result);
465744
+ console.log("原始要素数组:", rawFeatures);
465745
+ const features2 = rawFeatures.map((feature2) => {
465746
+ console.log("转换前的SuperMap要素:", feature2);
465747
+ console.log("要素的fieldNames:", feature2.fieldNames);
465748
+ console.log("要素的fieldValues:", feature2.fieldValues);
465749
+ const transformedFeature = this.transformSupermapFeature(feature2);
465750
+ console.log("转换后的标准要素:", transformedFeature);
465751
+ console.log("转换后的properties:", transformedFeature.properties);
465752
+ return transformedFeature;
465730
465753
  });
465754
+ if (vectorLayer) {
465755
+ (_c2 = vectorLayer.getSource()) == null ? void 0 : _c2.clear();
465756
+ features2.forEach((f2) => {
465757
+ var _a4;
465758
+ const olFeat = new ol$1.Feature(Util.toSuperMapGeometry(f2.geometry));
465759
+ olFeat.setProperties(f2.properties || {});
465760
+ (_a4 = vectorLayer.getSource()) == null ? void 0 : _a4.addFeature(olFeat);
465761
+ });
465762
+ }
465763
+ resolve(features2);
465731
465764
  }
465732
- resolve(features2);
465733
- });
465765
+ );
465734
465766
  });
465735
465767
  }
465736
465768
  /**
@@ -465742,7 +465774,12 @@ ${this.attributes_.map(
465742
465774
  */
465743
465775
  async getFeaturesByBuffer(lon2 = 93.53179023100006, lat2 = 42.81598224900006, options = {}) {
465744
465776
  try {
465745
- const { bufferDistance = 0.027, datasetNames = ["hms:Football_field"], serviceUrl = "http://172.16.201.151/iserver/services/data-hms-public/rest/data", vectorLayer = null } = options;
465777
+ const {
465778
+ bufferDistance = 0.027,
465779
+ datasetNames = ["hms:Football_field"],
465780
+ serviceUrl = "http://172.16.201.151/iserver/services/data-hms-public/rest/data",
465781
+ vectorLayer = null
465782
+ } = options;
465746
465783
  const olPoint = new Point$c([lon2, lat2]);
465747
465784
  let smGeom = Util.toSuperMapGeometry(olPoint);
465748
465785
  console.log("Util.toSuperMapGeometry ->", smGeom);
@@ -465752,46 +465789,54 @@ ${this.attributes_.map(
465752
465789
  smGeom = new SuperMap2.Geometry.Point(lon2, lat2);
465753
465790
  console.log("使用全局 SuperMap.Geometry.Point 构建 smGeom:", smGeom);
465754
465791
  } else {
465755
- console.warn("无法取得全局 SuperMap,无法构造 SuperMap.Geometry.Point。建议使用方案A的 REST 调用绕开。");
465792
+ console.warn(
465793
+ "无法取得全局 SuperMap,无法构造 SuperMap.Geometry.Point。建议使用方案A的 REST 调用绕开。"
465794
+ );
465756
465795
  }
465757
465796
  }
465758
465797
  if (!smGeom) {
465759
- console.error("无法构建 SuperMap Geometry(smGeom 为 null)。请使用方案A 或检查 iClient 的引入方式。");
465798
+ console.error(
465799
+ "无法构建 SuperMap Geometry(smGeom 为 null)。请使用方案A 或检查 iClient 的引入方式。"
465800
+ );
465760
465801
  return [];
465761
465802
  }
465762
465803
  const bufferParams = new GetFeaturesByBufferParameters({
465763
465804
  datasetNames,
465764
465805
  bufferDistance,
465806
+ // 举例(300m ≈ 0.0027°),注意单位和坐标系一致
465765
465807
  geometry: smGeom,
465766
465808
  spatialQueryMode: "INTERSECT"
465767
465809
  });
465768
465810
  return new Promise((resolve, reject2) => {
465769
- new FeatureService(serviceUrl).getFeaturesByBuffer(bufferParams, (serviceResult) => {
465770
- var _a3, _b3, _c2, _d;
465771
- console.log("serviceResult:", serviceResult);
465772
- if (serviceResult.error) {
465773
- console.error("iServer error:", serviceResult.error);
465774
- reject2(new Error("iServer 返回错误,详见控制台"));
465775
- return;
465776
- }
465777
- const rawFeatures = ((_b3 = (_a3 = serviceResult.result) == null ? void 0 : _a3.features) == null ? void 0 : _b3.features) || [];
465778
- const feats = rawFeatures.map((f2) => {
465779
- const transformedFeature = this.transformSupermapFeature(f2);
465780
- console.log("Buffer查询 - 转换前的SuperMap数据:", f2);
465781
- console.log("Buffer查询 - 转换后的标准数据:", transformedFeature);
465782
- const olFeat = new ol$1.Feature(Util.toSuperMapGeometry(f2.geometry));
465783
- olFeat.setProperties(transformedFeature.properties || {});
465784
- return olFeat;
465785
- });
465786
- if (vectorLayer) {
465787
- (_c2 = vectorLayer.getSource()) == null ? void 0 : _c2.clear();
465788
- if (feats.length) {
465789
- (_d = vectorLayer.getSource()) == null ? void 0 : _d.addFeatures(feats);
465811
+ new FeatureService(serviceUrl).getFeaturesByBuffer(
465812
+ bufferParams,
465813
+ (serviceResult) => {
465814
+ var _a3, _b3, _c2, _d;
465815
+ console.log("serviceResult:", serviceResult);
465816
+ if (serviceResult.error) {
465817
+ console.error("iServer error:", serviceResult.error);
465818
+ reject2(new Error("iServer 返回错误,详见控制台"));
465819
+ return;
465790
465820
  }
465821
+ const rawFeatures = ((_b3 = (_a3 = serviceResult.result) == null ? void 0 : _a3.features) == null ? void 0 : _b3.features) || [];
465822
+ const feats = rawFeatures.map((f2) => {
465823
+ const transformedFeature = this.transformSupermapFeature(f2);
465824
+ console.log("Buffer查询 - 转换前的SuperMap数据:", f2);
465825
+ console.log("Buffer查询 - 转换后的标准数据:", transformedFeature);
465826
+ const olFeat = new ol$1.Feature(Util.toSuperMapGeometry(f2.geometry));
465827
+ olFeat.setProperties(transformedFeature.properties || {});
465828
+ return olFeat;
465829
+ });
465830
+ if (vectorLayer) {
465831
+ (_c2 = vectorLayer.getSource()) == null ? void 0 : _c2.clear();
465832
+ if (feats.length) {
465833
+ (_d = vectorLayer.getSource()) == null ? void 0 : _d.addFeatures(feats);
465834
+ }
465835
+ }
465836
+ console.log("查询并绘制完成,count:", feats.length);
465837
+ resolve(feats);
465791
465838
  }
465792
- console.log("查询并绘制完成,count:", feats.length);
465793
- resolve(feats);
465794
- });
465839
+ );
465795
465840
  });
465796
465841
  } catch (err2) {
465797
465842
  console.error("queryBuffer 捕获异常:", err2);
@@ -465824,14 +465869,27 @@ ${this.attributes_.map(
465824
465869
  console.warn("SuperMap图层缺少服务URL,无法进行要素查询");
465825
465870
  return [];
465826
465871
  }
465827
- const { maxFeatures = 100, datasetNames, returnContent = true, targetProjection } = options;
465872
+ const {
465873
+ maxFeatures = 100,
465874
+ datasetNames,
465875
+ returnContent = true,
465876
+ targetProjection
465877
+ } = options;
465828
465878
  try {
465829
465879
  const mapProjection = (_a3 = this.map) == null ? void 0 : _a3.getView().getProjection();
465830
465880
  const projectionCode = targetProjection || (mapProjection == null ? void 0 : mapProjection.getCode()) || "EPSG:4326";
465831
465881
  let transformedBounds = bounds2;
465832
465882
  if (mapProjection && targetProjection && mapProjection.getCode() !== targetProjection) {
465833
- const bottomLeft = transform$l([bounds2[0], bounds2[1]], mapProjection.getCode(), targetProjection);
465834
- const topRight = transform$l([bounds2[2], bounds2[3]], mapProjection.getCode(), targetProjection);
465883
+ const bottomLeft = transform$l(
465884
+ [bounds2[0], bounds2[1]],
465885
+ mapProjection.getCode(),
465886
+ targetProjection
465887
+ );
465888
+ const topRight = transform$l(
465889
+ [bounds2[2], bounds2[3]],
465890
+ mapProjection.getCode(),
465891
+ targetProjection
465892
+ );
465835
465893
  transformedBounds = [
465836
465894
  bottomLeft[0],
465837
465895
  bottomLeft[1],
@@ -465853,22 +465911,29 @@ ${this.attributes_.map(
465853
465911
  });
465854
465912
  const boundsService = new GetFeaturesByBoundsService(serviceUrl);
465855
465913
  return new Promise((resolve, reject2) => {
465856
- boundsService.getFeaturesByBounds(boundsParams, (serviceResult) => {
465857
- var _a4;
465858
- if (serviceResult.type === "processCompleted") {
465859
- const result = serviceResult.result;
465860
- if (result && result.features) {
465861
- console.log(`SuperMap边界查询成功,找到 ${result.features.length} 个要素`);
465862
- resolve(result.features);
465914
+ boundsService.getFeaturesByBounds(
465915
+ boundsParams,
465916
+ (serviceResult) => {
465917
+ var _a4;
465918
+ if (serviceResult.type === "processCompleted") {
465919
+ const result = serviceResult.result;
465920
+ if (result && result.features) {
465921
+ console.log(
465922
+ `SuperMap边界查询成功,找到 ${result.features.length} 个要素`
465923
+ );
465924
+ resolve(result.features);
465925
+ } else {
465926
+ console.log("SuperMap边界查询完成,但未找到要素");
465927
+ resolve([]);
465928
+ }
465863
465929
  } else {
465864
- console.log("SuperMap边界查询完成,但未找到要素");
465865
- resolve([]);
465930
+ console.error("SuperMap边界查询失败:", serviceResult.error);
465931
+ reject2(
465932
+ new Error(((_a4 = serviceResult.error) == null ? void 0 : _a4.errorMsg) || "边界查询失败")
465933
+ );
465866
465934
  }
465867
- } else {
465868
- console.error("SuperMap边界查询失败:", serviceResult.error);
465869
- reject2(new Error(((_a4 = serviceResult.error) == null ? void 0 : _a4.errorMsg) || "边界查询失败"));
465870
465935
  }
465871
- });
465936
+ );
465872
465937
  });
465873
465938
  } catch (error2) {
465874
465939
  console.error("SuperMap边界查询异常:", error2);
@@ -465887,7 +465952,13 @@ ${this.attributes_.map(
465887
465952
  console.warn("SuperMap图层缺少服务URL,无法进行要素查询");
465888
465953
  return [];
465889
465954
  }
465890
- const { maxFeatures = 100, datasetNames, returnContent = true, spatialQueryMode = "INTERSECT", targetProjection } = options;
465955
+ const {
465956
+ maxFeatures = 100,
465957
+ datasetNames,
465958
+ returnContent = true,
465959
+ spatialQueryMode = "INTERSECT",
465960
+ targetProjection
465961
+ } = options;
465891
465962
  try {
465892
465963
  const serviceUrl = this.buildDataServiceUrl(config.url);
465893
465964
  console.log(`开始SuperMap几何查询:`, {
@@ -465904,22 +465975,29 @@ ${this.attributes_.map(
465904
465975
  });
465905
465976
  const geometryService = new GetFeaturesByGeometryService(serviceUrl);
465906
465977
  return new Promise((resolve, reject2) => {
465907
- geometryService.getFeaturesByGeometry(geometryParams, (serviceResult) => {
465908
- var _a3;
465909
- if (serviceResult.type === "processCompleted") {
465910
- const result = serviceResult.result;
465911
- if (result && result.features) {
465912
- console.log(`SuperMap几何查询成功,找到 ${result.features.length} 个要素`);
465913
- resolve(result.features);
465978
+ geometryService.getFeaturesByGeometry(
465979
+ geometryParams,
465980
+ (serviceResult) => {
465981
+ var _a3;
465982
+ if (serviceResult.type === "processCompleted") {
465983
+ const result = serviceResult.result;
465984
+ if (result && result.features) {
465985
+ console.log(
465986
+ `SuperMap几何查询成功,找到 ${result.features.length} 个要素`
465987
+ );
465988
+ resolve(result.features);
465989
+ } else {
465990
+ console.log("SuperMap几何查询完成,但未找到要素");
465991
+ resolve([]);
465992
+ }
465914
465993
  } else {
465915
- console.log("SuperMap几何查询完成,但未找到要素");
465916
- resolve([]);
465994
+ console.error("SuperMap几何查询失败:", serviceResult.error);
465995
+ reject2(
465996
+ new Error(((_a3 = serviceResult.error) == null ? void 0 : _a3.errorMsg) || "几何查询失败")
465997
+ );
465917
465998
  }
465918
- } else {
465919
- console.error("SuperMap几何查询失败:", serviceResult.error);
465920
- reject2(new Error(((_a3 = serviceResult.error) == null ? void 0 : _a3.errorMsg) || "几何查询失败"));
465921
465999
  }
465922
- });
466000
+ );
465923
466001
  });
465924
466002
  } catch (error2) {
465925
466003
  console.error("SuperMap几何查询异常:", error2);
@@ -465938,7 +466016,12 @@ ${this.attributes_.map(
465938
466016
  console.warn("SuperMap图层缺少服务URL,无法进行要素查询");
465939
466017
  return [];
465940
466018
  }
465941
- const { maxFeatures = 100, datasetNames, returnContent = true, targetProjection } = options;
466019
+ const {
466020
+ maxFeatures = 100,
466021
+ datasetNames,
466022
+ returnContent = true,
466023
+ targetProjection
466024
+ } = options;
465942
466025
  try {
465943
466026
  const serviceUrl = this.buildDataServiceUrl(config.url);
465944
466027
  console.log(`开始SuperMap SQL查询:`, {
@@ -465961,7 +466044,9 @@ ${this.attributes_.map(
465961
466044
  if (serviceResult.type === "processCompleted") {
465962
466045
  const result = serviceResult.result;
465963
466046
  if (result && result.features) {
465964
- console.log(`SuperMap SQL查询成功,找到 ${result.features.length} 个要素`);
466047
+ console.log(
466048
+ `SuperMap SQL查询成功,找到 ${result.features.length} 个要素`
466049
+ );
465965
466050
  resolve(result.features);
465966
466051
  } else {
465967
466052
  console.log("SuperMap SQL查询完成,但未找到要素");
@@ -466009,7 +466094,9 @@ ${this.attributes_.map(
466009
466094
  if (serviceResult.type === "processCompleted") {
466010
466095
  const result = serviceResult.result;
466011
466096
  if (result && result.features) {
466012
- console.log(`SuperMap ID查询成功,找到 ${result.features.length} 个要素`);
466097
+ console.log(
466098
+ `SuperMap ID查询成功,找到 ${result.features.length} 个要素`
466099
+ );
466013
466100
  resolve(result.features);
466014
466101
  } else {
466015
466102
  console.log("SuperMap ID查询完成,但未找到要素");
@@ -466039,7 +466126,10 @@ ${this.attributes_.map(
466039
466126
  return mapUrl;
466040
466127
  }
466041
466128
  if (url.pathname.includes("/rest/maps/")) {
466042
- const dataServiceUrl = mapUrl.replace(/\/rest\/maps\/.*$/, "/rest/data");
466129
+ const dataServiceUrl = mapUrl.replace(
466130
+ /\/rest\/maps\/.*$/,
466131
+ "/rest/data"
466132
+ );
466043
466133
  console.log(`构建数据服务URL: ${mapUrl} -> ${dataServiceUrl}`);
466044
466134
  return dataServiceUrl;
466045
466135
  }
@@ -466049,7 +466139,9 @@ ${this.attributes_.map(
466049
466139
  const serviceName = pathParts[servicesIndex + 1];
466050
466140
  const basePath = pathParts.slice(0, servicesIndex + 2).join("/");
466051
466141
  const dataServiceUrl = `${url.protocol}//${url.host}/${basePath}/rest/data`;
466052
- console.log(`从服务名称构建数据服务URL: ${mapUrl} -> ${dataServiceUrl}`);
466142
+ console.log(
466143
+ `从服务名称构建数据服务URL: ${mapUrl} -> ${dataServiceUrl}`
466144
+ );
466053
466145
  return dataServiceUrl;
466054
466146
  }
466055
466147
  throw new Error(`无法解析SuperMap服务URL格式: ${mapUrl}`);
@@ -466093,24 +466185,37 @@ ${this.attributes_.map(
466093
466185
  */
466094
466186
  async getFeatureInfoAtCoordinate(coordinate, options = {}) {
466095
466187
  var _a3, _b3, _c2, _d, _e2, _f;
466096
- const { bufferDistance = 100, maxFeatures = options.featureCount || 10, queryMethod } = options;
466188
+ const {
466189
+ bufferDistance = 100,
466190
+ maxFeatures = options.featureCount || 10,
466191
+ queryMethod
466192
+ } = options;
466097
466193
  try {
466098
466194
  let features2 = [];
466099
466195
  const finalQueryMethod = queryMethod || ((_a3 = this.config.supermapConfig) == null ? void 0 : _a3.queryMethod) || "point";
466100
466196
  console.log(`使用查询方式: ${finalQueryMethod}`);
466101
466197
  if (finalQueryMethod === "buffer") {
466102
466198
  const configuredBufferDistance = ((_b3 = this.config.supermapConfig) == null ? void 0 : _b3.bufferDistance) || bufferDistance;
466103
- features2 = await this.getFeaturesByBuffer(coordinate[0], coordinate[1], {
466104
- bufferDistance: configuredBufferDistance / 1e3,
466105
- datasetNames: (_c2 = this.config.supermapConfig) == null ? void 0 : _c2.datasetNames,
466106
- serviceUrl: (_d = this.config.supermapConfig) == null ? void 0 : _d.featureServiceUrl
466107
- });
466199
+ features2 = await this.getFeaturesByBuffer(
466200
+ coordinate[0],
466201
+ coordinate[1],
466202
+ {
466203
+ bufferDistance: configuredBufferDistance / 1e3,
466204
+ // 转换为度数单位
466205
+ datasetNames: (_c2 = this.config.supermapConfig) == null ? void 0 : _c2.datasetNames,
466206
+ serviceUrl: (_d = this.config.supermapConfig) == null ? void 0 : _d.featureServiceUrl
466207
+ }
466208
+ );
466108
466209
  } else {
466109
- features2 = await this.queryFeatureByPointOL(coordinate[0], coordinate[1], {
466110
- datasetNames: (_e2 = this.config.supermapConfig) == null ? void 0 : _e2.datasetNames,
466111
- serviceUrl: (_f = this.config.supermapConfig) == null ? void 0 : _f.featureServiceUrl
466112
- // tolerance 参数已移除,使用默认值
466113
- });
466210
+ features2 = await this.queryFeatureByPointOL(
466211
+ coordinate[0],
466212
+ coordinate[1],
466213
+ {
466214
+ datasetNames: (_e2 = this.config.supermapConfig) == null ? void 0 : _e2.datasetNames,
466215
+ serviceUrl: (_f = this.config.supermapConfig) == null ? void 0 : _f.featureServiceUrl
466216
+ // tolerance 参数已移除,使用默认值
466217
+ }
466218
+ );
466114
466219
  }
466115
466220
  return features2.slice(0, maxFeatures).map((feature2) => {
466116
466221
  if (feature2 && typeof feature2.getProperties === "function") {
@@ -466188,7 +466293,9 @@ ${this.attributes_.map(
466188
466293
  * 检查是否是天地图URL
466189
466294
  */
466190
466295
  isTiandituUrl(url) {
466191
- return _TiandituLayerHandler.TIANDITU_DOMAINS.some((domain) => url.includes(domain));
466296
+ return _TiandituLayerHandler.TIANDITU_DOMAINS.some(
466297
+ (domain) => url.includes(domain)
466298
+ );
466192
466299
  }
466193
466300
  /**
466194
466301
  * 检查是否是开发模式
@@ -466202,7 +466309,9 @@ ${this.attributes_.map(
466202
466309
  convertToProxyUrl(originalUrl) {
466203
466310
  const urlObj = new URL(originalUrl);
466204
466311
  const pathParts = urlObj.pathname.split("/");
466205
- const serviceType = pathParts.find((part) => Object.values(_TiandituLayerHandler.TIANDITU_SERVICES).includes(part));
466312
+ const serviceType = pathParts.find(
466313
+ (part) => Object.values(_TiandituLayerHandler.TIANDITU_SERVICES).includes(part)
466314
+ );
466206
466315
  if (!serviceType) {
466207
466316
  console.warn("无法识别天地图服务类型,使用默认代理路径");
466208
466317
  return `/api/tianditu${urlObj.pathname}${urlObj.search}`;
@@ -466219,7 +466328,9 @@ ${this.attributes_.map(
466219
466328
  return null;
466220
466329
  const urlObj = new URL(this.config.url);
466221
466330
  const pathParts = urlObj.pathname.split("/");
466222
- return pathParts.find((part) => Object.values(_TiandituLayerHandler.TIANDITU_SERVICES).includes(part)) || null;
466331
+ return pathParts.find(
466332
+ (part) => Object.values(_TiandituLayerHandler.TIANDITU_SERVICES).includes(part)
466333
+ ) || null;
466223
466334
  }
466224
466335
  /**
466225
466336
  * 设置天地图密钥
@@ -466279,7 +466390,12 @@ ${this.attributes_.map(
466279
466390
  * 创建标准天地图URL
466280
466391
  */
466281
466392
  static createTiandituUrl(serviceType, options = {}) {
466282
- const { tk = "YOUR_TIANDITU_KEY", domain = "t{0-7}.tianditu.gov.cn", format: format2 = "tiles", style = "default" } = options;
466393
+ const {
466394
+ tk = "YOUR_TIANDITU_KEY",
466395
+ domain = "t{0-7}.tianditu.gov.cn",
466396
+ format: format2 = "tiles",
466397
+ style = "default"
466398
+ } = options;
466283
466399
  const service = _TiandituLayerHandler.TIANDITU_SERVICES[serviceType];
466284
466400
  if (!service) {
466285
466401
  throw new Error(`不支持的天地图服务类型: ${serviceType}`);
@@ -466309,10 +466425,15 @@ ${this.attributes_.map(
466309
466425
  ]);
466310
466426
  __publicField(_TiandituLayerHandler, "TIANDITU_SERVICES", {
466311
466427
  "img": "img_w",
466428
+ // 卫星影像
466312
466429
  "vec": "vec_w",
466430
+ // 矢量地图
466313
466431
  "cva": "cva_w",
466432
+ // 矢量注记
466314
466433
  "cia": "cia_w",
466434
+ // 影像注记
466315
466435
  "ter": "ter_w",
466436
+ // 地形图
466316
466437
  "cta": "cta_w"
466317
466438
  // 地形注记
466318
466439
  });
@@ -466328,6 +466449,7 @@ ${this.attributes_.map(
466328
466449
  className: this.config.className,
466329
466450
  canvasFunction: this.getCanvasFunction(),
466330
466451
  projection: "EPSG:4326",
466452
+ // 默认投影
466331
466453
  ratio: 1
466332
466454
  });
466333
466455
  const imageLayer = new ImageLayer$3({
@@ -466351,7 +466473,13 @@ ${this.attributes_.map(
466351
466473
  canvas.width = size2[0];
466352
466474
  canvas.height = size2[1];
466353
466475
  const canvasConfig = this.config.canvasConfig || {};
466354
- const { backgroundColor: backgroundColor2 = "transparent", gridSize = 50, gridColor = "#cccccc", showGrid = false, customDrawFunction } = canvasConfig;
466476
+ const {
466477
+ backgroundColor: backgroundColor2 = "transparent",
466478
+ gridSize = 50,
466479
+ gridColor = "#cccccc",
466480
+ showGrid = false,
466481
+ customDrawFunction
466482
+ } = canvasConfig;
466355
466483
  if (backgroundColor2 !== "transparent") {
466356
466484
  context.fillStyle = backgroundColor2;
466357
466485
  context.fillRect(0, 0, canvas.width, canvas.height);
@@ -466506,11 +466634,17 @@ ${this.attributes_.map(
466506
466634
  style: this.createStyleFunction(),
466507
466635
  // VectorTile图层特有的配置
466508
466636
  renderBuffer: this.config.renderBuffer || 100,
466637
+ // 渲染缓冲区
466509
466638
  renderOrder: this.config.renderOrder,
466639
+ // 渲染顺序
466510
466640
  renderMode: this.config.renderMode || "hybrid",
466641
+ // 渲染模式:'hybrid' | 'vector'
466511
466642
  declutter: this.config.declutter || false,
466643
+ // 是否启用标注避让
466512
466644
  background: this.config.background,
466645
+ // 背景色
466513
466646
  preload: this.config.preload || 0,
466647
+ // 预加载级别
466514
466648
  useInterimTilesOnError: this.config.useInterimTilesOnError !== false
466515
466649
  // 错误时使用临时瓦片
466516
466650
  });
@@ -466530,6 +466664,7 @@ ${this.attributes_.map(
466530
466664
  minZoom: config.minZoom || 0,
466531
466665
  tileSize: config.tileSize || 512,
466532
466666
  overlaps: config.overlaps !== false,
466667
+ // 默认允许重叠
466533
466668
  projection: config.projection || "EPSG:4326"
466534
466669
  };
466535
466670
  if (config.tileGrid) {
@@ -466749,7 +466884,7 @@ ${this.attributes_.map(
466749
466884
  */
466750
466885
  checkFeatureAgainstFilter(feature2, filter2) {
466751
466886
  switch (filter2.type) {
466752
- case exports2.FilterType.ATTRIBUTE:
466887
+ case FilterType.ATTRIBUTE:
466753
466888
  return this.checkAttributeFilter(feature2, filter2);
466754
466889
  default:
466755
466890
  console.warn(`VectorTile图层不支持过滤器类型: ${filter2.type}`);
@@ -466763,39 +466898,39 @@ ${this.attributes_.map(
466763
466898
  const featureValue = feature2.get(config.property);
466764
466899
  const filterValue = config.value;
466765
466900
  if (featureValue === void 0 || featureValue === null) {
466766
- return config.operator === exports2.FilterOperator.IS_NULL;
466901
+ return config.operator === FilterOperator.IS_NULL;
466767
466902
  }
466768
466903
  switch (config.operator) {
466769
- case exports2.FilterOperator.EQUAL:
466904
+ case FilterOperator.EQUAL:
466770
466905
  return featureValue === filterValue;
466771
- case exports2.FilterOperator.NOT_EQUAL:
466906
+ case FilterOperator.NOT_EQUAL:
466772
466907
  return featureValue !== filterValue;
466773
- case exports2.FilterOperator.GREATER_THAN:
466908
+ case FilterOperator.GREATER_THAN:
466774
466909
  return Number(featureValue) > Number(filterValue);
466775
- case exports2.FilterOperator.GREATER_EQUAL:
466910
+ case FilterOperator.GREATER_EQUAL:
466776
466911
  return Number(featureValue) >= Number(filterValue);
466777
- case exports2.FilterOperator.LESS_THAN:
466912
+ case FilterOperator.LESS_THAN:
466778
466913
  return Number(featureValue) < Number(filterValue);
466779
- case exports2.FilterOperator.LESS_EQUAL:
466914
+ case FilterOperator.LESS_EQUAL:
466780
466915
  return Number(featureValue) <= Number(filterValue);
466781
- case exports2.FilterOperator.LIKE:
466916
+ case FilterOperator.LIKE:
466782
466917
  const pattern = filterValue.toString().replace(/%/g, ".*");
466783
466918
  const regex = new RegExp(pattern, "i");
466784
466919
  return regex.test(featureValue.toString());
466785
- case exports2.FilterOperator.BETWEEN:
466920
+ case FilterOperator.BETWEEN:
466786
466921
  if (Array.isArray(filterValue) && filterValue.length === 2) {
466787
466922
  const numValue = Number(featureValue);
466788
466923
  return numValue >= Number(filterValue[0]) && numValue <= Number(filterValue[1]);
466789
466924
  }
466790
466925
  return false;
466791
- case exports2.FilterOperator.IN:
466926
+ case FilterOperator.IN:
466792
466927
  if (Array.isArray(filterValue)) {
466793
466928
  return filterValue.includes(featureValue);
466794
466929
  }
466795
466930
  return false;
466796
- case exports2.FilterOperator.IS_NULL:
466931
+ case FilterOperator.IS_NULL:
466797
466932
  return featureValue === null || featureValue === void 0;
466798
- case exports2.FilterOperator.IS_NOT_NULL:
466933
+ case FilterOperator.IS_NOT_NULL:
466799
466934
  return featureValue !== null && featureValue !== void 0;
466800
466935
  default:
466801
466936
  console.warn(`不支持的过滤器操作符: ${config.operator}`);
@@ -466808,7 +466943,7 @@ ${this.attributes_.map(
466808
466943
  * @param value 过滤值
466809
466944
  * @param operator 操作符
466810
466945
  */
466811
- filterFeaturesByProperty(property, value, operator = exports2.FilterOperator.EQUAL) {
466946
+ filterFeaturesByProperty(property, value, operator = FilterOperator.EQUAL) {
466812
466947
  this.addAttributeFilter("vectortile_property_filter", property, value, operator, `${property} ${operator} ${value}`);
466813
466948
  }
466814
466949
  /**
@@ -466832,11 +466967,15 @@ ${this.attributes_.map(
466832
466967
  const extent3 = view.calculateExtent();
466833
466968
  const resolution = view.getResolution();
466834
466969
  try {
466835
- source.forEachFeatureAtCoordinateAndResolution(extent3, resolution || 1, (feature2) => {
466836
- const props = feature2.getProperties();
466837
- const { geometry: geometry2, ...dataProps } = props;
466838
- properties.push(dataProps);
466839
- });
466970
+ source.forEachFeatureAtCoordinateAndResolution(
466971
+ extent3,
466972
+ resolution || 1,
466973
+ (feature2) => {
466974
+ const props = feature2.getProperties();
466975
+ const { geometry: geometry2, ...dataProps } = props;
466976
+ properties.push(dataProps);
466977
+ }
466978
+ );
466840
466979
  } catch (error2) {
466841
466980
  console.warn("获取VectorTile要素属性时出错:", error2);
466842
466981
  }
@@ -467002,6 +467141,28 @@ ${this.attributes_.map(
467002
467141
  __publicField(_LayerFactory, "instance");
467003
467142
  let LayerFactory = _LayerFactory;
467004
467143
  const layerFactory = LayerFactory.getInstance();
467144
+ class LayerEventBus {
467145
+ constructor() {
467146
+ __publicField(this, "emitter");
467147
+ this.emitter = mitt();
467148
+ }
467149
+ emit(type, event) {
467150
+ this.emitter.emit(type, event);
467151
+ }
467152
+ on(type, handler) {
467153
+ this.emitter.on(type, handler);
467154
+ }
467155
+ off(type, handler) {
467156
+ this.emitter.off(type, handler);
467157
+ }
467158
+ clear() {
467159
+ this.emitter.all.clear();
467160
+ }
467161
+ }
467162
+ function createLayerEventBus() {
467163
+ return new LayerEventBus();
467164
+ }
467165
+ const layerEventBus = mitt();
467005
467166
  class LayerManager {
467006
467167
  constructor(map2, eventBus, storage2) {
467007
467168
  __publicField(this, "map");
@@ -467032,6 +467193,7 @@ ${this.attributes_.map(
467032
467193
  ...config,
467033
467194
  id: layerId,
467034
467195
  visible: config.visible ?? false,
467196
+ // 默认设置为false,避免意外激活图层
467035
467197
  opacity: config.opacity ?? 1,
467036
467198
  zIndex: config.zIndex ?? 0
467037
467199
  };
@@ -467192,6 +467354,15 @@ ${this.attributes_.map(
467192
467354
  return true;
467193
467355
  } catch (error2) {
467194
467356
  console.error("添加图层失败:", error2);
467357
+ this.pendingLayerConfigs.set(fullConfig.id, fullConfig);
467358
+ this.saveLayerConfigs();
467359
+ this.eventBus.emit("layer-added", {
467360
+ layerId: fullConfig.id,
467361
+ layerName: fullConfig.name,
467362
+ layerType: fullConfig.type,
467363
+ visible: fullConfig.visible ?? false,
467364
+ layerConfig: fullConfig
467365
+ });
467195
467366
  return false;
467196
467367
  }
467197
467368
  }
@@ -467208,6 +467379,7 @@ ${this.attributes_.map(
467208
467379
  ...childConfig,
467209
467380
  id: childLayerId,
467210
467381
  visible: groupConfig.visible ?? false,
467382
+ // 子图层的可见性完全跟随组图层
467211
467383
  opacity: childConfig.opacity ?? groupConfig.opacity
467212
467384
  };
467213
467385
  if (this.addLayer(childFullConfig)) {
@@ -467222,6 +467394,7 @@ ${this.attributes_.map(
467222
467394
  ...layerConfig,
467223
467395
  id: layerLayerId,
467224
467396
  visible: groupConfig.visible ?? false,
467397
+ // 子图层的可见性完全跟随组图层
467225
467398
  opacity: layerConfig.opacity ?? groupConfig.opacity
467226
467399
  };
467227
467400
  if (this.addLayer(layerFullConfig)) {
@@ -467435,7 +467608,9 @@ ${this.attributes_.map(
467435
467608
  async hideOtherBasemaps(currentBasemapId) {
467436
467609
  try {
467437
467610
  const allConfigs = [...this.layerConfigs.values(), ...this.pendingLayerConfigs.values()];
467438
- const basemapConfigs = allConfigs.filter((config) => this.isBasemapLayer(config.id) && config.id !== currentBasemapId);
467611
+ const basemapConfigs = allConfigs.filter(
467612
+ (config) => this.isBasemapLayer(config.id) && config.id !== currentBasemapId
467613
+ );
467439
467614
  for (const config of basemapConfigs) {
467440
467615
  if (config.visible) {
467441
467616
  const handler = this.layerHandlers.get(config.id);
@@ -467460,7 +467635,9 @@ ${this.attributes_.map(
467460
467635
  async hideOtherBasemapsOnInit(currentBasemapId) {
467461
467636
  try {
467462
467637
  const allConfigs = [...this.layerConfigs.values(), ...this.pendingLayerConfigs.values()];
467463
- const basemapConfigs = allConfigs.filter((config) => this.isBasemapLayer(config.id) && config.id !== currentBasemapId && config.visible);
467638
+ const basemapConfigs = allConfigs.filter(
467639
+ (config) => this.isBasemapLayer(config.id) && config.id !== currentBasemapId && config.visible
467640
+ );
467464
467641
  for (const config of basemapConfigs) {
467465
467642
  const handler = this.layerHandlers.get(config.id);
467466
467643
  if (handler) {
@@ -467746,11 +467923,15 @@ ${this.attributes_.map(
467746
467923
  try {
467747
467924
  if (config.type === "TileSuperMapRest" || config.type === "tilesupermaprest" || config.type === "TILESUPERMAPREST") {
467748
467925
  if ("getFeatureInfoAtCoordinate" in handler) {
467749
- const features2 = await handler.getFeatureInfoAtCoordinate(coordinate, {
467750
- bufferDistance: 80,
467751
- maxFeatures: (options == null ? void 0 : options.featureCount) || 10,
467752
- returnContent: true
467753
- });
467926
+ const features2 = await handler.getFeatureInfoAtCoordinate(
467927
+ coordinate,
467928
+ {
467929
+ bufferDistance: 80,
467930
+ // 默认5米缓冲区
467931
+ maxFeatures: (options == null ? void 0 : options.featureCount) || 10,
467932
+ returnContent: true
467933
+ }
467934
+ );
467754
467935
  if (features2 && features2.length > 0) {
467755
467936
  results.push({
467756
467937
  layerId,
@@ -467762,10 +467943,13 @@ ${this.attributes_.map(
467762
467943
  }
467763
467944
  } else if (config.type === "wms" || config.type === "WMS") {
467764
467945
  if ("getFeatureInfoAtCoordinate" in handler) {
467765
- const features2 = await handler.getFeatureInfoAtCoordinate(coordinate, {
467766
- infoFormat: (options == null ? void 0 : options.infoFormat) || "application/json",
467767
- featureCount: (options == null ? void 0 : options.featureCount) || 10
467768
- });
467946
+ const features2 = await handler.getFeatureInfoAtCoordinate(
467947
+ coordinate,
467948
+ {
467949
+ infoFormat: (options == null ? void 0 : options.infoFormat) || "application/json",
467950
+ featureCount: (options == null ? void 0 : options.featureCount) || 10
467951
+ }
467952
+ );
467769
467953
  if (features2 && features2.length > 0) {
467770
467954
  results.push({
467771
467955
  layerId,
@@ -467830,28 +468014,6 @@ ${this.attributes_.map(
467830
468014
  this.layerConfigs.clear();
467831
468015
  }
467832
468016
  }
467833
- class LayerEventBus {
467834
- constructor() {
467835
- __publicField(this, "emitter");
467836
- this.emitter = mitt();
467837
- }
467838
- emit(type, event) {
467839
- this.emitter.emit(type, event);
467840
- }
467841
- on(type, handler) {
467842
- this.emitter.on(type, handler);
467843
- }
467844
- off(type, handler) {
467845
- this.emitter.off(type, handler);
467846
- }
467847
- clear() {
467848
- this.emitter.all.clear();
467849
- }
467850
- }
467851
- function createLayerEventBus() {
467852
- return new LayerEventBus();
467853
- }
467854
- const layerEventBus = mitt();
467855
468017
  const DEFAULT_HIGHLIGHT_STYLE = {
467856
468018
  fill: {
467857
468019
  color: "rgba(255, 255, 0, 0.3)",
@@ -468372,12 +468534,12 @@ ${this.attributes_.map(
468372
468534
  };
468373
468535
  const _hoisted_4$k = { class: "image-popup-main" };
468374
468536
  const _hoisted_5$k = { class: "image-container" };
468375
- const _hoisted_6$i = ["src", "alt"];
468376
- const _hoisted_7$e = {
468537
+ const _hoisted_6$h = ["src", "alt"];
468538
+ const _hoisted_7$f = {
468377
468539
  key: 0,
468378
468540
  class: "image-loading"
468379
468541
  };
468380
- const _hoisted_8$b = {
468542
+ const _hoisted_8$c = {
468381
468543
  key: 1,
468382
468544
  class: "image-error"
468383
468545
  };
@@ -468555,12 +468717,12 @@ ${this.attributes_.map(
468555
468717
  onLoad: handleImageLoad,
468556
468718
  onError: handleImageError,
468557
468719
  onClick: handleImageClick
468558
- }, null, 40, _hoisted_6$i),
468559
- imageLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$e, [..._cache[4] || (_cache[4] = [
468720
+ }, null, 40, _hoisted_6$h),
468721
+ imageLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$f, [..._cache[4] || (_cache[4] = [
468560
468722
  vue.createElementVNode("div", { class: "loading-spinner" }, null, -1),
468561
468723
  vue.createElementVNode("span", null, "加载中...", -1)
468562
468724
  ])])) : vue.createCommentVNode("", true),
468563
- imageError.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$b, [..._cache[5] || (_cache[5] = [
468725
+ imageError.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$c, [..._cache[5] || (_cache[5] = [
468564
468726
  vue.createElementVNode("span", null, "图片加载失败", -1)
468565
468727
  ])])) : vue.createCommentVNode("", true),
468566
468728
  imageList.value.length > 1 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9$a, [
@@ -468672,12 +468834,12 @@ ${this.attributes_.map(
468672
468834
  key: 3,
468673
468835
  class: "search-container"
468674
468836
  };
468675
- const _hoisted_6$h = {
468837
+ const _hoisted_6$g = {
468676
468838
  key: 4,
468677
468839
  class: "data-stats"
468678
468840
  };
468679
- const _hoisted_7$d = { key: 0 };
468680
- const _hoisted_8$a = {
468841
+ const _hoisted_7$e = { key: 0 };
468842
+ const _hoisted_8$b = {
468681
468843
  key: 5,
468682
468844
  class: "table-view"
468683
468845
  };
@@ -468934,11 +469096,11 @@ ${this.attributes_.map(
468934
469096
  clearable: ""
468935
469097
  }, null, 8, ["modelValue"])
468936
469098
  ])) : vue.createCommentVNode("", true),
468937
- _ctx.config.showStats ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$h, [
469099
+ _ctx.config.showStats ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$g, [
468938
469100
  vue.createElementVNode("span", null, "共 " + vue.toDisplayString(filteredData.value.length) + " 条记录", 1),
468939
- searchQuery.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$d, "(已过滤 " + vue.toDisplayString(arrayData.value.length - filteredData.value.length) + " 条)", 1)) : vue.createCommentVNode("", true)
469101
+ searchQuery.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_7$e, "(已过滤 " + vue.toDisplayString(arrayData.value.length - filteredData.value.length) + " 条)", 1)) : vue.createCommentVNode("", true)
468940
469102
  ])) : vue.createCommentVNode("", true),
468941
- currentView.value === "table" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$a, [
469103
+ currentView.value === "table" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$b, [
468942
469104
  vue.createElementVNode("div", _hoisted_9$9, [
468943
469105
  vue.createElementVNode("table", _hoisted_10$9, [
468944
469106
  vue.createElementVNode("thead", null, [
@@ -470800,9 +470962,9 @@ ${this.attributes_.map(
470800
470962
  class: "px-5 py-4 border-t border-gray-200 bg-gray-50 flex justify-end gap-3"
470801
470963
  };
470802
470964
  const _hoisted_5$i = ["onMousedown"];
470803
- const _hoisted_6$g = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
470804
- const _hoisted_7$c = { class: "flex items-center gap-2" };
470805
- const _hoisted_8$9 = { class: "flex-1 overflow-auto min-h-0 h-0" };
470965
+ const _hoisted_6$f = { class: "text-base font-semibold text-gray-800 flex-1 overflow-hidden text-ellipsis whitespace-nowrap" };
470966
+ const _hoisted_7$d = { class: "flex items-center gap-2" };
470967
+ const _hoisted_8$a = { class: "flex-1 overflow-auto min-h-0 h-0" };
470806
470968
  const _hoisted_9$8 = {
470807
470969
  key: 0,
470808
470970
  class: "px-5 py-4 border-t border-gray-200 bg-gray-50 flex justify-end gap-3"
@@ -471316,12 +471478,12 @@ ${this.attributes_.map(
471316
471478
  class: vue.normalizeClass(["flex items-center justify-between px-5 py-4 border-b border-gray-200 bg-gray-50", { "cursor-move": _ctx.draggable && !isFullscreen.value }]),
471317
471479
  onMousedown: startDrag
471318
471480
  }, [
471319
- vue.createElementVNode("div", _hoisted_6$g, [
471481
+ vue.createElementVNode("div", _hoisted_6$f, [
471320
471482
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
471321
471483
  vue.createTextVNode(vue.toDisplayString(_ctx.title), 1)
471322
471484
  ], true)
471323
471485
  ]),
471324
- vue.createElementVNode("div", _hoisted_7$c, [
471486
+ vue.createElementVNode("div", _hoisted_7$d, [
471325
471487
  _ctx.showFullscreen ? (vue.openBlock(), vue.createBlock(vue.unref(ElButton), {
471326
471488
  key: 0,
471327
471489
  class: "w-6 h-6 border-none bg-transparent cursor-pointer flex items-center justify-center rounded text-gray-500 transition-all duration-200 hover:bg-gray-200 hover:text-gray-600",
@@ -471348,7 +471510,7 @@ ${this.attributes_.map(
471348
471510
  })) : vue.createCommentVNode("", true)
471349
471511
  ])
471350
471512
  ], 34),
471351
- vue.createElementVNode("div", _hoisted_8$9, [
471513
+ vue.createElementVNode("div", _hoisted_8$a, [
471352
471514
  vue.renderSlot(_ctx.$slots, "default", {}, void 0, true)
471353
471515
  ]),
471354
471516
  _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_9$8, [
@@ -471410,7 +471572,7 @@ ${this.attributes_.map(
471410
471572
  const _hoisted_3$h = ["onClick"];
471411
471573
  const _hoisted_4$h = { class: "basemap-preview" };
471412
471574
  const _hoisted_5$h = ["src", "alt"];
471413
- const _hoisted_6$f = { class: "basemap-name" };
471575
+ const _hoisted_6$e = { class: "basemap-name" };
471414
471576
  const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
471415
471577
  __name: "BasemapPanel",
471416
471578
  props: {
@@ -471657,7 +471819,7 @@ ${this.attributes_.map(
471657
471819
  loading: "lazy"
471658
471820
  }, null, 8, _hoisted_5$h)
471659
471821
  ]),
471660
- vue.createElementVNode("div", _hoisted_6$f, vue.toDisplayString(basemap.name), 1)
471822
+ vue.createElementVNode("div", _hoisted_6$e, vue.toDisplayString(basemap.name), 1)
471661
471823
  ], 10, _hoisted_3$h);
471662
471824
  }), 128))
471663
471825
  ])
@@ -472006,9 +472168,9 @@ ${this.attributes_.map(
472006
472168
  const _hoisted_3$g = { class: "measurement-result py-8 text-center" };
472007
472169
  const _hoisted_4$g = { class: "result-value" };
472008
472170
  const _hoisted_5$g = { class: "tool-grid flex-1 py-5" };
472009
- const _hoisted_6$e = ["onClick"];
472010
- const _hoisted_7$b = ["src", "alt"];
472011
- const _hoisted_8$8 = { class: "tool-label" };
472171
+ const _hoisted_6$d = ["onClick"];
472172
+ const _hoisted_7$c = ["src", "alt"];
472173
+ const _hoisted_8$9 = { class: "tool-label" };
472012
472174
  const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
472013
472175
  __name: "MeasurementDialog",
472014
472176
  props: {
@@ -472334,9 +472496,9 @@ ${this.attributes_.map(
472334
472496
  src: tool.icon,
472335
472497
  alt: tool.label,
472336
472498
  class: "tool-icon"
472337
- }, null, 8, _hoisted_7$b),
472338
- vue.createElementVNode("span", _hoisted_8$8, vue.toDisplayString(tool.label), 1)
472339
- ], 10, _hoisted_6$e);
472499
+ }, null, 8, _hoisted_7$c),
472500
+ vue.createElementVNode("span", _hoisted_8$9, vue.toDisplayString(tool.label), 1)
472501
+ ], 10, _hoisted_6$d);
472340
472502
  }), 64))
472341
472503
  ])
472342
472504
  ])
@@ -472614,9 +472776,9 @@ ${this.attributes_.map(
472614
472776
  const _hoisted_3$e = { class: "region-group" };
472615
472777
  const _hoisted_4$e = { class: "region-items" };
472616
472778
  const _hoisted_5$e = { class: "region-group" };
472617
- const _hoisted_6$d = { class: "region-items" };
472618
- const _hoisted_7$a = { class: "region-group" };
472619
- const _hoisted_8$7 = { class: "region-items" };
472779
+ const _hoisted_6$c = { class: "region-items" };
472780
+ const _hoisted_7$b = { class: "region-group" };
472781
+ const _hoisted_8$8 = { class: "region-items" };
472620
472782
  const _hoisted_9$7 = { class: "region-group" };
472621
472783
  const _hoisted_10$7 = { class: "region-items" };
472622
472784
  const _hoisted_11$7 = { class: "region-group" };
@@ -473767,7 +473929,7 @@ ${this.attributes_.map(
473767
473929
  ]),
473768
473930
  vue.createElementVNode("div", _hoisted_5$e, [
473769
473931
  _cache[3] || (_cache[3] = vue.createElementVNode("div", { class: "group-title" }, "东北", -1)),
473770
- vue.createElementVNode("div", _hoisted_6$d, [
473932
+ vue.createElementVNode("div", _hoisted_6$c, [
473771
473933
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(regions.northeast, (region) => {
473772
473934
  return vue.openBlock(), vue.createBlock(_component_el_button, {
473773
473935
  key: region.code,
@@ -473783,9 +473945,9 @@ ${this.attributes_.map(
473783
473945
  }), 128))
473784
473946
  ])
473785
473947
  ]),
473786
- vue.createElementVNode("div", _hoisted_7$a, [
473948
+ vue.createElementVNode("div", _hoisted_7$b, [
473787
473949
  _cache[4] || (_cache[4] = vue.createElementVNode("div", { class: "group-title" }, "华东", -1)),
473788
- vue.createElementVNode("div", _hoisted_8$7, [
473950
+ vue.createElementVNode("div", _hoisted_8$8, [
473789
473951
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(regions.east, (region) => {
473790
473952
  return vue.openBlock(), vue.createBlock(_component_el_button, {
473791
473953
  key: region.code,
@@ -474506,9 +474668,9 @@ ${this.attributes_.map(
474506
474668
  const _hoisted_3$c = { class: "search-filter" };
474507
474669
  const _hoisted_4$c = { class: "bookmarks-grid" };
474508
474670
  const _hoisted_5$c = ["onClick"];
474509
- const _hoisted_6$c = { class: "bookmark-thumbnail" };
474510
- const _hoisted_7$9 = { class: "thumbnail-placeholder" };
474511
- const _hoisted_8$6 = { class: "bookmark-overlay" };
474671
+ const _hoisted_6$b = { class: "bookmark-thumbnail" };
474672
+ const _hoisted_7$a = { class: "thumbnail-placeholder" };
474673
+ const _hoisted_8$7 = { class: "bookmark-overlay" };
474512
474674
  const _hoisted_9$6 = { class: "bookmark-info" };
474513
474675
  const _hoisted_10$6 = { class: "bookmark-title" };
474514
474676
  const _hoisted_11$6 = { class: "bookmark-meta" };
@@ -474910,8 +475072,8 @@ ${this.attributes_.map(
474910
475072
  class: "bookmark-card",
474911
475073
  onClick: ($event) => applyBookmark(bookmark)
474912
475074
  }, [
474913
- vue.createElementVNode("div", _hoisted_6$c, [
474914
- vue.createElementVNode("div", _hoisted_7$9, [
475075
+ vue.createElementVNode("div", _hoisted_6$b, [
475076
+ vue.createElementVNode("div", _hoisted_7$a, [
474915
475077
  vue.createVNode(_component_el_icon, {
474916
475078
  size: "40",
474917
475079
  color: "#409eff"
@@ -474922,7 +475084,7 @@ ${this.attributes_.map(
474922
475084
  _: 1
474923
475085
  })
474924
475086
  ]),
474925
- vue.createElementVNode("div", _hoisted_8$6, [
475087
+ vue.createElementVNode("div", _hoisted_8$7, [
474926
475088
  vue.createVNode(_component_el_button_group, null, {
474927
475089
  default: vue.withCtx(() => [
474928
475090
  vue.createVNode(_component_el_button, {
@@ -475223,12 +475385,12 @@ ${this.attributes_.map(
475223
475385
  const _hoisted_3$b = { class: "flex items-center justify-between" };
475224
475386
  const _hoisted_4$b = { class: "mb-5" };
475225
475387
  const _hoisted_5$b = { class: "mb-3" };
475226
- const _hoisted_6$b = {
475388
+ const _hoisted_6$a = {
475227
475389
  key: 0,
475228
475390
  class: "mb-3"
475229
475391
  };
475230
- const _hoisted_7$8 = { class: "flex gap-2" };
475231
- const _hoisted_8$5 = { class: "mb-5" };
475392
+ const _hoisted_7$9 = { class: "flex gap-2" };
475393
+ const _hoisted_8$6 = { class: "mb-5" };
475232
475394
  const _hoisted_9$5 = { class: "mb-3" };
475233
475395
  const _hoisted_10$5 = { class: "mb-3" };
475234
475396
  const _hoisted_11$5 = { key: 0 };
@@ -475798,8 +475960,8 @@ ${this.attributes_.map(
475798
475960
  _: 1
475799
475961
  }, 8, ["modelValue"])
475800
475962
  ]),
475801
- printSettings.paperSize === "Custom" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$b, [
475802
- vue.createElementVNode("div", _hoisted_7$8, [
475963
+ printSettings.paperSize === "Custom" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$a, [
475964
+ vue.createElementVNode("div", _hoisted_7$9, [
475803
475965
  vue.createVNode(_component_el_input, {
475804
475966
  modelValue: printSettings.customWidth,
475805
475967
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => printSettings.customWidth = $event),
@@ -475839,7 +476001,7 @@ ${this.attributes_.map(
475839
476001
  }, 8, ["modelValue"])
475840
476002
  ])
475841
476003
  ]),
475842
- vue.createElementVNode("div", _hoisted_8$5, [
476004
+ vue.createElementVNode("div", _hoisted_8$6, [
475843
476005
  _cache[23] || (_cache[23] = vue.createElementVNode("label", { class: "block text-sm font-medium text-gray-700 mb-2" }, "地图设置", -1)),
475844
476006
  vue.createElementVNode("div", _hoisted_9$5, [
475845
476007
  vue.createVNode(_component_el_select, {
@@ -476302,8 +476464,8 @@ ${this.attributes_.map(
476302
476464
  const _hoisted_3$a = { class: "tools-grid" };
476303
476465
  const _hoisted_4$a = ["onClick"];
476304
476466
  const _hoisted_5$a = ["src"];
476305
- const _hoisted_6$a = { class: "tool-label" };
476306
- const _hoisted_7$7 = {
476467
+ const _hoisted_6$9 = { class: "tool-label" };
476468
+ const _hoisted_7$8 = {
476307
476469
  key: 0,
476308
476470
  class: "stop-drawing-section"
476309
476471
  };
@@ -476872,11 +477034,11 @@ ${this.attributes_.map(
476872
477034
  key: 1,
476873
477035
  class: vue.normalizeClass([tool.icon, "tool-icon-large"])
476874
477036
  }, null, 2)),
476875
- vue.createElementVNode("span", _hoisted_6$a, vue.toDisplayString(tool.label), 1)
477037
+ vue.createElementVNode("span", _hoisted_6$9, vue.toDisplayString(tool.label), 1)
476876
477038
  ], 8, _hoisted_4$a);
476877
477039
  }), 128))
476878
477040
  ]),
476879
- activeDrawingTool.value && continuousDrawing.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$7, [
477041
+ activeDrawingTool.value && continuousDrawing.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$8, [
476880
477042
  vue.createVNode(_component_el_button, {
476881
477043
  type: "danger",
476882
477044
  size: "small",
@@ -476900,8 +477062,8 @@ ${this.attributes_.map(
476900
477062
  const _hoisted_3$9 = { class: "toolbar-left" };
476901
477063
  const _hoisted_4$9 = { class: "data-count" };
476902
477064
  const _hoisted_5$9 = { class: "list-content" };
476903
- const _hoisted_6$9 = { class: "tree-node" };
476904
- const _hoisted_7$6 = {
477065
+ const _hoisted_6$8 = { class: "tree-node" };
477066
+ const _hoisted_7$7 = {
476905
477067
  key: 1,
476906
477068
  class: "empty-state"
476907
477069
  };
@@ -476964,13 +477126,13 @@ ${this.attributes_.map(
476964
477126
  class: "tree-component"
476965
477127
  }, {
476966
477128
  default: vue.withCtx(({ data: data2 }) => [
476967
- vue.createElementVNode("div", _hoisted_6$9, [
477129
+ vue.createElementVNode("div", _hoisted_6$8, [
476968
477130
  _cache[3] || (_cache[3] = vue.createElementVNode("i", { class: "i-carbon-folder node-icon" }, null, -1)),
476969
477131
  vue.createElementVNode("span", null, vue.toDisplayString(data2.label), 1)
476970
477132
  ])
476971
477133
  ]),
476972
477134
  _: 1
476973
- }, 8, ["data"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$6, "暂无数据"))
477135
+ }, 8, ["data"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$7, "暂无数据"))
476974
477136
  ])
476975
477137
  ]);
476976
477138
  };
@@ -476983,8 +477145,8 @@ ${this.attributes_.map(
476983
477145
  const _hoisted_3$8 = { class: "toolbar-left" };
476984
477146
  const _hoisted_4$8 = ["onClick"];
476985
477147
  const _hoisted_5$8 = { class: "toolbar-right" };
476986
- const _hoisted_6$8 = ["onClick"];
476987
- const _hoisted_7$5 = { class: "content-area" };
477148
+ const _hoisted_6$7 = ["onClick"];
477149
+ const _hoisted_7$6 = { class: "content-area" };
476988
477150
  const _sfc_main$a = {
476989
477151
  __name: "index",
476990
477152
  setup(__props) {
@@ -477079,14 +477241,14 @@ ${this.attributes_.map(
477079
477241
  vue.createElementVNode("i", {
477080
477242
  class: vue.normalizeClass([tool.icon, "tool-icon"]),
477081
477243
  onClick: ($event) => handleToolClick(tool, "right", idx)
477082
- }, null, 10, _hoisted_6$8)
477244
+ }, null, 10, _hoisted_6$7)
477083
477245
  ]),
477084
477246
  _: 2
477085
477247
  }, 1032, ["content"]);
477086
477248
  }), 64))
477087
477249
  ])
477088
477250
  ]),
477089
- vue.createElementVNode("div", _hoisted_7$5, [
477251
+ vue.createElementVNode("div", _hoisted_7$6, [
477090
477252
  vue.createVNode(_component_el_tabs, {
477091
477253
  modelValue: activeTab.value,
477092
477254
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTab.value = $event),
@@ -478208,9 +478370,9 @@ ${this.attributes_.map(
478208
478370
  };
478209
478371
  const _hoisted_4$7 = { class: "section-title" };
478210
478372
  const _hoisted_5$7 = ["onClick"];
478211
- const _hoisted_6$7 = { class: "item-content" };
478212
- const _hoisted_7$4 = { class: "item-name" };
478213
- const _hoisted_8$4 = { class: "item-address" };
478373
+ const _hoisted_6$6 = { class: "item-content" };
478374
+ const _hoisted_7$5 = { class: "item-name" };
478375
+ const _hoisted_8$5 = { class: "item-address" };
478214
478376
  const _hoisted_9$4 = {
478215
478377
  key: 1,
478216
478378
  class: "search-section"
@@ -478583,9 +478745,9 @@ ${this.attributes_.map(
478583
478745
  ]),
478584
478746
  _: 1
478585
478747
  }),
478586
- vue.createElementVNode("div", _hoisted_6$7, [
478587
- vue.createElementVNode("div", _hoisted_7$4, vue.toDisplayString(item.name), 1),
478588
- vue.createElementVNode("div", _hoisted_8$4, vue.toDisplayString(item.address), 1)
478748
+ vue.createElementVNode("div", _hoisted_6$6, [
478749
+ vue.createElementVNode("div", _hoisted_7$5, vue.toDisplayString(item.name), 1),
478750
+ vue.createElementVNode("div", _hoisted_8$5, vue.toDisplayString(item.address), 1)
478589
478751
  ])
478590
478752
  ], 10, _hoisted_5$7)
478591
478753
  ]);
@@ -479215,9 +479377,9 @@ ${this.attributes_.map(
479215
479377
  const _hoisted_3$6 = { class: "panel-content max-h-125 overflow-y-auto" };
479216
479378
  const _hoisted_4$6 = { class: "p-2" };
479217
479379
  const _hoisted_5$6 = { class: "legend-content p-2" };
479218
- const _hoisted_6$6 = { key: 0 };
479219
- const _hoisted_7$3 = { class: "text-xs text-gray-600" };
479220
- const _hoisted_8$3 = { key: 1 };
479380
+ const _hoisted_6$5 = { key: 0 };
479381
+ const _hoisted_7$4 = { class: "text-xs text-gray-600" };
479382
+ const _hoisted_8$4 = { key: 1 };
479221
479383
  const _hoisted_9$3 = { class: "text-xs text-gray-600" };
479222
479384
  const _hoisted_10$3 = { key: 2 };
479223
479385
  const _hoisted_11$3 = { class: "relative mb-2" };
@@ -479484,7 +479646,7 @@ ${this.attributes_.map(
479484
479646
  }, {
479485
479647
  default: vue.withCtx(() => [
479486
479648
  vue.createElementVNode("div", _hoisted_5$6, [
479487
- legend.type === "symbol" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$6, [
479649
+ legend.type === "symbol" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$5, [
479488
479650
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(legend.items, (item) => {
479489
479651
  return vue.openBlock(), vue.createElementBlock("div", {
479490
479652
  key: item.value,
@@ -479494,10 +479656,10 @@ ${this.attributes_.map(
479494
479656
  class: "w-4 h-4 mr-2 border border-gray-300",
479495
479657
  style: vue.normalizeStyle(getSymbolStyle(item))
479496
479658
  }, null, 4),
479497
- vue.createElementVNode("span", _hoisted_7$3, vue.toDisplayString(item.label), 1)
479659
+ vue.createElementVNode("span", _hoisted_7$4, vue.toDisplayString(item.label), 1)
479498
479660
  ]);
479499
479661
  }), 128))
479500
- ])) : legend.type === "color" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$3, [
479662
+ ])) : legend.type === "color" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$4, [
479501
479663
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(legend.items, (item) => {
479502
479664
  return vue.openBlock(), vue.createElementBlock("div", {
479503
479665
  key: item.value,
@@ -479984,15 +480146,22 @@ ${this.attributes_.map(
479984
480146
  __publicField(this, "layerGroups", vue.ref([]));
479985
480147
  // 默认展开的节点
479986
480148
  __publicField(this, "defaultExpandedKeys", vue.ref([]));
479987
- // 默认选中的节点(基于图层可见性)
480149
+ // 默认选中的节点(基于图层及其children的可见性)
479988
480150
  __publicField(this, "defaultCheckedKeys", vue.computed(() => {
479989
480151
  const checkedKeys = [];
480152
+ const collectVisibleIds = (layer2) => {
480153
+ if (layer2.visible && layer2.type !== "group") {
480154
+ checkedKeys.push(layer2.id);
480155
+ }
480156
+ if (layer2.children && Array.isArray(layer2.children)) {
480157
+ layer2.children.forEach((child) => collectVisibleIds(child));
480158
+ }
480159
+ };
479990
480160
  this.layerGroups.value.forEach((group2) => {
479991
480161
  let allVisible = true;
479992
480162
  group2.layers.forEach((layer2) => {
479993
- if (layer2.visible) {
479994
- checkedKeys.push(layer2.id);
479995
- } else {
480163
+ collectVisibleIds(layer2);
480164
+ if (!layer2.visible) {
479996
480165
  allVisible = false;
479997
480166
  }
479998
480167
  });
@@ -480063,6 +480232,10 @@ ${this.attributes_.map(
480063
480232
  * @param data 树节点数据
480064
480233
  */
480065
480234
  handleLayerDoubleClick(data2) {
480235
+ if (data2.type === "group") {
480236
+ this.handleGroupDoubleClick(data2);
480237
+ return;
480238
+ }
480066
480239
  if (data2.type !== "layer" || !data2.layerData) {
480067
480240
  return;
480068
480241
  }
@@ -480140,6 +480313,96 @@ ${this.attributes_.map(
480140
480313
  ElMessage.error(`定位到图层失败: ${data2.layerData.name}`);
480141
480314
  }
480142
480315
  }
480316
+ /**
480317
+ * 处理分组双击事件 - 聚合定位到分组范围
480318
+ * @param data 分组树节点数据
480319
+ */
480320
+ handleGroupDoubleClick(data2) {
480321
+ var _a3;
480322
+ if (!this.layerManager || !this.map) {
480323
+ ElMessage.warning("地图或图层管理器未初始化");
480324
+ return;
480325
+ }
480326
+ const collectLayerConfigs = (node2, acc) => {
480327
+ if (node2.type === "layer" && node2.layerData) {
480328
+ acc.push(node2.layerData);
480329
+ if (node2.children && node2.children.length > 0) {
480330
+ node2.children.forEach((child) => collectLayerConfigs(child, acc));
480331
+ }
480332
+ } else if (node2.type === "group" && node2.children && node2.children.length > 0) {
480333
+ node2.children.forEach((child) => collectLayerConfigs(child, acc));
480334
+ }
480335
+ };
480336
+ const allConfigs = [];
480337
+ collectLayerConfigs(data2, allConfigs);
480338
+ if (allConfigs.length === 0) {
480339
+ ElMessage.info("分组下没有图层");
480340
+ return;
480341
+ }
480342
+ const extent3 = createEmpty$1();
480343
+ let hasValidExtent = false;
480344
+ for (const cfg of allConfigs) {
480345
+ if (cfg.visible === false)
480346
+ continue;
480347
+ const handler = this.layerManager.getLayerHandler(cfg.id);
480348
+ if (!handler)
480349
+ continue;
480350
+ const layer2 = handler.getLayer();
480351
+ if (!layer2)
480352
+ continue;
480353
+ const source = (_a3 = layer2.getSource) == null ? void 0 : _a3.call(layer2);
480354
+ let layerExtent = null;
480355
+ if (source && typeof source.getExtent === "function") {
480356
+ layerExtent = source.getExtent();
480357
+ } else if (source && source.getTileGrid && typeof source.getTileGrid === "function") {
480358
+ const tileGrid = source.getTileGrid();
480359
+ if (tileGrid && typeof tileGrid.getExtent === "function") {
480360
+ layerExtent = tileGrid.getExtent();
480361
+ }
480362
+ }
480363
+ if (layerExtent && Array.isArray(layerExtent) && layerExtent.every((v5) => isFinite(v5))) {
480364
+ extend$e(extent3, layerExtent);
480365
+ hasValidExtent = true;
480366
+ }
480367
+ }
480368
+ const view = this.map.getView();
480369
+ const defaultAnimationConfig = {
480370
+ enabled: true,
480371
+ duration: 1e3,
480372
+ easing: "ease-out",
480373
+ maxZoom: 16,
480374
+ padding: [50, 50, 50, 50]
480375
+ };
480376
+ if (!hasValidExtent || isEmpty$4(extent3)) {
480377
+ const centerCfg = allConfigs.find((c2) => Array.isArray(c2.center) && c2.center.length === 2);
480378
+ if (centerCfg && centerCfg.center) {
480379
+ const mapProjection = view.getProjection().getCode();
480380
+ const center2 = mapProjection === "EPSG:4326" || mapProjection === "EPSG:4490" ? centerCfg.center : fromLonLat$1(centerCfg.center);
480381
+ {
480382
+ view.animate({
480383
+ center: center2,
480384
+ zoom: 12,
480385
+ duration: defaultAnimationConfig.duration,
480386
+ easing: this.getEasingFunction(defaultAnimationConfig.easing)
480387
+ });
480388
+ }
480389
+ ElMessage.success(`已定位到图层组中心点: ${data2.label}`);
480390
+ return;
480391
+ }
480392
+ ElMessage.info(`无法计算图层组范围: ${data2.label}`);
480393
+ return;
480394
+ }
480395
+ const fitOptions = {
480396
+ padding: defaultAnimationConfig.padding,
480397
+ maxZoom: defaultAnimationConfig.maxZoom
480398
+ };
480399
+ {
480400
+ fitOptions.duration = defaultAnimationConfig.duration;
480401
+ fitOptions.easing = this.getEasingFunction(defaultAnimationConfig.easing);
480402
+ }
480403
+ view.fit(extent3, fitOptions);
480404
+ ElMessage.success(`已定位到图层组: ${data2.label}`);
480405
+ }
480143
480406
  /**
480144
480407
  * 获取缓动函数
480145
480408
  * @param easing 缓动类型
@@ -480177,13 +480440,13 @@ ${this.attributes_.map(
480177
480440
  * @returns 是否允许放置
480178
480441
  */
480179
480442
  allowDrop(draggingNode, dropNode, type) {
480180
- const draggingParent = this.findParentGroup(draggingNode.data.id);
480181
- const dropParent = this.findParentGroup(dropNode.data.id);
480443
+ const draggingContainer = this.findParentContainerNode(draggingNode.data.id);
480444
+ const dropContainer = this.findParentContainerNode(dropNode.data.id);
480182
480445
  if (dropNode.data.type === "group") {
480183
- return type === "inner" && (draggingParent == null ? void 0 : draggingParent.id) === dropNode.data.id;
480446
+ return type === "inner" && (draggingContainer == null ? void 0 : draggingContainer.id) === dropNode.data.id;
480184
480447
  }
480185
480448
  if (dropNode.data.type === "layer") {
480186
- return (type === "prev" || type === "next") && (draggingParent == null ? void 0 : draggingParent.id) === (dropParent == null ? void 0 : dropParent.id);
480449
+ return (type === "prev" || type === "next") && !!draggingContainer && !!dropContainer && draggingContainer.id === dropContainer.id;
480187
480450
  }
480188
480451
  return false;
480189
480452
  }
@@ -480193,13 +480456,48 @@ ${this.attributes_.map(
480193
480456
  * @returns 父分组或null
480194
480457
  */
480195
480458
  findParentGroup(nodeId) {
480459
+ const containsId = (layer2, targetId) => {
480460
+ if (layer2.id === targetId)
480461
+ return true;
480462
+ if (Array.isArray(layer2.children)) {
480463
+ return layer2.children.some((child) => containsId(child, targetId));
480464
+ }
480465
+ return false;
480466
+ };
480196
480467
  for (const group2 of this.layerGroups.value) {
480197
- if (group2.layers.some((layer2) => layer2.id === nodeId)) {
480468
+ if (group2.layers.some((layer2) => containsId(layer2, nodeId))) {
480198
480469
  return group2;
480199
480470
  }
480200
480471
  }
480201
480472
  return null;
480202
480473
  }
480474
+ /**
480475
+ * 查找节点所属的父“容器”节点(分组或带children的图层)
480476
+ * @param nodeId 节点ID
480477
+ * @returns 父容器的树节点,或null
480478
+ */
480479
+ findParentContainerNode(nodeId) {
480480
+ const search = (container) => {
480481
+ if (!container.children || container.children.length === 0)
480482
+ return null;
480483
+ for (const child of container.children) {
480484
+ if (child.id === nodeId)
480485
+ return container;
480486
+ if (child.children && child.children.length > 0) {
480487
+ const found = search(child);
480488
+ if (found)
480489
+ return found;
480490
+ }
480491
+ }
480492
+ return null;
480493
+ };
480494
+ for (const groupNode of this.treeData.value) {
480495
+ const found = search(groupNode);
480496
+ if (found)
480497
+ return found;
480498
+ }
480499
+ return null;
480500
+ }
480203
480501
  /**
480204
480502
  * 节点拖拽完成事件
480205
480503
  * @param draggingNode 拖拽节点
@@ -480217,22 +480515,18 @@ ${this.attributes_.map(
480217
480515
  if (!draggingLayer || !this.layerManager) {
480218
480516
  return;
480219
480517
  }
480220
- const parentGroup = this.findParentGroup(draggingLayer.id);
480221
- if (!parentGroup) {
480518
+ const parentContainer = this.findParentContainerNode(draggingLayer.id);
480519
+ if (!parentContainer || !parentContainer.children) {
480222
480520
  return;
480223
480521
  }
480224
- parentGroup.layers;
480225
480522
  const newOrder = [];
480226
- const groupNode = this.treeData.value.find((node2) => node2.id === parentGroup.id);
480227
- if (groupNode && groupNode.children) {
480228
- groupNode.children.forEach((child) => {
480229
- if (child.layerData) {
480230
- newOrder.push(child.layerData.id);
480231
- }
480232
- });
480233
- }
480523
+ parentContainer.children.forEach((child) => {
480524
+ if (child.layerData) {
480525
+ newOrder.push(child.layerData.id);
480526
+ }
480527
+ });
480234
480528
  this.layerManager.reorderLayers(newOrder);
480235
- ElMessage.success(`图层 "${draggingLayer.name}" 已重新排序`);
480529
+ ElMessage.success(`已在同一容器内重新排序:${draggingLayer.name}`);
480236
480530
  }
480237
480531
  /**
480238
480532
  * 获取图层图标类名
@@ -480511,9 +480805,9 @@ ${this.attributes_.map(
480511
480805
  const _hoisted_3$5 = { class: "config-item" };
480512
480806
  const _hoisted_4$5 = { class: "value-text" };
480513
480807
  const _hoisted_5$5 = { class: "config-item" };
480514
- const _hoisted_6$5 = { class: "value-text" };
480515
- const _hoisted_7$2 = { class: "config-item" };
480516
- const _hoisted_8$2 = { class: "value-text" };
480808
+ const _hoisted_6$4 = { class: "value-text" };
480809
+ const _hoisted_7$3 = { class: "config-item" };
480810
+ const _hoisted_8$3 = { class: "value-text" };
480517
480811
  const _hoisted_9$2 = { class: "config-item" };
480518
480812
  const _hoisted_10$2 = { class: "value-text" };
480519
480813
  const _hoisted_11$2 = { class: "config-section" };
@@ -480572,9 +480866,9 @@ ${this.attributes_.map(
480572
480866
  step: 1,
480573
480867
  onInput: handleFilterChange
480574
480868
  }, null, 8, ["modelValue"]),
480575
- vue.createElementVNode("span", _hoisted_6$5, vue.toDisplayString(_ctx.filters.saturate) + "%", 1)
480869
+ vue.createElementVNode("span", _hoisted_6$4, vue.toDisplayString(_ctx.filters.saturate) + "%", 1)
480576
480870
  ]),
480577
- vue.createElementVNode("div", _hoisted_7$2, [
480871
+ vue.createElementVNode("div", _hoisted_7$3, [
480578
480872
  _cache[13] || (_cache[13] = vue.createElementVNode("label", null, "亮度:", -1)),
480579
480873
  vue.createVNode(_component_el_slider, {
480580
480874
  modelValue: _ctx.filters.brightness,
@@ -480584,7 +480878,7 @@ ${this.attributes_.map(
480584
480878
  step: 1,
480585
480879
  onInput: handleFilterChange
480586
480880
  }, null, 8, ["modelValue"]),
480587
- vue.createElementVNode("span", _hoisted_8$2, vue.toDisplayString(_ctx.filters.brightness) + "%", 1)
480881
+ vue.createElementVNode("span", _hoisted_8$3, vue.toDisplayString(_ctx.filters.brightness) + "%", 1)
480588
480882
  ]),
480589
480883
  vue.createElementVNode("div", _hoisted_9$2, [
480590
480884
  _cache[14] || (_cache[14] = vue.createElementVNode("label", null, "对比度:", -1)),
@@ -480707,9 +481001,9 @@ ${this.attributes_.map(
480707
481001
  };
480708
481002
  const _hoisted_4$4 = { class: "config-item" };
480709
481003
  const _hoisted_5$4 = { class: "value-text" };
480710
- const _hoisted_6$4 = { class: "config-item" };
480711
- const _hoisted_7$1 = { class: "value-text" };
480712
- const _hoisted_8$1 = {
481004
+ const _hoisted_6$3 = { class: "config-item" };
481005
+ const _hoisted_7$2 = { class: "value-text" };
481006
+ const _hoisted_8$2 = {
480713
481007
  key: 1,
480714
481008
  class: "config-section"
480715
481009
  };
@@ -480765,7 +481059,7 @@ ${this.attributes_.map(
480765
481059
  }, null, 8, ["modelValue"]),
480766
481060
  vue.createElementVNode("span", _hoisted_5$4, vue.toDisplayString(_ctx.layerData.clusterDistance) + "px", 1)
480767
481061
  ]),
480768
- vue.createElementVNode("div", _hoisted_6$4, [
481062
+ vue.createElementVNode("div", _hoisted_6$3, [
480769
481063
  _cache[7] || (_cache[7] = vue.createElementVNode("label", null, "最小距离:", -1)),
480770
481064
  vue.createVNode(_component_el_slider, {
480771
481065
  modelValue: _ctx.layerData.minDistance,
@@ -480775,10 +481069,10 @@ ${this.attributes_.map(
480775
481069
  size: "small",
480776
481070
  onInput: handleClusterDistanceChange
480777
481071
  }, null, 8, ["modelValue"]),
480778
- vue.createElementVNode("span", _hoisted_7$1, vue.toDisplayString(_ctx.layerData.minDistance) + "px", 1)
481072
+ vue.createElementVNode("span", _hoisted_7$2, vue.toDisplayString(_ctx.layerData.minDistance) + "px", 1)
480779
481073
  ])
480780
481074
  ])) : vue.createCommentVNode("", true),
480781
- isSuperMapLayer.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$1, [
481075
+ isSuperMapLayer.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$2, [
480782
481076
  _cache[13] || (_cache[13] = vue.createElementVNode("h5", null, "SuperMap配置", -1)),
480783
481077
  vue.createElementVNode("div", _hoisted_9$1, [
480784
481078
  _cache[9] || (_cache[9] = vue.createElementVNode("label", null, "图片格式:", -1)),
@@ -480850,15 +481144,11 @@ ${this.attributes_.map(
480850
481144
  });
480851
481145
  const LayerStyleConfig_vue_vue_type_style_index_0_scoped_21ab8d8c_lang = "";
480852
481146
  const LayerStyleConfig = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-21ab8d8c"]]);
480853
- const _hoisted_1$3 = {
480854
- key: 0,
480855
- class: "group-node"
480856
- };
480857
- const _hoisted_2$3 = { class: "font-medium" };
480858
- const _hoisted_3$3 = { class: "layer-info" };
480859
- const _hoisted_4$3 = { class: "layer-name" };
480860
- const _hoisted_5$3 = { class: "opacity-control" };
480861
- const _hoisted_6$3 = { class: "opacity-value" };
481147
+ const _hoisted_1$3 = { class: "font-medium" };
481148
+ const _hoisted_2$3 = { class: "layer-info" };
481149
+ const _hoisted_3$3 = { class: "layer-name" };
481150
+ const _hoisted_4$3 = { class: "opacity-control" };
481151
+ const _hoisted_5$3 = { class: "opacity-value" };
480862
481152
  const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
480863
481153
  __name: "LayerTreeNode",
480864
481154
  props: {
@@ -480875,6 +481165,9 @@ ${this.attributes_.map(
480875
481165
  const handleDoubleClick = () => {
480876
481166
  emit("doubleClick", props.data);
480877
481167
  };
481168
+ const handleGroupDoubleClick = () => {
481169
+ emit("doubleClick", props.data);
481170
+ };
480878
481171
  const handleOpacityChange = () => {
480879
481172
  emit("opacityChange", props.data.layerData);
480880
481173
  };
@@ -480897,22 +481190,26 @@ ${this.attributes_.map(
480897
481190
  onDblclick: _cache[6] || (_cache[6] = vue.withModifiers(() => {
480898
481191
  }, ["stop"]))
480899
481192
  }, [
480900
- _ctx.data.type === "group" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
481193
+ _ctx.data.type === "group" ? (vue.openBlock(), vue.createElementBlock("div", {
481194
+ key: 0,
481195
+ class: "group-node",
481196
+ onDblclick: vue.withModifiers(handleGroupDoubleClick, ["stop", "prevent"])
481197
+ }, [
480901
481198
  vue.createVNode(_component_el_icon, { class: "mr-2" }, {
480902
481199
  default: vue.withCtx(() => [
480903
481200
  vue.createVNode(vue.unref(folder_opened_default))
480904
481201
  ]),
480905
481202
  _: 1
480906
481203
  }),
480907
- vue.createElementVNode("span", _hoisted_2$3, vue.toDisplayString(_ctx.data.label), 1)
480908
- ])) : (vue.openBlock(), vue.createElementBlock("div", {
481204
+ vue.createElementVNode("span", _hoisted_1$3, vue.toDisplayString(_ctx.data.label), 1)
481205
+ ], 32)) : (vue.openBlock(), vue.createElementBlock("div", {
480909
481206
  key: 1,
480910
481207
  class: "layer-item",
480911
481208
  onDblclick: vue.withModifiers(handleDoubleClick, ["stop", "prevent"]),
480912
481209
  onClick: _cache[5] || (_cache[5] = vue.withModifiers(() => {
480913
481210
  }, ["stop"]))
480914
481211
  }, [
480915
- vue.createElementVNode("div", _hoisted_3$3, [
481212
+ vue.createElementVNode("div", _hoisted_2$3, [
480916
481213
  vue.createVNode(_component_el_icon, {
480917
481214
  class: vue.normalizeClass(["layer-icon", layerIconClass.value])
480918
481215
  }, {
@@ -480921,7 +481218,7 @@ ${this.attributes_.map(
480921
481218
  ]),
480922
481219
  _: 1
480923
481220
  }, 8, ["class"]),
480924
- vue.createElementVNode("span", _hoisted_4$3, vue.toDisplayString(_ctx.data.label), 1)
481221
+ vue.createElementVNode("span", _hoisted_3$3, vue.toDisplayString(_ctx.data.label), 1)
480925
481222
  ]),
480926
481223
  vue.createElementVNode("div", {
480927
481224
  class: "layer-controls",
@@ -480932,7 +481229,7 @@ ${this.attributes_.map(
480932
481229
  onDblclick: _cache[4] || (_cache[4] = vue.withModifiers(() => {
480933
481230
  }, ["stop"]))
480934
481231
  }, [
480935
- vue.createElementVNode("div", _hoisted_5$3, [
481232
+ vue.createElementVNode("div", _hoisted_4$3, [
480936
481233
  vue.createVNode(_component_el_slider, {
480937
481234
  modelValue: _ctx.data.layerData.opacity,
480938
481235
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.data.layerData.opacity = $event),
@@ -480942,7 +481239,7 @@ ${this.attributes_.map(
480942
481239
  class: "opacity-slider",
480943
481240
  onInput: handleOpacityChange
480944
481241
  }, null, 8, ["modelValue"]),
480945
- vue.createElementVNode("span", _hoisted_6$3, vue.toDisplayString(_ctx.data.layerData.opacity) + "%", 1)
481242
+ vue.createElementVNode("span", _hoisted_5$3, vue.toDisplayString(_ctx.data.layerData.opacity) + "%", 1)
480946
481243
  ]),
480947
481244
  vue.createVNode(_component_el_popover, {
480948
481245
  placement: "left",
@@ -480986,14 +481283,16 @@ ${this.attributes_.map(
480986
481283
  };
480987
481284
  }
480988
481285
  });
480989
- const LayerTreeNode_vue_vue_type_style_index_0_scoped_7bff1f66_lang = "";
480990
- const LayerTreeNode = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-7bff1f66"]]);
481286
+ const LayerTreeNode_vue_vue_type_style_index_0_scoped_0c99df63_lang = "";
481287
+ const LayerTreeNode = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-0c99df63"]]);
480991
481288
  const _hoisted_1$2 = { class: "flex-1 overflow-y-auto p-4" };
480992
- const _hoisted_2$2 = { class: "global-style-panel" };
480993
- const _hoisted_3$2 = { class: "config-section" };
480994
- const _hoisted_4$2 = { class: "config-item" };
480995
- const _hoisted_5$2 = { class: "current-style-display" };
480996
- const _hoisted_6$2 = { class: "style-preview" };
481289
+ const _hoisted_2$2 = { class: "pb-2 flex items-center justify-between" };
481290
+ const _hoisted_3$2 = { class: "text-xs font-semibold text-gray-700 px-1 py-1 border-b border-gray-200 mb-2" };
481291
+ const _hoisted_4$2 = { class: "global-style-panel" };
481292
+ const _hoisted_5$2 = { class: "config-section" };
481293
+ const _hoisted_6$2 = { class: "config-item" };
481294
+ const _hoisted_7$1 = { class: "current-style-display" };
481295
+ const _hoisted_8$1 = { class: "style-preview" };
480997
481296
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
480998
481297
  __name: "LayerPanel",
480999
481298
  props: {
@@ -481010,17 +481309,25 @@ ${this.attributes_.map(
481010
481309
  const layerTreeManager = new LayerTreeManager();
481011
481310
  const layerConfigManager = new LayerConfigManager();
481012
481311
  const defaultExpandedKeys = vue.computed(() => layerTreeManager.defaultExpandedKeys.value);
481013
- const defaultCheckedKeys = vue.ref([]);
481014
- const treeData = vue.ref([]);
481015
- vue.onMounted(() => {
481016
- try {
481017
- defaultCheckedKeys.value = Array.isArray(layerTreeManager.defaultCheckedKeys.value) ? [...layerTreeManager.defaultCheckedKeys.value] : [];
481018
- const source = layerTreeManager.treeData.value;
481019
- treeData.value = source ? JSON.parse(JSON.stringify(source)) : [];
481020
- } catch (e3) {
481021
- defaultCheckedKeys.value = layerTreeManager.defaultCheckedKeys.value || [];
481022
- treeData.value = layerTreeManager.treeData.value || [];
481023
- }
481312
+ const defaultCheckedKeys = vue.computed(
481313
+ () => layerTreeManager.defaultCheckedKeys.value
481314
+ );
481315
+ const treeData = vue.computed(() => layerTreeManager.treeData.value);
481316
+ const dialogProps = vue.computed(() => {
481317
+ var _a3;
481318
+ const ui2 = ((_a3 = config == null ? void 0 : config.value) == null ? void 0 : _a3.ui) || {};
481319
+ return {
481320
+ title: ui2.title ?? "图层管理",
481321
+ width: ui2.width ?? "350px",
481322
+ height: ui2.height ?? "600px",
481323
+ modal: ui2.modal ?? false,
481324
+ draggable: ui2.draggable ?? true,
481325
+ resizable: ui2.resizable ?? true,
481326
+ showClose: ui2.showClose ?? true,
481327
+ position: ui2.position ?? "right",
481328
+ cacheId: ui2.cacheId ?? "layer-dialog",
481329
+ className: ui2.className ?? "layer-dialog"
481330
+ };
481024
481331
  });
481025
481332
  const handleLayerDoubleClick = (data2) => {
481026
481333
  layerTreeManager.handleLayerDoubleClick(data2, layerManager.value, map2.value);
@@ -481034,8 +481341,7 @@ ${this.attributes_.map(
481034
481341
  const onNodeDrop = (draggingNode, dropNode, dropType, ev) => {
481035
481342
  layerTreeManager.onNodeDrop(draggingNode, dropNode, dropType, ev);
481036
481343
  };
481037
- const onTreeCheck = (data2, { checkedKeys, checkedNodes }) => {
481038
- const allNodes = getAllTreeNodes(treeData.value);
481344
+ const onTreeCheck = (data2, { checkedKeys }) => {
481039
481345
  const group2 = layerGroups.value.find((g2) => g2.layers.some((l2) => l2.id === data2.id));
481040
481346
  if ((group2 == null ? void 0 : group2.id) === "baseLayers") {
481041
481347
  isProcessingBasemap.value = true;
@@ -481082,36 +481388,32 @@ ${this.attributes_.map(
481082
481388
  }
481083
481389
  return;
481084
481390
  }
481085
- allNodes.forEach((node2) => {
481086
- if (!checkedKeys.includes(node2.id)) {
481087
- if (node2.type === "layer" && node2.layerData) {
481088
- node2.layerData.visible = false;
481089
- handleLayerVisibilityChange(node2.layerData);
481090
- } else if (node2.type === "group") {
481091
- const group22 = layerGroups.value.find((g2) => g2.id === node2.id);
481092
- if (group22) {
481093
- group22.layers.forEach((layer2) => {
481094
- layer2.visible = false;
481095
- handleLayerVisibilityChange(layer2);
481096
- });
481097
- }
481098
- }
481099
- }
481100
- });
481101
- checkedNodes.forEach((node2) => {
481391
+ const isChecked = checkedKeys.includes(data2.id);
481392
+ const toggleNodeAndChildren = (node2, checked) => {
481102
481393
  if (node2.type === "layer" && node2.layerData) {
481103
- node2.layerData.visible = true;
481394
+ node2.layerData.visible = checked;
481104
481395
  handleLayerVisibilityChange(node2.layerData);
481105
- } else if (node2.type === "group") {
481106
- const group22 = layerGroups.value.find((g2) => g2.id === node2.id);
481107
- if (group22) {
481108
- group22.layers.forEach((layer2) => {
481109
- layer2.visible = true;
481110
- handleLayerVisibilityChange(layer2);
481111
- });
481396
+ if (node2.layerData.type === "group") {
481397
+ return;
481112
481398
  }
481113
481399
  }
481114
- });
481400
+ if (node2.children && node2.children.length > 0) {
481401
+ node2.children.forEach((child) => toggleNodeAndChildren(child, checked));
481402
+ }
481403
+ };
481404
+ if (data2.type === "group") {
481405
+ const targetGroup = layerGroups.value.find((g2) => g2.id === data2.id);
481406
+ if (targetGroup) {
481407
+ targetGroup.layers.forEach((layer2) => {
481408
+ layer2.visible = isChecked;
481409
+ handleLayerVisibilityChange(layer2);
481410
+ });
481411
+ } else {
481412
+ toggleNodeAndChildren(data2, isChecked);
481413
+ }
481414
+ } else {
481415
+ toggleNodeAndChildren(data2, isChecked);
481416
+ }
481115
481417
  vue.nextTick(() => {
481116
481418
  syncTreeCheckedState();
481117
481419
  });
@@ -481132,58 +481434,75 @@ ${this.attributes_.map(
481132
481434
  vue.inject("eventBus");
481133
481435
  vue.inject("storage");
481134
481436
  const mapManager = vue.inject("mapManager");
481135
- const dialogProps = vue.computed(() => {
481136
- var _a3;
481137
- const ui2 = ((_a3 = config == null ? void 0 : config.value) == null ? void 0 : _a3.ui) || {};
481138
- return {
481139
- title: ui2.title ?? "图层管理",
481140
- width: ui2.width ?? "350px",
481141
- height: ui2.height ?? "600px",
481142
- modal: ui2.modal ?? false,
481143
- draggable: ui2.draggable ?? true,
481144
- resizable: ui2.resizable ?? true,
481145
- showClose: ui2.showClose ?? true,
481146
- position: ui2.position ?? "right",
481147
- cacheId: ui2.cacheId ?? "layer-dialog",
481148
- className: ui2.className ?? "layer-dialog"
481149
- };
481150
- });
481151
- vue.watch(config, (newConfig) => {
481152
- var _a3, _b3, _c2;
481153
- console.log("🔍 [LayerPanel] config变化:", newConfig);
481154
- if (newConfig) {
481155
- console.log("🔍 [LayerPanel] baseLayers数量:", ((_a3 = newConfig.baseLayers) == null ? void 0 : _a3.length) || 0);
481156
- console.log("🔍 [LayerPanel] overlayLayers数量:", ((_b3 = newConfig.overlayLayers) == null ? void 0 : _b3.length) || 0);
481157
- console.log("🔍 [LayerPanel] vectorLayers数量:", ((_c2 = newConfig.vectorLayers) == null ? void 0 : _c2.length) || 0);
481158
- if (newConfig.overlayLayers && newConfig.overlayLayers.length > 0) {
481159
- console.log("🔍 [LayerPanel] overlayLayers详情:", newConfig.overlayLayers);
481437
+ vue.watch(
481438
+ config,
481439
+ (newConfig) => {
481440
+ var _a3, _b3, _c2;
481441
+ console.log("🔍 [LayerPanel] config变化:", newConfig);
481442
+ if (newConfig) {
481443
+ console.log(
481444
+ "🔍 [LayerPanel] baseLayers数量:",
481445
+ ((_a3 = newConfig.baseLayers) == null ? void 0 : _a3.length) || 0
481446
+ );
481447
+ console.log(
481448
+ "🔍 [LayerPanel] overlayLayers数量:",
481449
+ ((_b3 = newConfig.overlayLayers) == null ? void 0 : _b3.length) || 0
481450
+ );
481451
+ console.log(
481452
+ "🔍 [LayerPanel] vectorLayers数量:",
481453
+ ((_c2 = newConfig.vectorLayers) == null ? void 0 : _c2.length) || 0
481454
+ );
481455
+ if (newConfig.overlayLayers && newConfig.overlayLayers.length > 0) {
481456
+ console.log(
481457
+ "🔍 [LayerPanel] overlayLayers详情:",
481458
+ newConfig.overlayLayers
481459
+ );
481460
+ }
481160
481461
  }
481161
- }
481162
- }, { immediate: true, deep: true });
481462
+ },
481463
+ { immediate: true, deep: true }
481464
+ );
481163
481465
  const layers = vue.ref([]);
481164
481466
  vue.ref(null);
481165
481467
  const emit = __emit;
481166
481468
  vue.ref(false);
481167
481469
  vue.ref(null);
481168
- const layerManager = vue.computed(() => {
481169
- var _a3;
481170
- return ((_a3 = mapManager == null ? void 0 : mapManager.value) == null ? void 0 : _a3.getLayerManager()) || null;
481171
- });
481470
+ const layerManager = vue.computed(
481471
+ () => {
481472
+ var _a3;
481473
+ return ((_a3 = mapManager == null ? void 0 : mapManager.value) == null ? void 0 : _a3.getLayerManager()) || null;
481474
+ }
481475
+ );
481172
481476
  const getAllConfigLayers = () => {
481173
481477
  console.log("🔍 [LayerPanel] getAllConfigLayers被调用");
481174
481478
  console.log("🔍 [LayerPanel] config.value:", config.value);
481175
481479
  const allLayers = [];
481176
481480
  if (config.value.baseLayers) {
481177
- console.log("🔍 [LayerPanel] 添加baseLayers:", config.value.baseLayers.length, "个");
481481
+ console.log(
481482
+ "🔍 [LayerPanel] 添加baseLayers:",
481483
+ config.value.baseLayers.length,
481484
+ "个"
481485
+ );
481178
481486
  allLayers.push(...config.value.baseLayers);
481179
481487
  }
481180
481488
  if (config.value.overlayLayers) {
481181
- console.log("🔍 [LayerPanel] 添加overlayLayers:", config.value.overlayLayers.length, "个");
481182
- console.log("🔍 [LayerPanel] overlayLayers详情:", config.value.overlayLayers);
481489
+ console.log(
481490
+ "🔍 [LayerPanel] 添加overlayLayers:",
481491
+ config.value.overlayLayers.length,
481492
+ "个"
481493
+ );
481494
+ console.log(
481495
+ "🔍 [LayerPanel] overlayLayers详情:",
481496
+ config.value.overlayLayers
481497
+ );
481183
481498
  allLayers.push(...config.value.overlayLayers);
481184
481499
  }
481185
481500
  if (config.value.vectorLayers) {
481186
- console.log("🔍 [LayerPanel] 添加vectorLayers:", config.value.vectorLayers.length, "个");
481501
+ console.log(
481502
+ "🔍 [LayerPanel] 添加vectorLayers:",
481503
+ config.value.vectorLayers.length,
481504
+ "个"
481505
+ );
481187
481506
  allLayers.push(...config.value.vectorLayers);
481188
481507
  }
481189
481508
  console.log("🔍 [LayerPanel] 总共获取到图层数量:", allLayers.length);
@@ -481215,7 +481534,9 @@ ${this.attributes_.map(
481215
481534
  });
481216
481535
  }
481217
481536
  baseLayers.forEach((baseLayer) => {
481218
- const originalLayer = configLayers.find((layer2) => layer2.id === baseLayer.id);
481537
+ const originalLayer = configLayers.find(
481538
+ (layer2) => layer2.id === baseLayer.id
481539
+ );
481219
481540
  if (originalLayer) {
481220
481541
  originalLayer.visible = baseLayer.visible;
481221
481542
  }
@@ -481223,21 +481544,43 @@ ${this.attributes_.map(
481223
481544
  }
481224
481545
  for (const layerConfig of configLayers) {
481225
481546
  if (!layers.value.find((l2) => l2.id === layerConfig.id)) {
481226
- console.log("🔍 [LayerPanel] 注册图层配置:", layerConfig.id, "可见:", layerConfig.visible);
481547
+ console.log(
481548
+ "🔍 [LayerPanel] 注册图层配置:",
481549
+ layerConfig.id,
481550
+ "可见:",
481551
+ layerConfig.visible
481552
+ );
481227
481553
  const success = await layerManager.value.addLayer(layerConfig);
481228
481554
  if (success) {
481229
- const addedLayerConfig = layerManager.value.getLayerConfig(layerConfig.id);
481555
+ const addedLayerConfig = layerManager.value.getLayerConfig(
481556
+ layerConfig.id
481557
+ );
481230
481558
  if (addedLayerConfig) {
481231
481559
  layers.value.push(addedLayerConfig);
481232
- console.log("🔍 [LayerPanel] 图层配置已注册:", layerConfig.id, "已加载:", layerManager.value.isLayerLoaded(layerConfig.id));
481560
+ console.log(
481561
+ "🔍 [LayerPanel] 图层配置已注册:",
481562
+ layerConfig.id,
481563
+ "已加载:",
481564
+ layerManager.value.isLayerLoaded(layerConfig.id)
481565
+ );
481233
481566
  }
481234
481567
  } else {
481235
- console.error("🔍 [LayerPanel] 图层配置注册失败:", layerConfig.id, layerConfig.type);
481568
+ console.error(
481569
+ "🔍 [LayerPanel] 图层配置注册失败:",
481570
+ layerConfig.id,
481571
+ layerConfig.type
481572
+ );
481236
481573
  }
481237
481574
  }
481238
481575
  }
481239
- console.log("🔍 [LayerPanel] 配置应用完成,已加载图层数量:", layerManager.value.getAllLayerConfigs().filter((config2) => layerManager.value.isLayerLoaded(config2.id)).length);
481240
- console.log("🔍 [LayerPanel] 总图层配置数量:", layerManager.value.getAllLayerConfigs().length);
481576
+ console.log(
481577
+ "🔍 [LayerPanel] 配置应用完成,已加载图层数量:",
481578
+ layerManager.value.getAllLayerConfigs().filter((config2) => layerManager.value.isLayerLoaded(config2.id)).length
481579
+ );
481580
+ console.log(
481581
+ "🔍 [LayerPanel] 总图层配置数量:",
481582
+ layerManager.value.getAllLayerConfigs().length
481583
+ );
481241
481584
  } catch (error2) {
481242
481585
  console.error("Failed to apply config to map:", error2);
481243
481586
  ElMessage.error(`配置应用失败: ${error2.message}`);
@@ -481293,6 +481636,23 @@ ${this.attributes_.map(
481293
481636
  const handleClose = () => {
481294
481637
  emit("update:modelValue", false);
481295
481638
  };
481639
+ const expandedKeys = vue.ref([]);
481640
+ const onNodeExpand = (data2) => {
481641
+ debugger;
481642
+ const id2 = data2 == null ? void 0 : data2.id;
481643
+ if (!id2)
481644
+ return;
481645
+ if (!expandedKeys.value.includes(id2))
481646
+ expandedKeys.value.push(id2);
481647
+ initializeExpandedKeys();
481648
+ };
481649
+ const onNodeCollapse = (data2) => {
481650
+ const id2 = data2 == null ? void 0 : data2.id;
481651
+ if (!id2)
481652
+ return;
481653
+ expandedKeys.value = expandedKeys.value.filter((k2) => k2 !== id2);
481654
+ initializeExpandedKeys();
481655
+ };
481296
481656
  const layerGroups = vue.computed(() => {
481297
481657
  var _a3, _b3, _c2, _d, _e2, _f;
481298
481658
  const ensureFilterProperty = (layers2) => {
@@ -481327,18 +481687,24 @@ ${this.attributes_.map(
481327
481687
  };
481328
481688
  if (layers.value.length > 0) {
481329
481689
  const groups2 = [];
481330
- const baseLayerIds = new Set((((_a3 = config == null ? void 0 : config.value) == null ? void 0 : _a3.baseLayers) || []).map((layer2) => layer2.id));
481331
- const overlayLayerIds = new Set((((_b3 = config == null ? void 0 : config.value) == null ? void 0 : _b3.overlayLayers) || []).map((layer2) => layer2.id));
481332
- const vectorLayerIds = new Set((((_c2 = config == null ? void 0 : config.value) == null ? void 0 : _c2.vectorLayers) || []).map((layer2) => layer2.id));
481333
- const baseLayersList = ensureFilterProperty(layers.value.filter(
481334
- (layer2) => baseLayerIds.has(layer2.id)
481335
- ));
481336
- const overlayLayersList = ensureFilterProperty(layers.value.filter(
481337
- (layer2) => overlayLayerIds.has(layer2.id)
481338
- ));
481339
- const vectorLayersList = ensureFilterProperty(layers.value.filter(
481340
- (layer2) => vectorLayerIds.has(layer2.id)
481341
- ));
481690
+ const baseLayerIds = new Set(
481691
+ (((_a3 = config == null ? void 0 : config.value) == null ? void 0 : _a3.baseLayers) || []).map((layer2) => layer2.id)
481692
+ );
481693
+ const overlayLayerIds = new Set(
481694
+ (((_b3 = config == null ? void 0 : config.value) == null ? void 0 : _b3.overlayLayers) || []).map((layer2) => layer2.id)
481695
+ );
481696
+ const vectorLayerIds = new Set(
481697
+ (((_c2 = config == null ? void 0 : config.value) == null ? void 0 : _c2.vectorLayers) || []).map((layer2) => layer2.id)
481698
+ );
481699
+ const baseLayersList = ensureFilterProperty(
481700
+ layers.value.filter((layer2) => baseLayerIds.has(layer2.id))
481701
+ );
481702
+ const overlayLayersList = ensureFilterProperty(
481703
+ layers.value.filter((layer2) => overlayLayerIds.has(layer2.id))
481704
+ );
481705
+ const vectorLayersList = ensureFilterProperty(
481706
+ layers.value.filter((layer2) => vectorLayerIds.has(layer2.id))
481707
+ );
481342
481708
  if (baseLayersList.length > 0) {
481343
481709
  groups2.push({
481344
481710
  id: "baseLayers",
@@ -481394,49 +481760,90 @@ ${this.attributes_.map(
481394
481760
  }
481395
481761
  return groups;
481396
481762
  });
481763
+ const activeTreeType = vue.ref("classification");
481764
+ const classificationGroups = vue.computed(() => {
481765
+ const vectorGroup = layerGroups.value.find((g2) => g2.id === "vectorLayers");
481766
+ if (!vectorGroup)
481767
+ return [];
481768
+ const buckets = /* @__PURE__ */ new Map();
481769
+ const getClassification = (layer2) => {
481770
+ const anyLayer = layer2;
481771
+ const meta = anyLayer.metadata || {};
481772
+ return anyLayer.classificationName ?? meta.classificationName ?? anyLayer.sslx ?? "未分类";
481773
+ };
481774
+ for (const layer2 of vectorGroup.layers) {
481775
+ const key2 = getClassification(layer2) || "未分类";
481776
+ const arr = buckets.get(key2) ?? [];
481777
+ arr.push(layer2);
481778
+ buckets.set(key2, arr);
481779
+ }
481780
+ const groups = [];
481781
+ buckets.forEach((arr, key2) => {
481782
+ groups.push({
481783
+ id: `class:${key2}`,
481784
+ name: key2,
481785
+ layers: arr
481786
+ });
481787
+ });
481788
+ return groups;
481789
+ });
481790
+ const effectiveLayerGroups = vue.computed(() => {
481791
+ return activeTreeType.value === "classification" ? classificationGroups.value : layerGroups.value;
481792
+ });
481793
+ const classificationTreeRefs = vue.ref({});
481794
+ const buildLayerNodeLocal = (layer2) => {
481795
+ const node2 = {
481796
+ id: layer2.id,
481797
+ label: layer2.name,
481798
+ type: "layer",
481799
+ layerType: layer2.type,
481800
+ layerData: layer2
481801
+ };
481802
+ if (layer2.children && Array.isArray(layer2.children) && layer2.children.length > 0) {
481803
+ node2.children = layer2.children.map((child) => buildLayerNodeLocal(child));
481804
+ }
481805
+ return node2;
481806
+ };
481807
+ const getGroupTreeData = (group2) => {
481808
+ return group2.layers.map((layer2) => buildLayerNodeLocal(layer2));
481809
+ };
481397
481810
  const initializeExpandedKeys = () => {
481398
- layerTreeManager.setDefaultExpandedKeys(layerGroups.value.map((group2) => group2.id));
481811
+ const groupIds = effectiveLayerGroups.value.map((group2) => group2.id);
481812
+ const union3 = Array.from(/* @__PURE__ */ new Set([...groupIds, ...expandedKeys.value]));
481813
+ layerTreeManager.setDefaultExpandedKeys(union3);
481399
481814
  };
481400
481815
  const syncTreeCheckedState = () => {
481401
- if (treeRef.value) {
481402
- const checkedKeys = layerTreeManager.defaultCheckedKeys.value;
481403
- treeRef.value.setCheckedKeys(checkedKeys);
481816
+ const checkedKeys = defaultCheckedKeys.value;
481817
+ if (activeTreeType.value === "classification") {
481818
+ Object.values(classificationTreeRefs.value).forEach((tree) => {
481819
+ try {
481820
+ tree == null ? void 0 : tree.setCheckedKeys(checkedKeys);
481821
+ } catch (e3) {
481822
+ }
481823
+ });
481824
+ } else {
481825
+ if (treeRef.value) {
481826
+ treeRef.value.setCheckedKeys(checkedKeys);
481827
+ }
481404
481828
  }
481405
481829
  };
481406
- const hasTreeSnapshot = vue.ref(false);
481407
- const expectedLayerCount = vue.computed(() => {
481408
- var _a3, _b3, _c2;
481409
- const c2 = (config == null ? void 0 : config.value) || {};
481410
- const total = (((_a3 = c2.baseLayers) == null ? void 0 : _a3.length) || 0) + (((_b3 = c2.overlayLayers) == null ? void 0 : _b3.length) || 0) + (((_c2 = c2.vectorLayers) == null ? void 0 : _c2.length) || 0);
481411
- return total;
481412
- });
481413
481830
  vue.watchEffect(() => {
481414
- if (layerGroups.value.length > 0) {
481415
- layerTreeManager.setLayerGroups(layerGroups.value);
481416
- layerTreeManager.setDefaultExpandedKeys(layerGroups.value.map((group2) => group2.id));
481831
+ if (effectiveLayerGroups.value.length > 0) {
481832
+ layerTreeManager.setLayerGroups(effectiveLayerGroups.value);
481833
+ const groupIds = effectiveLayerGroups.value.map((group2) => group2.id);
481834
+ const union3 = Array.from(/* @__PURE__ */ new Set([...groupIds, ...expandedKeys.value]));
481835
+ layerTreeManager.setDefaultExpandedKeys(union3);
481417
481836
  initializeExpandedKeys();
481418
- if (!hasTreeSnapshot.value) {
481419
- const isInitialRegistrationDone = layers.value.length >= expectedLayerCount.value || expectedLayerCount.value === 0;
481420
- console.log("🔍 [LayerPanel] 快照准备检查: layers.length=", layers.value.length, " expected=", expectedLayerCount.value, " done=", isInitialRegistrationDone);
481421
- if (isInitialRegistrationDone) {
481422
- try {
481423
- defaultCheckedKeys.value = Array.isArray(layerTreeManager.defaultCheckedKeys.value) ? [...layerTreeManager.defaultCheckedKeys.value] : [];
481424
- const source = layerTreeManager.treeData.value;
481425
- treeData.value = source ? JSON.parse(JSON.stringify(source)) : [];
481426
- } catch (e3) {
481427
- defaultCheckedKeys.value = layerTreeManager.defaultCheckedKeys.value || [];
481428
- treeData.value = layerTreeManager.treeData.value || [];
481429
- }
481430
- hasTreeSnapshot.value = true;
481431
- }
481432
- }
481433
481837
  vue.nextTick(() => {
481434
481838
  syncTreeCheckedState();
481435
481839
  });
481436
481840
  }
481437
481841
  });
481438
481842
  const layerVisibilityState = vue.computed(() => {
481439
- return layers.value.map((layer2) => ({ id: layer2.id, visible: layer2.visible }));
481843
+ return layers.value.map((layer2) => ({
481844
+ id: layer2.id,
481845
+ visible: layer2.visible
481846
+ }));
481440
481847
  });
481441
481848
  const isProcessingBasemap = vue.ref(false);
481442
481849
  const activeMainTab = vue.ref("layers");
@@ -481486,7 +481893,11 @@ ${this.attributes_.map(
481486
481893
  if (!layerConfigManager["layerManager"]) {
481487
481894
  layerConfigManager.initialize(layerManager.value);
481488
481895
  }
481489
- layerConfigManager.updateClusterDistance(layerData, layerManager.value, updateLayerConfig);
481896
+ layerConfigManager.updateClusterDistance(
481897
+ layerData,
481898
+ layerManager.value,
481899
+ updateLayerConfig
481900
+ );
481490
481901
  };
481491
481902
  const updateSuperMapConfig = (layerData) => {
481492
481903
  if (!layerManager.value) {
@@ -481496,7 +481907,11 @@ ${this.attributes_.map(
481496
481907
  if (!layerConfigManager["layerManager"]) {
481497
481908
  layerConfigManager.initialize(layerManager.value);
481498
481909
  }
481499
- layerConfigManager.updateSuperMapConfig(layerData, layerManager.value, updateLayerConfig);
481910
+ layerConfigManager.updateSuperMapConfig(
481911
+ layerData,
481912
+ layerManager.value,
481913
+ updateLayerConfig
481914
+ );
481500
481915
  };
481501
481916
  const resetLayerStyle = (layerData) => {
481502
481917
  if (!layerManager.value) {
@@ -481506,7 +481921,11 @@ ${this.attributes_.map(
481506
481921
  if (!layerConfigManager["layerManager"]) {
481507
481922
  layerConfigManager.initialize(layerManager.value);
481508
481923
  }
481509
- layerConfigManager.resetLayerStyle(layerData, updateClusterDistance, updateSuperMapConfig);
481924
+ layerConfigManager.resetLayerStyle(
481925
+ layerData,
481926
+ updateClusterDistance,
481927
+ updateSuperMapConfig
481928
+ );
481510
481929
  };
481511
481930
  const handleLayerVisibilityChange = async (layer2) => {
481512
481931
  if (layerManager.value) {
@@ -481515,9 +481934,7 @@ ${this.attributes_.map(
481515
481934
  updateLayerConfig(layer2.id, {
481516
481935
  visible: layer2.visible
481517
481936
  });
481518
- console.log("🔍 [LayerPanel] 图层可见性已更新:", layer2.id, "可见:", layer2.visible, "已加载:", layerManager.value.isLayerLoaded(layer2.id));
481519
481937
  } catch (error2) {
481520
- console.error("🔍 [LayerPanel] 更新图层可见性失败:", layer2.id, error2);
481521
481938
  ElMessage.error(`图层 ${layer2.name} 可见性更新失败`);
481522
481939
  return;
481523
481940
  }
@@ -481547,7 +481964,9 @@ ${this.attributes_.map(
481547
481964
  }
481548
481965
  };
481549
481966
  const handleBasemapChanged = (event) => {
481550
- const baseLayersGroup = layerGroups.value.find((group2) => group2.id === "baseLayers");
481967
+ const baseLayersGroup = layerGroups.value.find(
481968
+ (group2) => group2.id === "baseLayers"
481969
+ );
481551
481970
  if (!baseLayersGroup)
481552
481971
  return;
481553
481972
  baseLayersGroup.layers.forEach((layer2) => {
@@ -481565,34 +481984,46 @@ ${this.attributes_.map(
481565
481984
  });
481566
481985
  };
481567
481986
  const handleBasemapSwitchRequest = (event) => {
481568
- const baseLayersGroup = layerGroups.value.find((group2) => group2.id === "baseLayers");
481987
+ const baseLayersGroup = layerGroups.value.find(
481988
+ (group2) => group2.id === "baseLayers"
481989
+ );
481569
481990
  if (!baseLayersGroup) {
481570
481991
  console.warn("未找到底图分组");
481571
481992
  return;
481572
481993
  }
481573
481994
  if (event.basemapConfig === null) {
481574
- const targetLayer2 = baseLayersGroup.layers.find((layer2) => layer2.id === event.basemapId);
481995
+ const targetLayer2 = baseLayersGroup.layers.find(
481996
+ (layer2) => layer2.id === event.basemapId
481997
+ );
481575
481998
  if (targetLayer2 && targetLayer2.visible) {
481576
481999
  targetLayer2.visible = false;
481577
482000
  handleLayerVisibilityChange(targetLayer2);
481578
482001
  vue.nextTick(() => {
481579
482002
  if (treeRef.value) {
481580
482003
  const currentCheckedKeys = treeRef.value.getCheckedKeys();
481581
- const newCheckedKeys = currentCheckedKeys.filter((key2) => key2 !== event.basemapId);
482004
+ const newCheckedKeys = currentCheckedKeys.filter(
482005
+ (key2) => key2 !== event.basemapId
482006
+ );
481582
482007
  treeRef.value.setCheckedKeys(newCheckedKeys);
481583
482008
  }
481584
482009
  });
481585
482010
  }
481586
482011
  return;
481587
482012
  }
481588
- let targetLayer = baseLayersGroup.layers.find((layer2) => layer2.id === event.basemapId);
482013
+ let targetLayer = baseLayersGroup.layers.find(
482014
+ (layer2) => layer2.id === event.basemapId
482015
+ );
481589
482016
  if (!targetLayer && layerManager.value && event.basemapConfig) {
481590
482017
  const success = layerManager.value.addLayer(event.basemapConfig);
481591
482018
  if (success) {
481592
482019
  const allLayerConfigs = layerManager.value.getAllLayerConfigs();
481593
482020
  layers.value = allLayerConfigs;
481594
- const updatedBaseLayersGroup = layerGroups.value.find((group2) => group2.id === "baseLayers");
481595
- targetLayer = updatedBaseLayersGroup == null ? void 0 : updatedBaseLayersGroup.layers.find((layer2) => layer2.id === event.basemapId);
482021
+ const updatedBaseLayersGroup = layerGroups.value.find(
482022
+ (group2) => group2.id === "baseLayers"
482023
+ );
482024
+ targetLayer = updatedBaseLayersGroup == null ? void 0 : updatedBaseLayersGroup.layers.find(
482025
+ (layer2) => layer2.id === event.basemapId
482026
+ );
481596
482027
  }
481597
482028
  }
481598
482029
  if (!targetLayer) {
@@ -481621,12 +482052,14 @@ ${this.attributes_.map(
481621
482052
  layerEventBus.off("basemap-switch-request", handleBasemapSwitchRequest);
481622
482053
  });
481623
482054
  return (_ctx, _cache) => {
482055
+ const _component_el_radio_button = vue.resolveComponent("el-radio-button");
482056
+ const _component_el_radio_group = vue.resolveComponent("el-radio-group");
481624
482057
  const _component_el_tree = vue.resolveComponent("el-tree");
481625
482058
  const _component_el_tab_pane = vue.resolveComponent("el-tab-pane");
481626
482059
  const _component_el_tabs = vue.resolveComponent("el-tabs");
481627
482060
  return vue.openBlock(), vue.createBlock(CustomDialog, {
481628
482061
  modelValue: visible.value,
481629
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => visible.value = $event),
482062
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => visible.value = $event),
481630
482063
  title: dialogProps.value.title,
481631
482064
  width: dialogProps.value.width,
481632
482065
  height: dialogProps.value.height,
@@ -481659,11 +482092,12 @@ ${this.attributes_.map(
481659
482092
  defaultExpandedKeys: defaultExpandedKeys.value,
481660
482093
  defaultCheckedKeys: defaultCheckedKeys.value,
481661
482094
  syncTreeCheckedState,
481662
- getAllTreeNodes
482095
+ getAllTreeNodes,
482096
+ onNodeExpand
481663
482097
  }, void 0, true) : (vue.openBlock(), vue.createBlock(_component_el_tabs, {
481664
482098
  key: 1,
481665
482099
  modelValue: activeMainTab.value,
481666
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => activeMainTab.value = $event),
482100
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => activeMainTab.value = $event),
481667
482101
  class: "main-tabs"
481668
482102
  }, {
481669
482103
  default: vue.withCtx(() => [
@@ -481673,7 +482107,32 @@ ${this.attributes_.map(
481673
482107
  }, {
481674
482108
  default: vue.withCtx(() => [
481675
482109
  vue.createElementVNode("div", _hoisted_1$2, [
481676
- vue.createVNode(_component_el_tree, {
482110
+ vue.createElementVNode("div", _hoisted_2$2, [
482111
+ _cache[7] || (_cache[7] = vue.createElementVNode("div", { class: "text-sm text-gray-600" }, "树形视图", -1)),
482112
+ vue.createVNode(_component_el_radio_group, {
482113
+ modelValue: activeTreeType.value,
482114
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => activeTreeType.value = $event),
482115
+ size: "small"
482116
+ }, {
482117
+ default: vue.withCtx(() => [
482118
+ vue.createVNode(_component_el_radio_button, { label: "default" }, {
482119
+ default: vue.withCtx(() => [..._cache[5] || (_cache[5] = [
482120
+ vue.createTextVNode("按配置分组", -1)
482121
+ ])]),
482122
+ _: 1
482123
+ }),
482124
+ vue.createVNode(_component_el_radio_button, { label: "classification" }, {
482125
+ default: vue.withCtx(() => [..._cache[6] || (_cache[6] = [
482126
+ vue.createTextVNode("按分类分组", -1)
482127
+ ])]),
482128
+ _: 1
482129
+ })
482130
+ ]),
482131
+ _: 1
482132
+ }, 8, ["modelValue"])
482133
+ ]),
482134
+ activeTreeType.value === "default" ? (vue.openBlock(), vue.createBlock(_component_el_tree, {
482135
+ key: 0,
481677
482136
  ref_key: "treeRef",
481678
482137
  ref: treeRef,
481679
482138
  data: treeData.value,
@@ -481683,11 +482142,14 @@ ${this.attributes_.map(
481683
482142
  "default-checked-keys": defaultCheckedKeys.value,
481684
482143
  "show-checkbox": true,
481685
482144
  "check-strictly": false,
482145
+ "expand-on-click-node": false,
481686
482146
  draggable: true,
481687
482147
  "allow-drop": allowDrop,
481688
482148
  "allow-drag": allowDrag,
481689
482149
  onCheck: onTreeCheck,
481690
482150
  onNodeDrop,
482151
+ onNodeExpand,
482152
+ onNodeCollapse,
481691
482153
  class: "layer-tree"
481692
482154
  }, {
481693
482155
  default: vue.withCtx(({ node: node2, data: data2 }) => [
@@ -481702,7 +482164,47 @@ ${this.attributes_.map(
481702
482164
  }, null, 8, ["data", "layer-tree-manager"])
481703
482165
  ]),
481704
482166
  _: 1
481705
- }, 8, ["data", "default-expanded-keys", "default-checked-keys"])
482167
+ }, 8, ["data", "default-expanded-keys", "default-checked-keys"])) : (vue.openBlock(true), vue.createElementBlock(vue.Fragment, { key: 1 }, vue.renderList(classificationGroups.value, (group2) => {
482168
+ return vue.openBlock(), vue.createElementBlock("div", {
482169
+ key: group2.id,
482170
+ class: "mb-3"
482171
+ }, [
482172
+ vue.createElementVNode("div", _hoisted_3$2, vue.toDisplayString(group2.name), 1),
482173
+ vue.createVNode(_component_el_tree, {
482174
+ ref_for: true,
482175
+ ref: (el) => classificationTreeRefs.value[group2.id] = el,
482176
+ data: getGroupTreeData(group2),
482177
+ props: treeProps,
482178
+ "node-key": "id",
482179
+ "default-expanded-keys": defaultExpandedKeys.value,
482180
+ "default-checked-keys": defaultCheckedKeys.value,
482181
+ "show-checkbox": true,
482182
+ "check-strictly": false,
482183
+ "expand-on-click-node": false,
482184
+ draggable: true,
482185
+ "allow-drop": allowDrop,
482186
+ "allow-drag": allowDrag,
482187
+ onCheck: onTreeCheck,
482188
+ onNodeDrop,
482189
+ onNodeExpand,
482190
+ onNodeCollapse,
482191
+ class: "layer-tree"
482192
+ }, {
482193
+ default: vue.withCtx(({ node: node2, data: data2 }) => [
482194
+ vue.createVNode(LayerTreeNode, {
482195
+ data: data2,
482196
+ "layer-tree-manager": vue.unref(layerTreeManager),
482197
+ onDoubleClick: handleLayerDoubleClick,
482198
+ onOpacityChange: updateLayerOpacity,
482199
+ onClusterDistanceChange: updateClusterDistance,
482200
+ onSuperMapConfigChange: updateSuperMapConfig,
482201
+ onStyleReset: resetLayerStyle
482202
+ }, null, 8, ["data", "layer-tree-manager"])
482203
+ ]),
482204
+ _: 2
482205
+ }, 1032, ["data", "default-expanded-keys", "default-checked-keys"])
482206
+ ]);
482207
+ }), 128))
481706
482208
  ])
481707
482209
  ]),
481708
482210
  _: 1
@@ -481712,10 +482214,10 @@ ${this.attributes_.map(
481712
482214
  name: "style"
481713
482215
  }, {
481714
482216
  default: vue.withCtx(() => [
481715
- vue.createElementVNode("div", _hoisted_2$2, [
482217
+ vue.createElementVNode("div", _hoisted_4$2, [
481716
482218
  vue.createVNode(_component_el_tabs, {
481717
482219
  modelValue: activeStyleTab.value,
481718
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => activeStyleTab.value = $event),
482220
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => activeStyleTab.value = $event),
481719
482221
  class: "style-tabs"
481720
482222
  }, {
481721
482223
  default: vue.withCtx(() => [
@@ -481738,11 +482240,11 @@ ${this.attributes_.map(
481738
482240
  name: "custom"
481739
482241
  }, {
481740
482242
  default: vue.withCtx(() => [
481741
- vue.createElementVNode("div", _hoisted_3$2, [
481742
- vue.createElementVNode("div", _hoisted_4$2, [
482243
+ vue.createElementVNode("div", _hoisted_5$2, [
482244
+ vue.createElementVNode("div", _hoisted_6$2, [
481743
482245
  vue.createVNode(vue.unref(ElInput), {
481744
482246
  modelValue: vue.unref(globalCustomCss),
481745
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(globalCustomCss) ? globalCustomCss.value = $event : null),
482247
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.isRef(globalCustomCss) ? globalCustomCss.value = $event : null),
481746
482248
  type: "textarea",
481747
482249
  rows: 6,
481748
482250
  class: "custom-css-input",
@@ -481750,9 +482252,9 @@ ${this.attributes_.map(
481750
482252
  onInput: updateGlobalStyle
481751
482253
  }, null, 8, ["modelValue"])
481752
482254
  ]),
481753
- vue.createElementVNode("div", _hoisted_5$2, [
481754
- _cache[4] || (_cache[4] = vue.createElementVNode("h6", null, "当前应用的样式:", -1)),
481755
- vue.createElementVNode("div", _hoisted_6$2, vue.toDisplayString(currentAppliedStyle.value), 1)
482255
+ vue.createElementVNode("div", _hoisted_7$1, [
482256
+ _cache[8] || (_cache[8] = vue.createElementVNode("h6", null, "当前应用的样式:", -1)),
482257
+ vue.createElementVNode("div", _hoisted_8$1, vue.toDisplayString(currentAppliedStyle.value), 1)
481756
482258
  ])
481757
482259
  ])
481758
482260
  ]),
@@ -481774,8 +482276,8 @@ ${this.attributes_.map(
481774
482276
  };
481775
482277
  }
481776
482278
  });
481777
- const LayerPanel_vue_vue_type_style_index_0_scoped_5302cddb_lang = "";
481778
- const LayerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-5302cddb"]]);
482279
+ const LayerPanel_vue_vue_type_style_index_0_scoped_655d7f71_lang = "";
482280
+ const LayerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-655d7f71"]]);
481779
482281
  const _hoisted_1$1 = {
481780
482282
  key: 2,
481781
482283
  class: "tooltip-content"
@@ -483213,8 +483715,8 @@ ${this.attributes_.map(
483213
483715
  };
483214
483716
  }
483215
483717
  });
483216
- const index_vue_vue_type_style_index_0_scoped_a8800082_lang = "";
483217
- const CustomOpenlayer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-a8800082"]]);
483718
+ const index_vue_vue_type_style_index_0_scoped_09347cf4_lang = "";
483719
+ const CustomOpenlayer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-09347cf4"]]);
483218
483720
  const base = "";
483219
483721
  var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
483220
483722
  var fleb = new u8([
@@ -510503,6 +511005,8 @@ ${this.attributes_.map(
510503
511005
  exports2.DrawingManagerFactory = DrawingManagerFactory;
510504
511006
  exports2.DrawingPresets = DrawingPresets;
510505
511007
  exports2.DrawingUtils = DrawingUtils;
511008
+ exports2.FilterOperator = FilterOperator;
511009
+ exports2.FilterType = FilterType;
510506
511010
  exports2.IconDrawing = IconDrawing;
510507
511011
  exports2.IconDrawingFactory = IconDrawingFactory;
510508
511012
  exports2.ImageDrawing = ImageDrawing;
@@ -510527,6 +511031,7 @@ ${this.attributes_.map(
510527
511031
  exports2.PointWithTextDrawingFactory = PointWithTextDrawingFactory;
510528
511032
  exports2.PolygonDrawing = PolygonDrawing;
510529
511033
  exports2.PolygonDrawingFactory = PolygonDrawingFactory;
511034
+ exports2.SpatialFilterType = SpatialFilterType;
510530
511035
  exports2.SvgIcon = _sfc_main$l;
510531
511036
  exports2.TextDrawing = TextDrawing;
510532
511037
  exports2.TextDrawingFactory = TextDrawingFactory;