my-openlayer 1.0.14 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MyOl.d.ts +128 -128
- package/MyOl.js +381 -382
- package/README.md +292 -48
- package/core/ConfigManager.d.ts +88 -88
- package/core/ConfigManager.js +112 -112
- package/core/DomPoint.d.ts +21 -0
- package/core/DomPoint.js +36 -0
- package/core/EventManager.d.ts +141 -141
- package/core/EventManager.js +316 -316
- package/core/Line.d.ts +109 -109
- package/core/Line.js +288 -283
- package/core/MapBaseLayers.d.ts +234 -234
- package/core/MapBaseLayers.js +573 -573
- package/core/MapTools.d.ts +68 -68
- package/core/MapTools.js +201 -202
- package/core/MeasureHandler.d.ts +65 -65
- package/core/MeasureHandler.js +312 -312
- package/core/Point.d.ts +94 -94
- package/core/Point.js +348 -343
- package/core/Polygon.d.ts +139 -139
- package/core/Polygon.js +529 -529
- package/core/VueTemplatePoint.d.ts +51 -51
- package/core/VueTemplatePoint.js +529 -529
- package/index.d.ts +18 -18
- package/index.js +17 -17
- package/package.json +4 -5
- package/types.d.ts +302 -302
- package/types.js +11 -11
- package/utils/ErrorHandler.d.ts +102 -102
- package/utils/ErrorHandler.js +191 -191
- package/utils/ValidationUtils.d.ts +163 -163
- package/utils/ValidationUtils.js +312 -312
package/README.md
CHANGED
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
# my-openlayer
|
|
2
2
|
|
|
3
|
-
my-openlayer 是一个基于 [OpenLayers](https://openlayers.org/) 的现代地图组件库,专为 Web GIS 应用开发者设计。提供完整的 TypeScript
|
|
3
|
+
my-openlayer 是一个基于 [OpenLayers](https://openlayers.org/) 的现代地图组件库,专为 Web GIS 应用开发者设计。提供完整的 TypeScript 支持、模块化的类型定义、强大的错误处理和事件管理系统,支持天地图底图加载、要素绘制、图层管理、事件监听等丰富功能,极大提升地图开发效率。支持 TypeScript,具备完整的类型定义和模块化设计。
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/my-openlayer)
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
8
|
|
|
9
|
+
## 🌟 版本分支策略
|
|
10
|
+
|
|
11
|
+
本项目采用双分支策略支持不同版本的 OpenLayers:
|
|
12
|
+
|
|
13
|
+
| 分支 | OpenLayers 版本 | 项目版本 | 状态 | 推荐使用场景 |
|
|
14
|
+
|------|----------------|----------|------|-------------|
|
|
15
|
+
| **main** | 10.6.1+ | 2.x.x | 🚀 主要开发 | 新项目、追求最新功能 |
|
|
16
|
+
| **ol6-legacy** | 6.15.1 | 1.x.x | 🛠️ 维护支持 | 现有项目、兼容性需求 |
|
|
17
|
+
|
|
18
|
+
### 安装指南
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# 最新版本 (OpenLayers 10.x)
|
|
22
|
+
npm install my-openlayer@latest
|
|
23
|
+
|
|
24
|
+
# 兼容版本 (OpenLayers 6.x)
|
|
25
|
+
npm install my-openlayer@^1.0.0
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
📖 **详细说明**: [分支策略文档](./README-BRANCHES.md) | [迁移指南](./MIGRATION-GUIDE.md)
|
|
29
|
+
|
|
9
30
|
---
|
|
10
31
|
|
|
11
32
|
## 目录
|
|
@@ -28,32 +49,32 @@ my-openlayer 是一个基于 [OpenLayers](https://openlayers.org/) 的现代地
|
|
|
28
49
|
|
|
29
50
|
## 功能亮点
|
|
30
51
|
|
|
31
|
-
- **🗺️
|
|
32
|
-
-
|
|
33
|
-
-
|
|
52
|
+
- **🗺️ 底图管理 (MapBaseLayers)**
|
|
53
|
+
- 支持天地图矢量、影像、地形底图切换
|
|
54
|
+
- 动态切换底图与注记图层管理
|
|
34
55
|
- 地图裁剪与自定义范围显示
|
|
35
|
-
-
|
|
56
|
+
- 支持自定义底图源和配置
|
|
36
57
|
|
|
37
58
|
- **📍 要素操作**
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
- DOM 点位(支持 Vue
|
|
59
|
+
- **点位管理 (Point)**:点位标注(支持自定义图标、文字、聚合、闪烁)
|
|
60
|
+
- **线要素绘制 (Line)**:线要素绘制(支持样式自定义、河流分级显示)
|
|
61
|
+
- **面要素 (Polygon)**:面要素绘制与分区高亮
|
|
62
|
+
- **Vue组件支持 (VueTemplatePoint)**:DOM 点位(支持 Vue 组件渲染,完整生命周期管理)
|
|
42
63
|
- 热力图、图片图层
|
|
43
64
|
- 动态要素颜色更新
|
|
44
65
|
|
|
45
66
|
- **🛠️ 地图工具**
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
- 配置管理器
|
|
67
|
+
- **测量工具 (MeasureHandler)**:距离和面积测量
|
|
68
|
+
- **地图工具 (MapTools)**:图层管理(获取、移除、显隐控制)
|
|
69
|
+
- **事件管理 (EventManager)**:地图事件监听(点击、悬停、移动等)
|
|
70
|
+
- **配置管理 (ConfigManager)**:坐标转换、视图控制、配置管理器
|
|
51
71
|
|
|
52
72
|
- **⚡ 高级特性**
|
|
53
73
|
- **TypeScript 完全支持**:模块化类型定义,更好的开发体验
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
74
|
+
- **错误处理系统 (ErrorHandler)**:统一的错误处理和日志记录
|
|
75
|
+
- **验证工具 (ValidationUtils)**:参数验证和数据校验
|
|
76
|
+
- **模块化设计**:支持按需加载和懒加载
|
|
77
|
+
- **坐标系支持**:CGCS2000坐标系和投影转换
|
|
57
78
|
- **向后兼容**:保持 API 稳定性
|
|
58
79
|
|
|
59
80
|
- **🔧 开发友好**
|
|
@@ -69,6 +90,47 @@ my-openlayer 是一个基于 [OpenLayers](https://openlayers.org/) 的现代地
|
|
|
69
90
|
|
|
70
91
|
```bash
|
|
71
92
|
npm install my-openlayer
|
|
93
|
+
# 或
|
|
94
|
+
yarn add my-openlayer
|
|
95
|
+
# 或
|
|
96
|
+
pnpm add my-openlayer
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 依赖要求
|
|
100
|
+
|
|
101
|
+
- **OpenLayers**: ^7.0.0 或更高版本
|
|
102
|
+
- **proj4**: ^2.8.0 或更高版本
|
|
103
|
+
- **@turf/turf**: ^6.5.0 或更高版本(用于高级几何计算)
|
|
104
|
+
|
|
105
|
+
### 环境配置
|
|
106
|
+
|
|
107
|
+
使用天地图服务需要配置API Token:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# 在项目根目录创建 .env 文件
|
|
111
|
+
VUE_APP_TIANDITU_TOKEN=your_tianditu_token_here
|
|
112
|
+
|
|
113
|
+
# 其他可选配置
|
|
114
|
+
VUE_APP_MAP_CENTER_LON=119.81
|
|
115
|
+
VUE_APP_MAP_CENTER_LAT=29.969
|
|
116
|
+
VUE_APP_MAP_ZOOM=10
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 配置选项
|
|
120
|
+
|
|
121
|
+
#### 基础配置
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
const config = {
|
|
125
|
+
target: 'map', // 地图容器ID
|
|
126
|
+
center: [119.81, 29.969], // 地图中心点
|
|
127
|
+
zoom: 10, // 缩放级别
|
|
128
|
+
tiandituToken: process.env.VUE_APP_TIANDITU_TOKEN, // 天地图token(从环境变量获取)
|
|
129
|
+
minZoom: 1, // 最小缩放级别
|
|
130
|
+
maxZoom: 20, // 最大缩放级别
|
|
131
|
+
annotation: true, // 是否显示注记
|
|
132
|
+
coordinateSystem: 'EPSG:4326', // 坐标系(默认WGS84,支持CGCS2000)
|
|
133
|
+
};
|
|
72
134
|
```
|
|
73
135
|
|
|
74
136
|
---
|
|
@@ -90,7 +152,7 @@ const mapConfig: MapInitType = {
|
|
|
90
152
|
zoom: 10,
|
|
91
153
|
minZoom: 8,
|
|
92
154
|
maxZoom: 20,
|
|
93
|
-
token:
|
|
155
|
+
token: process.env.VUE_APP_TIANDITU_TOKEN, // 从环境变量获取天地图token
|
|
94
156
|
annotation: true,
|
|
95
157
|
layers: {
|
|
96
158
|
vec_c: [],
|
|
@@ -511,6 +573,20 @@ measure.destory();
|
|
|
511
573
|
new MyOl(id: string, options: MapInitType)
|
|
512
574
|
```
|
|
513
575
|
|
|
576
|
+
**参数说明:**
|
|
577
|
+
|
|
578
|
+
- `id`: 地图容器的 DOM 元素 ID
|
|
579
|
+
- `options`: 地图初始化配置对象
|
|
580
|
+
- `center`: 地图中心点坐标 `[longitude, latitude]`
|
|
581
|
+
- `zoom`: 初始缩放级别
|
|
582
|
+
- `token`: 天地图 API Token(建议从环境变量获取)
|
|
583
|
+
- `minZoom`: 最小缩放级别(可选,默认:1)
|
|
584
|
+
- `maxZoom`: 最大缩放级别(可选,默认:20)
|
|
585
|
+
- `annotation`: 是否显示注记图层(可选,默认:true)
|
|
586
|
+
- `layers`: 图层配置(可选)
|
|
587
|
+
- `extent`: 地图范围限制(可选)
|
|
588
|
+
- `mapClipData`: 地图裁剪数据(可选)
|
|
589
|
+
|
|
514
590
|
#### 方法
|
|
515
591
|
|
|
516
592
|
- **getPoint()**
|
|
@@ -532,17 +608,35 @@ new MyOl(id: string, options: MapInitType)
|
|
|
532
608
|
```
|
|
533
609
|
|
|
534
610
|
- **getTools()**
|
|
535
|
-
>
|
|
611
|
+
> 获取地图工具实例,提供图层管理、事件监听等功能。
|
|
536
612
|
```javascript
|
|
537
613
|
const tools = map.getTools();
|
|
538
614
|
```
|
|
539
615
|
|
|
540
616
|
- **getMapBaseLayers()**
|
|
541
|
-
>
|
|
617
|
+
> 获取底图图层管理实例,用于底图切换和管理。
|
|
542
618
|
```javascript
|
|
543
619
|
const baseLayers = map.getMapBaseLayers();
|
|
544
620
|
```
|
|
545
621
|
|
|
622
|
+
- **getEventManager()**
|
|
623
|
+
> 获取事件管理器实例,用于统一的事件监听和管理。
|
|
624
|
+
```javascript
|
|
625
|
+
const eventManager = map.getEventManager();
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
- **getConfigManager()**
|
|
629
|
+
> 获取配置管理器实例,用于配置验证和管理。
|
|
630
|
+
```javascript
|
|
631
|
+
const configManager = map.getConfigManager();
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
- **getMap()**
|
|
635
|
+
> 获取原生 OpenLayers 地图实例。
|
|
636
|
+
```javascript
|
|
637
|
+
const olMap = map.getMap();
|
|
638
|
+
```
|
|
639
|
+
|
|
546
640
|
- **resetPosition(duration?: number)**
|
|
547
641
|
> 重置地图位置。
|
|
548
642
|
```javascript
|
|
@@ -568,7 +662,7 @@ new MyOl(id: string, options: MapInitType)
|
|
|
568
662
|
### MapBaseLayers
|
|
569
663
|
|
|
570
664
|
- **switchBaseLayer(type: TiandituType)**
|
|
571
|
-
>
|
|
665
|
+
> 切换底图类型,自动处理注记图层。
|
|
572
666
|
```javascript
|
|
573
667
|
baseLayers.switchBaseLayer('img_c');
|
|
574
668
|
```
|
|
@@ -583,6 +677,19 @@ new MyOl(id: string, options: MapInitType)
|
|
|
583
677
|
});
|
|
584
678
|
```
|
|
585
679
|
|
|
680
|
+
- **toggleAnnotation(show?: boolean)**
|
|
681
|
+
> 切换注记图层显示状态。
|
|
682
|
+
```javascript
|
|
683
|
+
baseLayers.toggleAnnotation(true); // 显示注记
|
|
684
|
+
baseLayers.toggleAnnotation(false); // 隐藏注记
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
- **getCurrentBaseLayer()**
|
|
688
|
+
> 获取当前底图类型。
|
|
689
|
+
```javascript
|
|
690
|
+
const currentType = baseLayers.getCurrentBaseLayer();
|
|
691
|
+
```
|
|
692
|
+
|
|
586
693
|
- **initLayer()**
|
|
587
694
|
> 初始化底图图层。
|
|
588
695
|
```javascript
|
|
@@ -594,7 +701,7 @@ new MyOl(id: string, options: MapInitType)
|
|
|
594
701
|
### Point
|
|
595
702
|
|
|
596
703
|
- **addPoint(pointData: PointData[], options: OptionsType)**
|
|
597
|
-
>
|
|
704
|
+
> 添加普通点位到指定图层,支持自定义样式和图标。
|
|
598
705
|
```javascript
|
|
599
706
|
point.addPoint([
|
|
600
707
|
{ lgtd: 119.81, lttd: 29.969, name: '测试点位' }
|
|
@@ -607,7 +714,7 @@ new MyOl(id: string, options: MapInitType)
|
|
|
607
714
|
```
|
|
608
715
|
|
|
609
716
|
- **addClusterPoint(pointData: PointData[], options: OptionsType)**
|
|
610
|
-
>
|
|
717
|
+
> 添加聚合点位,自动根据缩放级别聚合显示。
|
|
611
718
|
```javascript
|
|
612
719
|
point.addClusterPoint([
|
|
613
720
|
{ lgtd: 119.81, lttd: 29.969, name: 'A' },
|
|
@@ -620,6 +727,19 @@ new MyOl(id: string, options: MapInitType)
|
|
|
620
727
|
});
|
|
621
728
|
```
|
|
622
729
|
|
|
730
|
+
- **addTwinklePoint(pointData: PointData[], options: OptionsType)**
|
|
731
|
+
> 添加闪烁点位,具有动画效果。
|
|
732
|
+
```javascript
|
|
733
|
+
point.addTwinklePoint([
|
|
734
|
+
{ lgtd: 119.81, lttd: 29.969, name: '闪烁点位' }
|
|
735
|
+
], {
|
|
736
|
+
layerName: 'twinkle-point',
|
|
737
|
+
nameKey: 'name',
|
|
738
|
+
img: 'twinkle.png',
|
|
739
|
+
hasImg: true
|
|
740
|
+
});
|
|
741
|
+
```
|
|
742
|
+
|
|
623
743
|
- **setDomPointVue(pointInfoList: any[], template: any, Vue: any)**
|
|
624
744
|
> 添加 Vue 组件点位。
|
|
625
745
|
```javascript
|
|
@@ -776,31 +896,77 @@ new MyOl(id: string, options: MapInitType)
|
|
|
776
896
|
|
|
777
897
|
### MeasureHandler
|
|
778
898
|
|
|
899
|
+
测量工具类,提供距离和面积测量功能,支持实时测量显示。
|
|
900
|
+
|
|
779
901
|
- **start(type: 'Polygon' | 'LineString')**
|
|
780
|
-
>
|
|
902
|
+
> 开始测量,支持距离和面积测量。
|
|
781
903
|
```javascript
|
|
782
|
-
measure.start('Polygon');
|
|
783
|
-
measure.start('LineString');
|
|
904
|
+
measure.start('Polygon'); // 面积测量
|
|
905
|
+
measure.start('LineString'); // 距离测量
|
|
784
906
|
```
|
|
785
907
|
|
|
786
908
|
- **end()**
|
|
787
|
-
>
|
|
909
|
+
> 结束当前测量操作。
|
|
788
910
|
```javascript
|
|
789
911
|
measure.end();
|
|
790
912
|
```
|
|
791
913
|
|
|
792
914
|
- **clean()**
|
|
793
|
-
>
|
|
915
|
+
> 清除所有测量结果和图形。
|
|
794
916
|
```javascript
|
|
795
917
|
measure.clean();
|
|
796
918
|
```
|
|
797
919
|
|
|
798
920
|
- **destory()**
|
|
799
|
-
>
|
|
921
|
+
> 销毁测量工具,释放资源。
|
|
800
922
|
```javascript
|
|
801
923
|
measure.destory();
|
|
802
924
|
```
|
|
803
925
|
|
|
926
|
+
### ErrorHandler
|
|
927
|
+
|
|
928
|
+
错误处理工具类,提供统一的错误处理和日志记录。
|
|
929
|
+
|
|
930
|
+
- **getInstance()**
|
|
931
|
+
> 获取错误处理器单例实例。
|
|
932
|
+
```javascript
|
|
933
|
+
const errorHandler = ErrorHandler.getInstance();
|
|
934
|
+
```
|
|
935
|
+
|
|
936
|
+
- **handleError(error: MyOpenLayersError)**
|
|
937
|
+
> 处理错误,记录日志并触发回调。
|
|
938
|
+
```javascript
|
|
939
|
+
errorHandler.handleError(error);
|
|
940
|
+
```
|
|
941
|
+
|
|
942
|
+
- **validate(condition: boolean, message: string, context?: any)**
|
|
943
|
+
> 验证条件,失败时抛出错误。
|
|
944
|
+
```javascript
|
|
945
|
+
ErrorHandler.validate(isValid, '验证失败', { data });
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
### ValidationUtils
|
|
949
|
+
|
|
950
|
+
验证工具类,提供各种数据验证方法。
|
|
951
|
+
|
|
952
|
+
- **isValidCoordinate(longitude: number, latitude: number)**
|
|
953
|
+
> 验证坐标是否有效。
|
|
954
|
+
```javascript
|
|
955
|
+
const isValid = ValidationUtils.isValidCoordinate(119.81, 29.969);
|
|
956
|
+
```
|
|
957
|
+
|
|
958
|
+
- **validateMapInstance(map: any)**
|
|
959
|
+
> 验证地图实例。
|
|
960
|
+
```javascript
|
|
961
|
+
ValidationUtils.validateMapInstance(map);
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
- **validateLayerName(layerName: string)**
|
|
965
|
+
> 验证图层名称。
|
|
966
|
+
```javascript
|
|
967
|
+
ValidationUtils.validateLayerName('myLayer');
|
|
968
|
+
```
|
|
969
|
+
|
|
804
970
|
---
|
|
805
971
|
|
|
806
972
|
## 类型定义
|
|
@@ -820,7 +986,8 @@ interface MapInitType {
|
|
|
820
986
|
extent?: number[],
|
|
821
987
|
mapClipData?: MapJSONData,
|
|
822
988
|
token?: string,
|
|
823
|
-
annotation?: boolean
|
|
989
|
+
annotation?: boolean,
|
|
990
|
+
coordinateSystem?: string // 坐标系(支持CGCS2000)
|
|
824
991
|
}
|
|
825
992
|
|
|
826
993
|
// 点位数据
|
|
@@ -937,6 +1104,50 @@ interface HeatMapOptions {
|
|
|
937
1104
|
}
|
|
938
1105
|
```
|
|
939
1106
|
|
|
1107
|
+
### VueTemplatePointOptions
|
|
1108
|
+
|
|
1109
|
+
Vue 组件点位配置类型,支持 Vue 2 和 Vue 3。
|
|
1110
|
+
|
|
1111
|
+
```typescript
|
|
1112
|
+
interface VueTemplatePointOptions {
|
|
1113
|
+
coordinate: [number, number]; // 点位坐标
|
|
1114
|
+
template: any; // Vue 组件模板
|
|
1115
|
+
data?: any; // 传递给组件的数据
|
|
1116
|
+
vue: VueInstance | VueApp; // Vue 实例(Vue 2/3)
|
|
1117
|
+
layerName?: string; // 图层名称
|
|
1118
|
+
id?: string; // 点位唯一标识
|
|
1119
|
+
className?: string; // CSS 类名
|
|
1120
|
+
stopEvent?: boolean; // 是否阻止事件冒泡
|
|
1121
|
+
}
|
|
1122
|
+
```
|
|
1123
|
+
|
|
1124
|
+
### ErrorType
|
|
1125
|
+
|
|
1126
|
+
错误类型枚举。
|
|
1127
|
+
|
|
1128
|
+
```typescript
|
|
1129
|
+
enum ErrorType {
|
|
1130
|
+
VALIDATION_ERROR = 'VALIDATION_ERROR',
|
|
1131
|
+
MAP_ERROR = 'MAP_ERROR',
|
|
1132
|
+
LAYER_ERROR = 'LAYER_ERROR',
|
|
1133
|
+
COORDINATE_ERROR = 'COORDINATE_ERROR',
|
|
1134
|
+
DATA_ERROR = 'DATA_ERROR',
|
|
1135
|
+
COMPONENT_ERROR = 'COMPONENT_ERROR'
|
|
1136
|
+
}
|
|
1137
|
+
```
|
|
1138
|
+
|
|
1139
|
+
### MyOpenLayersError
|
|
1140
|
+
|
|
1141
|
+
自定义错误类。
|
|
1142
|
+
|
|
1143
|
+
```typescript
|
|
1144
|
+
class MyOpenLayersError extends Error {
|
|
1145
|
+
public readonly type: ErrorType;
|
|
1146
|
+
public readonly timestamp: Date;
|
|
1147
|
+
public readonly context?: any;
|
|
1148
|
+
}
|
|
1149
|
+
```
|
|
1150
|
+
|
|
940
1151
|
### 兼容性类型
|
|
941
1152
|
|
|
942
1153
|
```typescript
|
|
@@ -957,8 +1168,6 @@ type OptionsType = BaseOptions & StyleOptions & TextOptions & {
|
|
|
957
1168
|
|
|
958
1169
|
## 迁移指南
|
|
959
1170
|
|
|
960
|
-
如果您正在从旧版本的 `OptionsType` 迁移到新的模块化类型接口,请参考详细的 [迁移指南](MIGRATION_GUIDE.md)。
|
|
961
|
-
|
|
962
1171
|
### 快速迁移示例
|
|
963
1172
|
|
|
964
1173
|
```typescript
|
|
@@ -992,20 +1201,23 @@ const options: PointOptions = {
|
|
|
992
1201
|
|
|
993
1202
|
### 运行时依赖
|
|
994
1203
|
|
|
995
|
-
- **
|
|
996
|
-
- **
|
|
997
|
-
-
|
|
1204
|
+
- **ol**: ^7.5.2 - OpenLayers 地图库
|
|
1205
|
+
- **proj4**: ^2.9.2 - 坐标系转换库
|
|
1206
|
+
- **@turf/turf**: ^6.5.0 - 地理空间分析库
|
|
998
1207
|
|
|
999
1208
|
### 开发依赖
|
|
1000
1209
|
|
|
1001
|
-
-
|
|
1002
|
-
- **
|
|
1003
|
-
- **
|
|
1004
|
-
-
|
|
1210
|
+
- **@types/ol**: ^6.5.3 - OpenLayers TypeScript 类型定义
|
|
1211
|
+
- **typescript**: ^5.0.0 - TypeScript 编译器
|
|
1212
|
+
- **vite**: ^4.4.5 - 构建工具
|
|
1213
|
+
- **@vitejs/plugin-vue**: ^4.2.3 - Vue 插件支持
|
|
1214
|
+
- **vue-tsc**: ^1.8.5 - Vue TypeScript 编译器
|
|
1005
1215
|
|
|
1006
1216
|
### 对等依赖
|
|
1007
1217
|
|
|
1008
|
-
- **
|
|
1218
|
+
- **vue**: ^2.6.0 || ^3.0.0 - Vue.js 框架(可选,用于 Vue 组件支持)
|
|
1219
|
+
- **element-ui**: ^2.15.0 - Element UI 组件库(Vue 2)
|
|
1220
|
+
- **element-plus**: ^2.0.0 - Element Plus 组件库(Vue 3)
|
|
1009
1221
|
|
|
1010
1222
|
> **注意**:本库与 OpenLayers 6.15.1 完全兼容,建议使用相同版本以获得最佳体验。
|
|
1011
1223
|
|
|
@@ -1206,14 +1418,46 @@ A:
|
|
|
1206
1418
|
|
|
1207
1419
|
## 更新日志
|
|
1208
1420
|
|
|
1209
|
-
### v1.0.
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
-
|
|
1213
|
-
-
|
|
1214
|
-
-
|
|
1215
|
-
-
|
|
1216
|
-
-
|
|
1421
|
+
### v1.0.15 (2025-08-20)
|
|
1422
|
+
|
|
1423
|
+
#### 新增功能
|
|
1424
|
+
- ✨ 完整的 TypeScript 支持和类型定义
|
|
1425
|
+
- ✨ 模块化架构设计,支持按需引入
|
|
1426
|
+
- ✨ 天地图底图支持(矢量、影像、地形)
|
|
1427
|
+
- ✨ 点要素操作(普通点位、聚合点位、闪烁点位)
|
|
1428
|
+
- ✨ Vue 组件集成支持(Vue 2/3 兼容)
|
|
1429
|
+
- ✨ 线要素和面要素绘制
|
|
1430
|
+
- ✨ 热力图和图片图层支持
|
|
1431
|
+
- ✨ 测量工具(距离、面积)
|
|
1432
|
+
- ✨ 事件管理和配置管理系统
|
|
1433
|
+
- ✨ 错误处理和验证工具
|
|
1434
|
+
- ✨ CGCS2000 坐标系支持
|
|
1435
|
+
|
|
1436
|
+
#### 技术特性
|
|
1437
|
+
- 🔧 支持 Vue 2 和 Vue 3
|
|
1438
|
+
- 🔧 完整的 TypeScript 类型定义
|
|
1439
|
+
- 🔧 模块化设计,懒加载支持
|
|
1440
|
+
- 🔧 统一的错误处理机制
|
|
1441
|
+
- 🔧 向后兼容性保证
|
|
1442
|
+
- 🔧 环境变量配置支持
|
|
1443
|
+
|
|
1444
|
+
#### 核心类库
|
|
1445
|
+
- 📦 MyOl - 地图核心管理类
|
|
1446
|
+
- 📦 MapBaseLayers - 底图管理
|
|
1447
|
+
- 📦 Point/Line/Polygon - 要素操作
|
|
1448
|
+
- 📦 VueTemplatePoint - Vue 组件支持
|
|
1449
|
+
- 📦 MapTools - 地图工具集
|
|
1450
|
+
- 📦 MeasureHandler - 测量工具
|
|
1451
|
+
- 📦 EventManager - 事件管理
|
|
1452
|
+
- 📦 ConfigManager - 配置管理
|
|
1453
|
+
- 📦 ErrorHandler - 错误处理
|
|
1454
|
+
- 📦 ValidationUtils - 验证工具
|
|
1455
|
+
|
|
1456
|
+
#### 文档
|
|
1457
|
+
- 📚 完整的 API 文档和类型定义
|
|
1458
|
+
- 📚 详细的使用示例和最佳实践
|
|
1459
|
+
- 📚 环境配置和部署指南
|
|
1460
|
+
- 📚 FAQ 和常见问题解决方案
|
|
1217
1461
|
|
|
1218
1462
|
查看完整的 [更新日志](CHANGELOG.md)
|
|
1219
1463
|
|
package/core/ConfigManager.d.ts
CHANGED
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 配置管理类
|
|
3
|
-
* 用于统一管理默认配置和验证
|
|
4
|
-
*/
|
|
5
|
-
export declare class ConfigManager {
|
|
6
|
-
/**
|
|
7
|
-
* 默认点位配置
|
|
8
|
-
*/
|
|
9
|
-
static readonly DEFAULT_POINT_OPTIONS: {
|
|
10
|
-
strokeColor: string;
|
|
11
|
-
strokeWidth: number;
|
|
12
|
-
fillColor: string;
|
|
13
|
-
opacity: number;
|
|
14
|
-
visible: boolean;
|
|
15
|
-
layerName: string;
|
|
16
|
-
zIndex: number;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* 默认线配置
|
|
20
|
-
*/
|
|
21
|
-
static readonly DEFAULT_LINE_OPTIONS: {
|
|
22
|
-
strokeColor: string;
|
|
23
|
-
strokeWidth: number;
|
|
24
|
-
opacity: number;
|
|
25
|
-
visible: boolean;
|
|
26
|
-
layerName: string;
|
|
27
|
-
zIndex: number;
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* 默认面配置
|
|
31
|
-
*/
|
|
32
|
-
static readonly DEFAULT_POLYGON_OPTIONS: {
|
|
33
|
-
strokeColor: string;
|
|
34
|
-
strokeWidth: number;
|
|
35
|
-
fillColor: string;
|
|
36
|
-
opacity: number;
|
|
37
|
-
visible: boolean;
|
|
38
|
-
layerName: string;
|
|
39
|
-
zIndex: number;
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* 默认图片图层配置
|
|
43
|
-
*/
|
|
44
|
-
static readonly DEFAULT_IMAGE_OPTIONS: {
|
|
45
|
-
opacity: number;
|
|
46
|
-
visible: boolean;
|
|
47
|
-
layerName: string;
|
|
48
|
-
zIndex: number;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* 默认遮罩图层配置
|
|
52
|
-
*/
|
|
53
|
-
static readonly DEFAULT_MASK_OPTIONS: {
|
|
54
|
-
fillColor: string;
|
|
55
|
-
opacity: number;
|
|
56
|
-
visible: boolean;
|
|
57
|
-
layerName: string;
|
|
58
|
-
zIndex: number;
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* 默认文本配置
|
|
62
|
-
*/
|
|
63
|
-
static readonly DEFAULT_TEXT_OPTIONS: {
|
|
64
|
-
textFont: string;
|
|
65
|
-
textFillColor: string;
|
|
66
|
-
textStrokeColor: string;
|
|
67
|
-
textStrokeWidth: number;
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* 合并配置选项
|
|
71
|
-
* @param defaultOptions 默认配置
|
|
72
|
-
* @param userOptions 用户配置
|
|
73
|
-
* @returns 合并后的配置
|
|
74
|
-
*/
|
|
75
|
-
static mergeOptions<T extends Record<string, any>>(defaultOptions: T, userOptions?: Partial<T>): T;
|
|
76
|
-
/**
|
|
77
|
-
* 生成唯一ID
|
|
78
|
-
* @param prefix 前缀
|
|
79
|
-
* @returns 唯一ID
|
|
80
|
-
*/
|
|
81
|
-
static generateId(prefix?: string): string;
|
|
82
|
-
/**
|
|
83
|
-
* 深度克隆对象
|
|
84
|
-
* @param obj 要克隆的对象
|
|
85
|
-
* @returns 克隆后的对象
|
|
86
|
-
*/
|
|
87
|
-
static deepClone<T>(obj: T): T;
|
|
88
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 配置管理类
|
|
3
|
+
* 用于统一管理默认配置和验证
|
|
4
|
+
*/
|
|
5
|
+
export declare class ConfigManager {
|
|
6
|
+
/**
|
|
7
|
+
* 默认点位配置
|
|
8
|
+
*/
|
|
9
|
+
static readonly DEFAULT_POINT_OPTIONS: {
|
|
10
|
+
strokeColor: string;
|
|
11
|
+
strokeWidth: number;
|
|
12
|
+
fillColor: string;
|
|
13
|
+
opacity: number;
|
|
14
|
+
visible: boolean;
|
|
15
|
+
layerName: string;
|
|
16
|
+
zIndex: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* 默认线配置
|
|
20
|
+
*/
|
|
21
|
+
static readonly DEFAULT_LINE_OPTIONS: {
|
|
22
|
+
strokeColor: string;
|
|
23
|
+
strokeWidth: number;
|
|
24
|
+
opacity: number;
|
|
25
|
+
visible: boolean;
|
|
26
|
+
layerName: string;
|
|
27
|
+
zIndex: number;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* 默认面配置
|
|
31
|
+
*/
|
|
32
|
+
static readonly DEFAULT_POLYGON_OPTIONS: {
|
|
33
|
+
strokeColor: string;
|
|
34
|
+
strokeWidth: number;
|
|
35
|
+
fillColor: string;
|
|
36
|
+
opacity: number;
|
|
37
|
+
visible: boolean;
|
|
38
|
+
layerName: string;
|
|
39
|
+
zIndex: number;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* 默认图片图层配置
|
|
43
|
+
*/
|
|
44
|
+
static readonly DEFAULT_IMAGE_OPTIONS: {
|
|
45
|
+
opacity: number;
|
|
46
|
+
visible: boolean;
|
|
47
|
+
layerName: string;
|
|
48
|
+
zIndex: number;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* 默认遮罩图层配置
|
|
52
|
+
*/
|
|
53
|
+
static readonly DEFAULT_MASK_OPTIONS: {
|
|
54
|
+
fillColor: string;
|
|
55
|
+
opacity: number;
|
|
56
|
+
visible: boolean;
|
|
57
|
+
layerName: string;
|
|
58
|
+
zIndex: number;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* 默认文本配置
|
|
62
|
+
*/
|
|
63
|
+
static readonly DEFAULT_TEXT_OPTIONS: {
|
|
64
|
+
textFont: string;
|
|
65
|
+
textFillColor: string;
|
|
66
|
+
textStrokeColor: string;
|
|
67
|
+
textStrokeWidth: number;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* 合并配置选项
|
|
71
|
+
* @param defaultOptions 默认配置
|
|
72
|
+
* @param userOptions 用户配置
|
|
73
|
+
* @returns 合并后的配置
|
|
74
|
+
*/
|
|
75
|
+
static mergeOptions<T extends Record<string, any>>(defaultOptions: T, userOptions?: Partial<T>): T;
|
|
76
|
+
/**
|
|
77
|
+
* 生成唯一ID
|
|
78
|
+
* @param prefix 前缀
|
|
79
|
+
* @returns 唯一ID
|
|
80
|
+
*/
|
|
81
|
+
static generateId(prefix?: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* 深度克隆对象
|
|
84
|
+
* @param obj 要克隆的对象
|
|
85
|
+
* @returns 克隆后的对象
|
|
86
|
+
*/
|
|
87
|
+
static deepClone<T>(obj: T): T;
|
|
88
|
+
}
|