my-openlayer 2.4.10 → 2.5.1

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.
Files changed (119) hide show
  1. package/CHANGELOG.md +167 -265
  2. package/MyOl.d.ts +9 -9
  3. package/MyOl.js +17 -16
  4. package/README.md +217 -156
  5. package/core/line/Line.d.ts +40 -0
  6. package/core/line/Line.js +144 -0
  7. package/core/line/LineFeatureFactory.d.ts +17 -0
  8. package/core/line/LineFeatureFactory.js +75 -0
  9. package/core/line/LineFlowAnimator.d.ts +53 -0
  10. package/core/line/LineFlowAnimator.js +297 -0
  11. package/core/line/LineStyleFactory.d.ts +43 -0
  12. package/core/line/LineStyleFactory.js +135 -0
  13. package/core/{RiverLayerManager.d.ts → line/RiverLayerManager.d.ts} +2 -2
  14. package/core/{RiverLayerManager.js → line/RiverLayerManager.js} +3 -5
  15. package/core/line/index.d.ts +6 -0
  16. package/core/line/index.js +5 -0
  17. package/core/{ConfigManager.d.ts → map/ConfigManager.d.ts} +25 -1
  18. package/core/{ConfigManager.js → map/ConfigManager.js} +22 -1
  19. package/core/{EventManager.d.ts → map/EventManager.d.ts} +1 -1
  20. package/core/{EventManager.js → map/EventManager.js} +2 -2
  21. package/core/{MapBaseLayers.d.ts → map/MapBaseLayers.d.ts} +1 -1
  22. package/core/{MapBaseLayers.js → map/MapBaseLayers.js} +10 -12
  23. package/core/{MapTools.d.ts → map/MapTools.d.ts} +5 -2
  24. package/core/{MapTools.js → map/MapTools.js} +11 -5
  25. package/core/{MeasureHandler.d.ts → map/MeasureHandler.d.ts} +1 -1
  26. package/core/{MeasureHandler.js → map/MeasureHandler.js} +41 -41
  27. package/core/map/index.d.ts +5 -0
  28. package/core/map/index.js +5 -0
  29. package/core/{Point.d.ts → point/Point.d.ts} +13 -4
  30. package/core/{Point.js → point/Point.js} +24 -112
  31. package/core/point/PointClusterLayer.d.ts +10 -0
  32. package/core/point/PointClusterLayer.js +52 -0
  33. package/core/point/PointOverlay.d.ts +13 -0
  34. package/core/point/PointOverlay.js +57 -0
  35. package/core/point/PointPulseLayer.d.ts +13 -0
  36. package/core/point/PointPulseLayer.js +207 -0
  37. package/core/point/index.d.ts +4 -0
  38. package/core/point/index.js +4 -0
  39. package/core/{Polygon.d.ts → polygon/Polygon.d.ts} +4 -50
  40. package/core/polygon/Polygon.js +248 -0
  41. package/core/polygon/PolygonHeatmapLayer.d.ts +11 -0
  42. package/core/polygon/PolygonHeatmapLayer.js +40 -0
  43. package/core/polygon/PolygonImageLayer.d.ts +9 -0
  44. package/core/polygon/PolygonImageLayer.js +61 -0
  45. package/core/polygon/PolygonMaskLayer.d.ts +20 -0
  46. package/core/polygon/PolygonMaskLayer.js +107 -0
  47. package/core/polygon/PolygonStyleFactory.d.ts +12 -0
  48. package/core/polygon/PolygonStyleFactory.js +100 -0
  49. package/core/polygon/index.d.ts +5 -0
  50. package/core/polygon/index.js +5 -0
  51. package/core/{SelectHandler.d.ts → select/SelectHandler.d.ts} +2 -3
  52. package/core/{SelectHandler.js → select/SelectHandler.js} +4 -4
  53. package/core/select/index.d.ts +1 -0
  54. package/core/select/index.js +1 -0
  55. package/core/{VueTemplatePoint.d.ts → vue-template-point/VueTemplatePoint.d.ts} +1 -1
  56. package/core/{VueTemplatePoint.js → vue-template-point/VueTemplatePoint.js} +4 -4
  57. package/core/vue-template-point/index.d.ts +1 -0
  58. package/core/vue-template-point/index.js +1 -0
  59. package/docs/.vitepress/config.mts +57 -57
  60. package/docs/ConfigManager.md +71 -71
  61. package/docs/ErrorHandler.md +106 -106
  62. package/docs/EventManager.md +142 -142
  63. package/docs/Line.md +215 -187
  64. package/docs/MapBaseLayers.md +198 -198
  65. package/docs/MapTools.md +172 -172
  66. package/docs/MeasureHandler.md +87 -87
  67. package/docs/MyOl.md +247 -247
  68. package/docs/Point.md +233 -165
  69. package/docs/Polygon.md +241 -241
  70. package/docs/RiverLayerManager.md +187 -187
  71. package/docs/SelectHandler.md +147 -147
  72. package/docs/ValidationUtils.md +83 -83
  73. package/docs/VueTemplatePoint.md +214 -214
  74. package/docs/index.md +79 -78
  75. package/index.d.ts +11 -16
  76. package/index.js +7 -13
  77. package/package.json +11 -1
  78. package/types/base.d.ts +47 -0
  79. package/types/base.js +1 -0
  80. package/types/common.d.ts +59 -0
  81. package/types/common.js +1 -0
  82. package/types/index.d.ts +9 -0
  83. package/types/index.js +1 -0
  84. package/types/line.d.ts +41 -0
  85. package/types/line.js +1 -0
  86. package/types/map.d.ts +77 -0
  87. package/types/map.js +1 -0
  88. package/types/point.d.ts +54 -0
  89. package/types/point.js +1 -0
  90. package/types/polygon.d.ts +8 -0
  91. package/types/polygon.js +1 -0
  92. package/types/select.d.ts +25 -0
  93. package/types/select.js +1 -0
  94. package/types/vue-template-point.d.ts +54 -0
  95. package/{types.js → types/vue-template-point.js} +0 -3
  96. package/utils/ProjectionUtils.d.ts +28 -0
  97. package/utils/ProjectionUtils.js +34 -0
  98. package/utils/ValidationUtils.d.ts +33 -86
  99. package/utils/ValidationUtils.js +60 -165
  100. package/core/DomPoint.d.ts +0 -21
  101. package/core/DomPoint.js +0 -36
  102. package/core/Line.d.ts +0 -49
  103. package/core/Line.js +0 -114
  104. package/core/Polygon.js +0 -646
  105. package/docs/.vitepress/cache/deps/@theme_index.js +0 -275
  106. package/docs/.vitepress/cache/deps/@theme_index.js.map +0 -7
  107. package/docs/.vitepress/cache/deps/_metadata.json +0 -40
  108. package/docs/.vitepress/cache/deps/chunk-LW4I4DCF.js +0 -12542
  109. package/docs/.vitepress/cache/deps/chunk-LW4I4DCF.js.map +0 -7
  110. package/docs/.vitepress/cache/deps/chunk-Z5QSWKN2.js +0 -9719
  111. package/docs/.vitepress/cache/deps/chunk-Z5QSWKN2.js.map +0 -7
  112. package/docs/.vitepress/cache/deps/package.json +0 -3
  113. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4505
  114. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  115. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -583
  116. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  117. package/docs/.vitepress/cache/deps/vue.js +0 -343
  118. package/docs/.vitepress/cache/deps/vue.js.map +0 -7
  119. package/types.d.ts +0 -372
