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-72fbf19d.mjs → index-45512f1d.mjs} +1033 -531
- package/lib/{index.es-8f4cfae0.mjs → index.es-471711b2.mjs} +1 -1
- package/lib/index.esm.js +1 -1
- package/lib/index.umd.js +1194 -689
- package/lib/style.css +137 -137
- package/package.json +1 -1
- package/types/src/components/CustomOpenlayer/components/dialogs/LayerPanel.vue.d.ts +4 -3
- package/types/src/components/CustomOpenlayer/components/dialogs/LayerPanel.vue.d.ts.map +1 -1
- package/types/src/components/CustomOpenlayer/components/dialogs/LayerTreeNode.vue.d.ts.map +1 -1
- package/types/src/components/CustomOpenlayer/utils/LayerTreeManager.d.ts +11 -0
- package/types/src/components/CustomOpenlayer/utils/LayerTreeManager.d.ts.map +1 -1
- package/types/src/components/CustomOpenlayer/utils/layerManager.d.ts.map +1 -1
- package/types/src/components/CustomOpenlayer/utils/storage.d.ts.map +1 -1
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(
|
|
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 {
|
|
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
|
-
|
|
81919
|
-
|
|
81920
|
-
|
|
81921
|
-
|
|
81922
|
-
|
|
81923
|
-
|
|
81924
|
-
})(
|
|
81925
|
-
|
|
81926
|
-
|
|
81927
|
-
|
|
81928
|
-
|
|
81929
|
-
|
|
81930
|
-
|
|
81931
|
-
|
|
81932
|
-
|
|
81933
|
-
|
|
81934
|
-
|
|
81935
|
-
|
|
81936
|
-
|
|
81937
|
-
|
|
81938
|
-
|
|
81939
|
-
})(
|
|
81940
|
-
|
|
81941
|
-
|
|
81942
|
-
|
|
81943
|
-
|
|
81944
|
-
|
|
81945
|
-
|
|
81946
|
-
|
|
81947
|
-
|
|
81948
|
-
|
|
81949
|
-
})(
|
|
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 =
|
|
82329
|
+
addAttributeFilter(id2, property, value, operator = FilterOperator.EQUAL, name2) {
|
|
82314
82330
|
const filter2 = {
|
|
82315
82331
|
id: id2,
|
|
82316
|
-
type:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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(
|
|
82619
|
-
|
|
82620
|
-
|
|
82621
|
-
|
|
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 {
|
|
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(
|
|
82643
|
-
|
|
82644
|
-
|
|
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 ===
|
|
82723
|
-
const cqlFilters = enabledFilters.filter((filter2) => filter2.type ===
|
|
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
|
|
82787
|
+
case FilterOperator.EQUAL:
|
|
82757
82788
|
return typeof value === "string" ? `${property} = '${value}'` : `${property} = ${value}`;
|
|
82758
|
-
case
|
|
82789
|
+
case FilterOperator.NOT_EQUAL:
|
|
82759
82790
|
return typeof value === "string" ? `${property} <> '${value}'` : `${property} <> ${value}`;
|
|
82760
|
-
case
|
|
82791
|
+
case FilterOperator.GREATER_THAN:
|
|
82761
82792
|
return `${property} > ${value}`;
|
|
82762
|
-
case
|
|
82793
|
+
case FilterOperator.GREATER_EQUAL:
|
|
82763
82794
|
return `${property} >= ${value}`;
|
|
82764
|
-
case
|
|
82795
|
+
case FilterOperator.LESS_THAN:
|
|
82765
82796
|
return `${property} < ${value}`;
|
|
82766
|
-
case
|
|
82797
|
+
case FilterOperator.LESS_EQUAL:
|
|
82767
82798
|
return `${property} <= ${value}`;
|
|
82768
|
-
case
|
|
82799
|
+
case FilterOperator.LIKE:
|
|
82769
82800
|
return `${property} LIKE '%${value}%'`;
|
|
82770
|
-
case
|
|
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
|
|
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
|
|
82812
|
+
case FilterOperator.IS_NULL:
|
|
82782
82813
|
return `${property} IS NULL`;
|
|
82783
|
-
case
|
|
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 ===
|
|
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 ===
|
|
83140
|
+
if (filter2.type === FilterType.ATTRIBUTE) {
|
|
83110
83141
|
const config = filter2;
|
|
83111
83142
|
let wfsOperator = "equalTo";
|
|
83112
83143
|
switch (config.operator) {
|
|
83113
|
-
case
|
|
83144
|
+
case FilterOperator.EQUAL:
|
|
83114
83145
|
wfsOperator = "equalTo";
|
|
83115
83146
|
break;
|
|
83116
|
-
case
|
|
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 ===
|
|
83183
|
+
if (filter2.type === FilterType.ATTRIBUTE) {
|
|
83153
83184
|
const config = filter2;
|
|
83154
83185
|
let wfsOperator = "equalTo";
|
|
83155
83186
|
switch (config.operator) {
|
|
83156
|
-
case
|
|
83187
|
+
case FilterOperator.EQUAL:
|
|
83157
83188
|
wfsOperator = "equalTo";
|
|
83158
83189
|
break;
|
|
83159
|
-
case
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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 = ((
|
|
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
|
-
|
|
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 =
|
|
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.
|
|
83827
|
-
...this.styleConfig.
|
|
83820
|
+
this.styleConfig[GeometryType$2.POLYGON] = {
|
|
83821
|
+
...this.styleConfig[GeometryType$2.POLYGON] || {},
|
|
83828
83822
|
...polygonStyle2
|
|
83829
83823
|
};
|
|
83830
|
-
this.styleConfig.
|
|
83831
|
-
...this.styleConfig.
|
|
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.
|
|
83842
|
-
...this.styleConfig.
|
|
83835
|
+
this.styleConfig[GeometryType$2.LINE_STRING] = {
|
|
83836
|
+
...this.styleConfig[GeometryType$2.LINE_STRING] || {},
|
|
83843
83837
|
...lineStyle2
|
|
83844
83838
|
};
|
|
83845
|
-
this.styleConfig.
|
|
83846
|
-
...this.styleConfig.
|
|
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.
|
|
83861
|
-
...this.styleConfig.
|
|
83854
|
+
this.styleConfig[GeometryType$2.POINT] = {
|
|
83855
|
+
...this.styleConfig[GeometryType$2.POINT] || {},
|
|
83862
83856
|
...pointStyle2
|
|
83863
83857
|
};
|
|
83864
|
-
this.styleConfig.
|
|
83865
|
-
...this.styleConfig.
|
|
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
|
-
|
|
83997
|
-
|
|
83998
|
-
|
|
83999
|
-
defaultStyleConfig
|
|
84000
|
-
);
|
|
83990
|
+
if (defaultStyleConfig) {
|
|
83991
|
+
this.styleConfig = defaultStyleConfig;
|
|
83992
|
+
}
|
|
84001
83993
|
const layer2 = this.getLayer();
|
|
84002
|
-
layer2.setStyle(
|
|
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
|
|
84206
|
+
case FilterType.ATTRIBUTE:
|
|
84216
84207
|
return this.checkAttributeFilter(feature2, filter2);
|
|
84217
|
-
case
|
|
84208
|
+
case FilterType.CQL:
|
|
84218
84209
|
return this.checkCQLFilter(feature2, filter2);
|
|
84219
|
-
case
|
|
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:
|
|
84303
|
-
{ regex: /^(\w+)\s*=\s*([^'\s]+)$/, operator:
|
|
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:
|
|
84306
|
-
{ regex: /^(\w+)\s*(?:!=|<>)\s*([^'\s]+)$/, operator:
|
|
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:
|
|
84299
|
+
{ regex: /^(\w+)\s*>\s*([^'\s]+)$/, operator: FilterOperator.GREATER_THAN },
|
|
84309
84300
|
// property >= value
|
|
84310
|
-
{ regex: /^(\w+)\s*>=\s*([^'\s]+)$/, operator:
|
|
84301
|
+
{ regex: /^(\w+)\s*>=\s*([^'\s]+)$/, operator: FilterOperator.GREATER_EQUAL },
|
|
84311
84302
|
// property < value
|
|
84312
|
-
{ regex: /^(\w+)\s*<\s*([^'\s]+)$/, operator:
|
|
84303
|
+
{ regex: /^(\w+)\s*<\s*([^'\s]+)$/, operator: FilterOperator.LESS_THAN },
|
|
84313
84304
|
// property <= value
|
|
84314
|
-
{ regex: /^(\w+)\s*<=\s*([^'\s]+)$/, operator:
|
|
84305
|
+
{ regex: /^(\w+)\s*<=\s*([^'\s]+)$/, operator: FilterOperator.LESS_EQUAL },
|
|
84315
84306
|
// property LIKE 'pattern'
|
|
84316
|
-
{ regex: /^(\w+)\s+LIKE\s+'([^']*)'$/i, operator:
|
|
84317
|
-
// property IN ('a','b',...) 或 property IN (1,2,...)
|
|
84318
|
-
{ regex: /^(\w+)\s+IN\s*[\((]\s*([\s\S]+?)\s*[\))]\s*$/i, operator:
|
|
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 ===
|
|
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 !==
|
|
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:
|
|
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
|
|
84358
|
+
case FilterOperator.EQUAL:
|
|
84368
84359
|
return featureValue === filterValue;
|
|
84369
|
-
case
|
|
84360
|
+
case FilterOperator.NOT_EQUAL:
|
|
84370
84361
|
return featureValue !== filterValue;
|
|
84371
|
-
case
|
|
84362
|
+
case FilterOperator.GREATER_THAN:
|
|
84372
84363
|
return Number(featureValue) > Number(filterValue);
|
|
84373
|
-
case
|
|
84364
|
+
case FilterOperator.GREATER_EQUAL:
|
|
84374
84365
|
return Number(featureValue) >= Number(filterValue);
|
|
84375
|
-
case
|
|
84366
|
+
case FilterOperator.LESS_THAN:
|
|
84376
84367
|
return Number(featureValue) < Number(filterValue);
|
|
84377
|
-
case
|
|
84368
|
+
case FilterOperator.LESS_EQUAL:
|
|
84378
84369
|
return Number(featureValue) <= Number(filterValue);
|
|
84379
|
-
case
|
|
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
|
|
84384
|
-
|
|
84385
|
-
|
|
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,
|
|
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
|
|
84602
|
+
case FilterType.ATTRIBUTE:
|
|
84609
84603
|
return this.checkAttributeFilter(feature2, filter2);
|
|
84610
|
-
case
|
|
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 ||
|
|
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
|
|
84623
|
+
case FilterOperator.EQUAL:
|
|
84630
84624
|
return featureValue === filterValue;
|
|
84631
|
-
case
|
|
84625
|
+
case FilterOperator.NOT_EQUAL:
|
|
84632
84626
|
return featureValue !== filterValue;
|
|
84633
|
-
case
|
|
84627
|
+
case FilterOperator.GREATER_THAN:
|
|
84634
84628
|
return Number(featureValue) > Number(filterValue);
|
|
84635
|
-
case
|
|
84629
|
+
case FilterOperator.GREATER_EQUAL:
|
|
84636
84630
|
return Number(featureValue) >= Number(filterValue);
|
|
84637
|
-
case
|
|
84631
|
+
case FilterOperator.LESS_THAN:
|
|
84638
84632
|
return Number(featureValue) < Number(filterValue);
|
|
84639
|
-
case
|
|
84633
|
+
case FilterOperator.LESS_EQUAL:
|
|
84640
84634
|
return Number(featureValue) <= Number(filterValue);
|
|
84641
|
-
case
|
|
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
|
|
84639
|
+
case FilterOperator.IN:
|
|
84646
84640
|
return Array.isArray(filterValue) && filterValue.includes(featureValue);
|
|
84647
|
-
case
|
|
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,
|
|
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
|
|
84926
|
+
case FilterType.ATTRIBUTE:
|
|
84933
84927
|
return this.checkAttributeFilter(feature2, filter2);
|
|
84934
|
-
case
|
|
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 ||
|
|
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
|
|
84947
|
+
case FilterOperator.EQUAL:
|
|
84954
84948
|
return featureValue === filterValue;
|
|
84955
|
-
case
|
|
84949
|
+
case FilterOperator.NOT_EQUAL:
|
|
84956
84950
|
return featureValue !== filterValue;
|
|
84957
|
-
case
|
|
84951
|
+
case FilterOperator.GREATER_THAN:
|
|
84958
84952
|
return Number(featureValue) > Number(filterValue);
|
|
84959
|
-
case
|
|
84953
|
+
case FilterOperator.GREATER_EQUAL:
|
|
84960
84954
|
return Number(featureValue) >= Number(filterValue);
|
|
84961
|
-
case
|
|
84955
|
+
case FilterOperator.LESS_THAN:
|
|
84962
84956
|
return Number(featureValue) < Number(filterValue);
|
|
84963
|
-
case
|
|
84957
|
+
case FilterOperator.LESS_EQUAL:
|
|
84964
84958
|
return Number(featureValue) <= Number(filterValue);
|
|
84965
|
-
case
|
|
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
|
|
84963
|
+
case FilterOperator.IN:
|
|
84970
84964
|
return Array.isArray(filterValue) && filterValue.includes(featureValue);
|
|
84971
|
-
case
|
|
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,
|
|
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
|
|
85319
|
+
case FilterType.ATTRIBUTE:
|
|
85326
85320
|
return this.checkAttributeFilter(feature2, filter2);
|
|
85327
|
-
case
|
|
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 ||
|
|
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
|
|
85340
|
+
case FilterOperator.EQUAL:
|
|
85347
85341
|
return featureValue === filterValue;
|
|
85348
|
-
case
|
|
85342
|
+
case FilterOperator.NOT_EQUAL:
|
|
85349
85343
|
return featureValue !== filterValue;
|
|
85350
|
-
case
|
|
85344
|
+
case FilterOperator.GREATER_THAN:
|
|
85351
85345
|
return Number(featureValue) > Number(filterValue);
|
|
85352
|
-
case
|
|
85346
|
+
case FilterOperator.GREATER_EQUAL:
|
|
85353
85347
|
return Number(featureValue) >= Number(filterValue);
|
|
85354
|
-
case
|
|
85348
|
+
case FilterOperator.LESS_THAN:
|
|
85355
85349
|
return Number(featureValue) < Number(filterValue);
|
|
85356
|
-
case
|
|
85350
|
+
case FilterOperator.LESS_EQUAL:
|
|
85357
85351
|
return Number(featureValue) <= Number(filterValue);
|
|
85358
|
-
case
|
|
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
|
|
85356
|
+
case FilterOperator.IN:
|
|
85363
85357
|
return Array.isArray(filterValue) && filterValue.includes(featureValue);
|
|
85364
|
-
case
|
|
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,
|
|
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
|
|
85498
|
+
case FilterType.ATTRIBUTE:
|
|
85505
85499
|
return this.checkAttributeFilter(feature2, filter2.config);
|
|
85506
|
-
case
|
|
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 ===
|
|
85515
|
+
return config.operator === FilterOperator.IS_NULL;
|
|
85522
85516
|
}
|
|
85523
85517
|
switch (config.operator) {
|
|
85524
|
-
case
|
|
85518
|
+
case FilterOperator.EQUAL:
|
|
85525
85519
|
return String(value) === String(config.value);
|
|
85526
|
-
case
|
|
85520
|
+
case FilterOperator.NOT_EQUAL:
|
|
85527
85521
|
return String(value) !== String(config.value);
|
|
85528
|
-
case
|
|
85522
|
+
case FilterOperator.GREATER_THAN:
|
|
85529
85523
|
return Number(value) > Number(config.value);
|
|
85530
|
-
case
|
|
85524
|
+
case FilterOperator.LESS_THAN:
|
|
85531
85525
|
return Number(value) < Number(config.value);
|
|
85532
|
-
case
|
|
85526
|
+
case FilterOperator.GREATER_EQUAL:
|
|
85533
85527
|
return Number(value) >= Number(config.value);
|
|
85534
|
-
case
|
|
85528
|
+
case FilterOperator.LESS_EQUAL:
|
|
85535
85529
|
return Number(value) <= Number(config.value);
|
|
85536
|
-
case
|
|
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
|
|
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
|
|
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
|
|
85545
|
+
case FilterOperator.IS_NULL:
|
|
85552
85546
|
return false;
|
|
85553
|
-
case
|
|
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 =
|
|
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
|
|
85743
|
+
case FilterType.ATTRIBUTE:
|
|
85750
85744
|
return this.checkAttributeFilter(feature2, filter2.config);
|
|
85751
|
-
case
|
|
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 ===
|
|
85760
|
+
return config.operator === FilterOperator.IS_NULL;
|
|
85767
85761
|
}
|
|
85768
85762
|
switch (config.operator) {
|
|
85769
|
-
case
|
|
85763
|
+
case FilterOperator.EQUAL:
|
|
85770
85764
|
return String(value) === String(config.value);
|
|
85771
|
-
case
|
|
85765
|
+
case FilterOperator.NOT_EQUAL:
|
|
85772
85766
|
return String(value) !== String(config.value);
|
|
85773
|
-
case
|
|
85767
|
+
case FilterOperator.GREATER_THAN:
|
|
85774
85768
|
return Number(value) > Number(config.value);
|
|
85775
|
-
case
|
|
85769
|
+
case FilterOperator.LESS_THAN:
|
|
85776
85770
|
return Number(value) < Number(config.value);
|
|
85777
|
-
case
|
|
85771
|
+
case FilterOperator.GREATER_EQUAL:
|
|
85778
85772
|
return Number(value) >= Number(config.value);
|
|
85779
|
-
case
|
|
85773
|
+
case FilterOperator.LESS_EQUAL:
|
|
85780
85774
|
return Number(value) <= Number(config.value);
|
|
85781
|
-
case
|
|
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
|
|
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
|
|
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
|
|
85790
|
+
case FilterOperator.IS_NULL:
|
|
85797
85791
|
return false;
|
|
85798
|
-
case
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
465387
|
+
console.log(
|
|
465388
|
+
`图层中心点 [${layerCenter[0]}, ${layerCenter[1]}] 是否在当前视图内: ${isInView}`
|
|
465389
|
+
);
|
|
465381
465390
|
if (!isInView) {
|
|
465382
|
-
console.warn(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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 {
|
|
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(
|
|
465705
|
-
|
|
465706
|
-
|
|
465707
|
-
|
|
465708
|
-
|
|
465709
|
-
|
|
465710
|
-
|
|
465711
|
-
|
|
465712
|
-
|
|
465713
|
-
|
|
465714
|
-
|
|
465715
|
-
console.log("
|
|
465716
|
-
|
|
465717
|
-
|
|
465718
|
-
|
|
465719
|
-
|
|
465720
|
-
|
|
465721
|
-
|
|
465722
|
-
|
|
465723
|
-
|
|
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
|
-
|
|
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 {
|
|
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(
|
|
465792
|
+
console.warn(
|
|
465793
|
+
"无法取得全局 SuperMap,无法构造 SuperMap.Geometry.Point。建议使用方案A的 REST 调用绕开。"
|
|
465794
|
+
);
|
|
465756
465795
|
}
|
|
465757
465796
|
}
|
|
465758
465797
|
if (!smGeom) {
|
|
465759
|
-
console.error(
|
|
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(
|
|
465770
|
-
|
|
465771
|
-
|
|
465772
|
-
|
|
465773
|
-
console.
|
|
465774
|
-
|
|
465775
|
-
|
|
465776
|
-
|
|
465777
|
-
|
|
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
|
-
|
|
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 {
|
|
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(
|
|
465834
|
-
|
|
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(
|
|
465857
|
-
|
|
465858
|
-
|
|
465859
|
-
|
|
465860
|
-
if (
|
|
465861
|
-
|
|
465862
|
-
|
|
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.
|
|
465865
|
-
|
|
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 {
|
|
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(
|
|
465908
|
-
|
|
465909
|
-
|
|
465910
|
-
|
|
465911
|
-
if (
|
|
465912
|
-
|
|
465913
|
-
|
|
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.
|
|
465916
|
-
|
|
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 {
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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 {
|
|
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(
|
|
466104
|
-
|
|
466105
|
-
|
|
466106
|
-
|
|
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(
|
|
466110
|
-
|
|
466111
|
-
|
|
466112
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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 {
|
|
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 {
|
|
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
|
|
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 ===
|
|
466901
|
+
return config.operator === FilterOperator.IS_NULL;
|
|
466767
466902
|
}
|
|
466768
466903
|
switch (config.operator) {
|
|
466769
|
-
case
|
|
466904
|
+
case FilterOperator.EQUAL:
|
|
466770
466905
|
return featureValue === filterValue;
|
|
466771
|
-
case
|
|
466906
|
+
case FilterOperator.NOT_EQUAL:
|
|
466772
466907
|
return featureValue !== filterValue;
|
|
466773
|
-
case
|
|
466908
|
+
case FilterOperator.GREATER_THAN:
|
|
466774
466909
|
return Number(featureValue) > Number(filterValue);
|
|
466775
|
-
case
|
|
466910
|
+
case FilterOperator.GREATER_EQUAL:
|
|
466776
466911
|
return Number(featureValue) >= Number(filterValue);
|
|
466777
|
-
case
|
|
466912
|
+
case FilterOperator.LESS_THAN:
|
|
466778
466913
|
return Number(featureValue) < Number(filterValue);
|
|
466779
|
-
case
|
|
466914
|
+
case FilterOperator.LESS_EQUAL:
|
|
466780
466915
|
return Number(featureValue) <= Number(filterValue);
|
|
466781
|
-
case
|
|
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
|
|
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
|
|
466926
|
+
case FilterOperator.IN:
|
|
466792
466927
|
if (Array.isArray(filterValue)) {
|
|
466793
466928
|
return filterValue.includes(featureValue);
|
|
466794
466929
|
}
|
|
466795
466930
|
return false;
|
|
466796
|
-
case
|
|
466931
|
+
case FilterOperator.IS_NULL:
|
|
466797
466932
|
return featureValue === null || featureValue === void 0;
|
|
466798
|
-
case
|
|
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 =
|
|
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(
|
|
466836
|
-
|
|
466837
|
-
|
|
466838
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
467750
|
-
|
|
467751
|
-
|
|
467752
|
-
|
|
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(
|
|
467766
|
-
|
|
467767
|
-
|
|
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$
|
|
468376
|
-
const _hoisted_7$
|
|
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$
|
|
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$
|
|
468559
|
-
imageLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$
|
|
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$
|
|
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$
|
|
468837
|
+
const _hoisted_6$g = {
|
|
468676
468838
|
key: 4,
|
|
468677
468839
|
class: "data-stats"
|
|
468678
468840
|
};
|
|
468679
|
-
const _hoisted_7$
|
|
468680
|
-
const _hoisted_8$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
470804
|
-
const _hoisted_7$
|
|
470805
|
-
const _hoisted_8$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
472010
|
-
const _hoisted_7$
|
|
472011
|
-
const _hoisted_8$
|
|
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$
|
|
472338
|
-
vue.createElementVNode("span", _hoisted_8$
|
|
472339
|
-
], 10, _hoisted_6$
|
|
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$
|
|
472618
|
-
const _hoisted_7$
|
|
472619
|
-
const _hoisted_8$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
474510
|
-
const _hoisted_7$
|
|
474511
|
-
const _hoisted_8$
|
|
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$
|
|
474914
|
-
vue.createElementVNode("div", _hoisted_7$
|
|
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$
|
|
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$
|
|
475388
|
+
const _hoisted_6$a = {
|
|
475227
475389
|
key: 0,
|
|
475228
475390
|
class: "mb-3"
|
|
475229
475391
|
};
|
|
475230
|
-
const _hoisted_7$
|
|
475231
|
-
const _hoisted_8$
|
|
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$
|
|
475802
|
-
vue.createElementVNode("div", _hoisted_7$
|
|
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$
|
|
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$
|
|
476306
|
-
const _hoisted_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$
|
|
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$
|
|
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$
|
|
476904
|
-
const _hoisted_7$
|
|
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$
|
|
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$
|
|
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$
|
|
476987
|
-
const _hoisted_7$
|
|
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$
|
|
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$
|
|
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$
|
|
478212
|
-
const _hoisted_7$
|
|
478213
|
-
const _hoisted_8$
|
|
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$
|
|
478587
|
-
vue.createElementVNode("div", _hoisted_7$
|
|
478588
|
-
vue.createElementVNode("div", _hoisted_8$
|
|
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$
|
|
479219
|
-
const _hoisted_7$
|
|
479220
|
-
const _hoisted_8$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
479994
|
-
|
|
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
|
|
480181
|
-
const
|
|
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" && (
|
|
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") &&
|
|
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
|
|
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
|
|
480221
|
-
if (!
|
|
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
|
-
|
|
480227
|
-
|
|
480228
|
-
|
|
480229
|
-
|
|
480230
|
-
|
|
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(
|
|
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$
|
|
480515
|
-
const _hoisted_7$
|
|
480516
|
-
const _hoisted_8$
|
|
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$
|
|
480869
|
+
vue.createElementVNode("span", _hoisted_6$4, vue.toDisplayString(_ctx.filters.saturate) + "%", 1)
|
|
480576
480870
|
]),
|
|
480577
|
-
vue.createElementVNode("div", _hoisted_7$
|
|
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$
|
|
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$
|
|
480711
|
-
const _hoisted_7$
|
|
480712
|
-
const _hoisted_8$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
480855
|
-
|
|
480856
|
-
};
|
|
480857
|
-
const
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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
|
|
480990
|
-
const LayerTreeNode = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-
|
|
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: "
|
|
480993
|
-
const _hoisted_3$2 = { class: "
|
|
480994
|
-
const _hoisted_4$2 = { class: "
|
|
480995
|
-
const _hoisted_5$2 = { class: "
|
|
480996
|
-
const _hoisted_6$2 = { class: "
|
|
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.
|
|
481014
|
-
|
|
481015
|
-
|
|
481016
|
-
|
|
481017
|
-
|
|
481018
|
-
|
|
481019
|
-
|
|
481020
|
-
|
|
481021
|
-
|
|
481022
|
-
|
|
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
|
|
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
|
-
|
|
481086
|
-
|
|
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 =
|
|
481394
|
+
node2.layerData.visible = checked;
|
|
481104
481395
|
handleLayerVisibilityChange(node2.layerData);
|
|
481105
|
-
|
|
481106
|
-
|
|
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
|
-
|
|
481136
|
-
|
|
481137
|
-
|
|
481138
|
-
|
|
481139
|
-
|
|
481140
|
-
|
|
481141
|
-
|
|
481142
|
-
|
|
481143
|
-
|
|
481144
|
-
|
|
481145
|
-
|
|
481146
|
-
|
|
481147
|
-
|
|
481148
|
-
|
|
481149
|
-
|
|
481150
|
-
|
|
481151
|
-
|
|
481152
|
-
|
|
481153
|
-
|
|
481154
|
-
|
|
481155
|
-
|
|
481156
|
-
|
|
481157
|
-
|
|
481158
|
-
|
|
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
|
-
|
|
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
|
-
|
|
481170
|
-
|
|
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(
|
|
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(
|
|
481182
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
481555
|
+
const addedLayerConfig = layerManager.value.getLayerConfig(
|
|
481556
|
+
layerConfig.id
|
|
481557
|
+
);
|
|
481230
481558
|
if (addedLayerConfig) {
|
|
481231
481559
|
layers.value.push(addedLayerConfig);
|
|
481232
|
-
console.log(
|
|
481560
|
+
console.log(
|
|
481561
|
+
"🔍 [LayerPanel] 图层配置已注册:",
|
|
481562
|
+
layerConfig.id,
|
|
481563
|
+
"已加载:",
|
|
481564
|
+
layerManager.value.isLayerLoaded(layerConfig.id)
|
|
481565
|
+
);
|
|
481233
481566
|
}
|
|
481234
481567
|
} else {
|
|
481235
|
-
console.error(
|
|
481568
|
+
console.error(
|
|
481569
|
+
"🔍 [LayerPanel] 图层配置注册失败:",
|
|
481570
|
+
layerConfig.id,
|
|
481571
|
+
layerConfig.type
|
|
481572
|
+
);
|
|
481236
481573
|
}
|
|
481237
481574
|
}
|
|
481238
481575
|
}
|
|
481239
|
-
console.log(
|
|
481240
|
-
|
|
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(
|
|
481331
|
-
|
|
481332
|
-
|
|
481333
|
-
const
|
|
481334
|
-
(
|
|
481335
|
-
)
|
|
481336
|
-
const
|
|
481337
|
-
(
|
|
481338
|
-
)
|
|
481339
|
-
const
|
|
481340
|
-
(layer2) =>
|
|
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
|
-
|
|
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
|
-
|
|
481402
|
-
|
|
481403
|
-
|
|
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 (
|
|
481415
|
-
layerTreeManager.setLayerGroups(
|
|
481416
|
-
|
|
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) => ({
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
481595
|
-
|
|
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[
|
|
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[
|
|
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.
|
|
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",
|
|
482217
|
+
vue.createElementVNode("div", _hoisted_4$2, [
|
|
481716
482218
|
vue.createVNode(_component_el_tabs, {
|
|
481717
482219
|
modelValue: activeStyleTab.value,
|
|
481718
|
-
"onUpdate:modelValue": _cache[
|
|
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",
|
|
481742
|
-
vue.createElementVNode("div",
|
|
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[
|
|
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",
|
|
481754
|
-
_cache[
|
|
481755
|
-
vue.createElementVNode("div",
|
|
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
|
|
481778
|
-
const LayerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-
|
|
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
|
|
483217
|
-
const CustomOpenlayer = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
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;
|