package/docs/Point.md CHANGED
@@ -1,165 +1,233 @@
1
- # Point 类
2
-
3
- `Point` 类用于在地图上添加和管理点要素,支持普通点、聚合点、DOM 点和 Vue 组件点。
4
-
5
- ## 构造函数
6
-
7
- ```typescript
8
- constructor(map: Map)
9
- ```
10
-
11
- - **map**: OpenLayers 地图实例。
12
-
13
- ## 接口定义
14
-
15
- ### PointOptions
16
-
17
- 继承自 `BaseOptions`, `StyleOptions`, `TextOptions`。
18
-
19
- | 属性名 | 类型 | 说明 |
20
- | :--- | :--- | :--- |
21
- | textKey | `string` | 数据中用于显示文本的字段键名 |
22
- | img | `string` | 图标图片的 URL |
23
- | scale | `number` | 图标缩放比例 |
24
- | iconColor | `string` | 图标颜色(用于改变图标色调) |
25
- | layerName | `string` | 图层名称(必填,继承自 BaseOptions) |
26
- | zIndex | `number` | 图层层级 |
27
- | visible | `boolean` | 是否可见 |
28
- | style | `Style \| Style[] \| ((feature: FeatureLike) => Style \| Style[])` | 自定义样式函数 |
29
-
30
- ### ClusterOptions
31
-
32
- 继承自 `PointOptions`。
33
-
34
- | 属性名 | 类型 | 说明 |
35
- | :--- | :--- | :--- |
36
- | distance | `number` | 聚合距离(像素),默认为 20 |
37
- | minDistance | `number` | 最小聚合距离 |
38
-
39
- ### PointData
40
-
41
- | 属性名 | 类型 | 说明 |
42
- | :--- | :--- | :--- |
43
- | lgtd | `number` | 经度 |
44
- | lttd | `number` | 纬度 |
45
- | [key: string] | `any` | 其他业务数据字段 |
46
-
47
- ### VueTemplatePointOptions
48
-
49
- | 属性名 | 类型 | 说明 |
50
- | :--- | :--- | :--- |
51
- | Template | `any` | Vue 组件模板 |
52
- | lgtd | `number` | 经度 |
53
- | lttd | `number` | 纬度 |
54
- | props | `any` | 传递给组件的 props |
55
- | styleType | `'default' \| 'custom'` | 样式类型 |
56
- | positioning | `string` | 定位方式,如 'bottom-center' |
57
- | stopEvent | `boolean` | 是否阻止事件冒泡 |
58
- | visible | `boolean` | 是否可见 |
59
- | className | `string` | 自定义类名 |
60
- | zIndex | `number` | 层级 |
61
-
62
- ## 方法
63
-
64
- ### addPoint
65
-
66
- 添加普通点图层。
67
-
68
- ```typescript
69
- addPoint(pointData: PointData[], options: PointOptions): VectorLayer<VectorSource> | null
70
- ```
71
-
72
- - **pointData**: 点位数据数组。
73
- - **options**: 配置选项。
74
- - **返回值**: 创建的向量图层,如果数据无效返回 `null`。
75
-
76
- ### addClusterPoint
77
-
78
- 添加聚合点图层。
79
-
80
- ```typescript
81
- addClusterPoint(pointData: PointData[], options: ClusterOptions): VectorLayer<VectorSource> | null
82
- ```
83
-
84
- - **pointData**: 点位数据数组。
85
- - **options**: 聚合配置选项。
86
- - **返回值**: 创建的聚合图层。
87
-
88
- ### addDomPoint
89
-
90
- 添加 DOM 元素点(Overlay)。
91
-
92
- ```typescript
93
- addDomPoint(twinkleList: TwinkleItem[], callback?: Function): {
94
- anchors: Overlay[],
95
- remove: () => void,
96
- setVisible: (visible: boolean) => void
97
- }
98
- ```
99
-
100
- - **twinkleList**: 包含经纬度和类名的数据列表。
101
- - **callback**: 点击回调函数。
102
- - **返回值**: 控制对象,包含 `remove` 和 `setVisible` 方法。
103
-
104
- ### addVueTemplatePoint
105
-
106
- 添加 Vue 组件作为点位。
107
-
108
- ```typescript
109
- addVueTemplatePoint(pointDataList: PointData[], template: any, options?: VueTemplatePointOptions): {
110
- setVisible: (visible: boolean) => void,
111
- setOneVisibleByProp: (propName: string, propValue: any, visible: boolean) => void,
112
- remove: () => void,
113
- getPoints: () => VueTemplatePointInstance[]
114
- }
115
- ```
116
-
117
- - **pointDataList**: 点位数据列表。
118
- - **template**: Vue 组件。
119
- - **options**: 配置选项。
120
- - **返回值**: 控制对象,包含显示/隐藏和移除方法。
121
-
122
- ## 使用示例
123
-
124
- ### 添加普通点
125
-
126
- ```typescript
127
- import { Point } from 'my-openlayers';
128
-
129
- const point = new Point(map);
130
- const data = [
131
- { lgtd: 116.40, lttd: 39.90, name: '北京' },
132
- { lgtd: 121.47, lttd: 31.23, name: '上海' }
133
- ];
134
-
135
- point.addPoint(data, {
136
- layerName: 'cities',
137
- img: 'path/to/icon.png',
138
- textKey: 'name',
139
- scale: 0.8
140
- });
141
- ```
142
-
143
- ### 添加聚合点
144
-
145
- ```typescript
146
- point.addClusterPoint(data, {
147
- layerName: 'clusters',
148
- distance: 40,
149
- img: 'path/to/cluster-icon.png'
150
- });
151
- ```
152
-
153
- ### 添加 Vue 组件点
154
-
155
- ```typescript
156
- import MyComponent from './MyComponent.vue';
157
-
158
- const ctrl = point.addVueTemplatePoint(data, MyComponent, {
159
- positioning: 'bottom-center',
160
- props: { status: 'active' }
161
- });
162
-
163
- // 隐藏所有点
164
- ctrl.setVisible(false);
165
- ```
1
+ # Point 类
2
+
3
+ `Point` 类用于在地图上添加和管理点要素,支持普通点、聚合点、DOM 点、高性能闪烁点和 Vue 组件点。
4
+
5
+ ## 构造函数
6
+
7
+ ```typescript
8
+ constructor(map: Map)
9
+ ```
10
+
11
+ - **map**: OpenLayers 地图实例。
12
+
13
+ ## 接口定义
14
+
15
+ ### PointOptions
16
+
17
+ 继承自 `BaseOptions`, `StyleOptions`, `TextOptions`。
18
+
19
+ | 属性名 | 类型 | 说明 |
20
+ | :--- | :--- | :--- |
21
+ | textKey | `string` | 数据中用于显示文本的字段键名 |
22
+ | img | `string` | 图标图片的 URL |
23
+ | scale | `number` | 图标缩放比例 |
24
+ | iconColor | `string` | 图标颜色(用于改变图标色调) |
25
+ | layerName | `string` | 图层名称(必填,继承自 BaseOptions) |
26
+ | zIndex | `number` | 图层层级 |
27
+ | visible | `boolean` | 是否可见 |
28
+ | style | `Style \| Style[] \| ((feature: FeatureLike) => Style \| Style[])` | 自定义样式函数 |
29
+
30
+ ### ClusterOptions
31
+
32
+ 继承自 `PointOptions`。
33
+
34
+ | 属性名 | 类型 | 说明 |
35
+ | :--- | :--- | :--- |
36
+ | distance | `number` | 聚合距离(像素),默认为 20 |
37
+ | minDistance | `number` | 最小聚合距离 |
38
+
39
+ ### PulsePointOptions
40
+
41
+ 继承自 `PointOptions`,因此与 `addPoint` 一致支持 `img`、`scale`、`iconColor`、`textKey`、`textVisible` 等参数。
42
+
43
+ | 属性名 | 类型 | 说明 |
44
+ | :--- | :--- | :--- |
45
+ | levelKey | `string` | 点位等级字段,默认 `lev` |
46
+ | icon | `PulsePointIconOptions` | 不使用 `img` 时的矢量圆点兜底配置 |
47
+ | pulse.enabled | `boolean` | 是否启用闪烁圈,默认 `true` |
48
+ | pulse.duration | `number` | 单轮动画时长,默认 `2400ms` |
49
+ | pulse.radius | `[number, number]` | 闪烁圈半径范围,默认 `[8, 26]` |
50
+ | pulse.colorMap | `Record<string \| number, string>` | 按等级配置闪烁圈填充色 |
51
+ | pulse.strokeColorMap | `Record<string \| number, string>` | 按等级配置闪烁圈描边色 |
52
+ | pulse.strokeWidth | `number` | 闪烁圈描边宽度,默认 `0` |
53
+ | pulse.frameCount | `number` | 动画分帧缓存数量,默认 `24` |
54
+
55
+ ### PulsePointLayerHandle
56
+
57
+ | 属性名 | 类型 | 说明 |
58
+ | :--- | :--- | :--- |
59
+ | layer | `VectorLayer<VectorSource>` | 创建的闪烁点图层 |
60
+ | source | `VectorSource` | 图层数据源 |
61
+ | start | `() => void` | 开始闪烁动画 |
62
+ | stop | `() => void` | 停止闪烁动画 |
63
+ | setVisible | `(visible: boolean) => void` | 控制图层显隐 |
64
+ | updateData | `(data: PointData[]) => void` | 更新点位数据 |
65
+ | remove | `() => void` | 停止动画并移除图层 |
66
+
67
+ ### PointData
68
+
69
+ | 属性名 | 类型 | 说明 |
70
+ | :--- | :--- | :--- |
71
+ | lgtd | `number` | 经度 |
72
+ | lttd | `number` | 纬度 |
73
+ | [key: string] | `any` | 其他业务数据字段 |
74
+
75
+ ### VueTemplatePointOptions
76
+
77
+ | 属性名 | 类型 | 说明 |
78
+ | :--- | :--- | :--- |
79
+ | Template | `any` | Vue 组件模板 |
80
+ | lgtd | `number` | 经度 |
81
+ | lttd | `number` | 纬度 |
82
+ | props | `any` | 传递给组件的 props |
83
+ | styleType | `'default' \| 'custom'` | 样式类型 |
84
+ | positioning | `string` | 定位方式,如 'bottom-center' |
85
+ | stopEvent | `boolean` | 是否阻止事件冒泡 |
86
+ | visible | `boolean` | 是否可见 |
87
+ | className | `string` | 自定义类名 |
88
+ | zIndex | `number` | 层级 |
89
+
90
+ ## 方法
91
+
92
+ ### addPoint
93
+
94
+ 添加普通点图层。
95
+
96
+ ```typescript
97
+ addPoint(pointData: PointData[], options: PointOptions): VectorLayer<VectorSource> | null
98
+ ```
99
+
100
+ - **pointData**: 点位数据数组。
101
+ - **options**: 配置选项。
102
+ - **返回值**: 创建的向量图层,如果数据无效返回 `null`。
103
+
104
+ ### addClusterPoint
105
+
106
+ 添加聚合点图层。
107
+
108
+ ```typescript
109
+ addClusterPoint(pointData: PointData[], options: ClusterOptions): VectorLayer<VectorSource> | null
110
+ ```
111
+
112
+ - **pointData**: 点位数据数组。
113
+ - **options**: 聚合配置选项。
114
+ - **返回值**: 创建的聚合图层。
115
+
116
+ ### addDomPoint
117
+
118
+ 添加 DOM 元素点(Overlay)。
119
+
120
+ ```typescript
121
+ addDomPoint(twinkleList: TwinkleItem[], callback?: Function): {
122
+ anchors: Overlay[],
123
+ remove: () => void,
124
+ setVisible: (visible: boolean) => void
125
+ }
126
+ ```
127
+
128
+ - **twinkleList**: 包含经纬度和类名的数据列表。
129
+ - **callback**: 点击回调函数。
130
+ - **返回值**: 控制对象,包含 `remove` 和 `setVisible` 方法。
131
+
132
+ ### addPulsePointLayer
133
+
134
+ 添加高性能闪烁点图层。
135
+
136
+ ```typescript
137
+ addPulsePointLayer(pointData: PointData[], options: PulsePointOptions): PulsePointLayerHandle | null
138
+ ```
139
+
140
+ - **pointData**: 点位数据数组。
141
+ - **options**: 闪烁点配置选项,复用 `addPoint` 的图标、文本和图层参数习惯。
142
+ - **返回值**: 控制对象,包含动画启停、显隐、数据更新和移除方法;如果数据无效返回 `null`。
143
+
144
+ ### addVueTemplatePoint
145
+
146
+ 添加 Vue 组件作为点位。
147
+
148
+ ```typescript
149
+ addVueTemplatePoint(pointDataList: PointData[], template: any, options?: VueTemplatePointOptions): {
150
+ setVisible: (visible: boolean) => void,
151
+ setOneVisibleByProp: (propName: string, propValue: any, visible: boolean) => void,
152
+ remove: () => void,
153
+ getPoints: () => VueTemplatePointInstance[]
154
+ }
155
+ ```
156
+
157
+ - **pointDataList**: 点位数据列表。
158
+ - **template**: Vue 组件。
159
+ - **options**: 配置选项。
160
+ - **返回值**: 控制对象,包含显示/隐藏和移除方法。
161
+
162
+ ## 使用示例
163
+
164
+ ### 添加普通点
165
+
166
+ ```typescript
167
+ import { Point } from 'my-openlayers';
168
+
169
+ const point = new Point(map);
170
+ const data = [
171
+ { lgtd: 116.40, lttd: 39.90, name: '北京' },
172
+ { lgtd: 121.47, lttd: 31.23, name: '上海' }
173
+ ];
174
+
175
+ point.addPoint(data, {
176
+ layerName: 'cities',
177
+ img: 'path/to/icon.png',
178
+ textKey: 'name',
179
+ scale: 0.8
180
+ });
181
+ ```
182
+
183
+ ### 添加聚合点
184
+
185
+ ```typescript
186
+ point.addClusterPoint(data, {
187
+ layerName: 'clusters',
188
+ distance: 40,
189
+ img: 'path/to/cluster-icon.png'
190
+ });
191
+ ```
192
+
193
+ ### 添加高性能闪烁点
194
+
195
+ ```typescript
196
+ const pulseCtrl = point.addPulsePointLayer(data, {
197
+ layerName: 'village-warning-pulse',
198
+ levelKey: 'lev',
199
+ textKey: 'name',
200
+ img: '/icons/village.svg',
201
+ scale: 0.8,
202
+ textVisible: true,
203
+ pulse: {
204
+ duration: 2400,
205
+ radius: [8, 28],
206
+ colorMap: {
207
+ 0: 'rgba(255, 48, 54, 0.48)',
208
+ 1: 'rgba(255, 136, 0, 0.45)',
209
+ 2: 'rgba(253, 216, 46, 0.4)',
210
+ 3: 'rgba(6, 183, 253, 0.32)'
211
+ }
212
+ }
213
+ });
214
+
215
+ pulseCtrl?.stop();
216
+ pulseCtrl?.start();
217
+ pulseCtrl?.updateData(data);
218
+ pulseCtrl?.remove();
219
+ ```
220
+
221
+ ### 添加 Vue 组件点
222
+
223
+ ```typescript
224
+ import MyComponent from './MyComponent.vue';
225
+
226
+ const ctrl = point.addVueTemplatePoint(data, MyComponent, {
227
+ positioning: 'bottom-center',
228
+ props: { status: 'active' }
229
+ });
230
+
231
+ // 隐藏所有点
232
+ ctrl.setVisible(false);
233
+ ```