my-openlayer 2.4.7 → 2.4.9

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 (37) hide show
  1. package/CHANGELOG.md +208 -101
  2. package/MyOl.js +1 -1
  3. package/README.md +156 -156
  4. package/core/Point.js +21 -3
  5. package/docs/.vitepress/cache/deps/@theme_index.js +275 -0
  6. package/docs/.vitepress/cache/deps/@theme_index.js.map +7 -0
  7. package/docs/.vitepress/cache/deps/_metadata.json +40 -0
  8. package/docs/.vitepress/cache/deps/chunk-LW4I4DCF.js +12542 -0
  9. package/docs/.vitepress/cache/deps/chunk-LW4I4DCF.js.map +7 -0
  10. package/docs/.vitepress/cache/deps/chunk-Z5QSWKN2.js +9719 -0
  11. package/docs/.vitepress/cache/deps/chunk-Z5QSWKN2.js.map +7 -0
  12. package/docs/.vitepress/cache/deps/package.json +3 -0
  13. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4505 -0
  14. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
  15. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +583 -0
  16. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
  17. package/docs/.vitepress/cache/deps/vue.js +343 -0
  18. package/docs/.vitepress/cache/deps/vue.js.map +7 -0
  19. package/docs/.vitepress/config.mts +57 -0
  20. package/docs/ConfigManager.md +71 -40
  21. package/docs/ErrorHandler.md +106 -45
  22. package/docs/EventManager.md +142 -52
  23. package/docs/Line.md +187 -52
  24. package/docs/MapBaseLayers.md +198 -48
  25. package/docs/MapTools.md +172 -48
  26. package/docs/MeasureHandler.md +87 -47
  27. package/docs/MyOl.md +247 -62
  28. package/docs/Point.md +165 -58
  29. package/docs/Polygon.md +241 -65
  30. package/docs/RiverLayerManager.md +187 -59
  31. package/docs/SelectHandler.md +147 -126
  32. package/docs/ValidationUtils.md +83 -38
  33. package/docs/VueTemplatePoint.md +214 -85
  34. package/docs/index.md +78 -0
  35. package/package.json +7 -4
  36. package/types.d.ts +2 -0
  37. package/AI_CONTEXT.md +0 -147
package/docs/MapTools.md CHANGED
@@ -1,48 +1,172 @@
1
- # MapTools 地图工具类
2
-
3
- `MapTools` 提供通用的地图操作工具,如图层查找、移除、显隐控制、地图裁剪和视图自适应。
4
-
5
- ## 方法
6
-
7
- ### 图层管理
8
-
9
- - **getLayerByLayerName(layerName: string | string[])**: 根据名称获取图层对象(支持模糊匹配)。
10
- - **removeLayer(layerName: string | string[])**: 移除指定名称的图层。
11
- - **setLayerVisible(layerName: string, visible: boolean)**: 设置图层可见性。
12
-
13
- ### 视图操作
14
-
15
- - **locationAction(lgtd: number, lttd: number, zoom?: number, duration?: number)**: 视图定位。
16
- - **fitToLayers(layerNameOrLayers: string | string[] | Layer[], fitOptions?)**: 缩放地图以适应指定图层的范围。
17
- - **fitByData(jsonData: MapJSONData, fitOptions?)**: 缩放地图以适应 GeoJSON 数据的范围。
18
-
19
- ### 其他
20
-
21
- - **setMapClip(baseLayer: any, data: MapJSONData)**: 设置地图裁剪区域(Canvas 级裁剪)。
22
-
23
- ## 使用示例
24
-
25
- ```typescript
26
- const tools = map.getTools();
27
-
28
- // 1. 获取图层
29
- const layers = tools.getLayerByLayerName('my-layer');
30
- if (layers.length > 0) {
31
- console.log('找到图层:', layers[0]);
32
- }
33
-
34
- // 2. 移除图层
35
- tools.removeLayer('temp-layer');
36
-
37
- // 3. 视图自适应图层
38
- tools.fitToLayers('target-layer', {
39
- padding: [50, 50, 50, 50],
40
- duration: 1000
41
- });
42
-
43
- // 4. 根据数据缩放
44
- tools.fitByData(geoJsonData);
45
-
46
- // 5. 设置可见性
47
- tools.setLayerVisible('background-layer', false);
48
- ```
1
+ # MapTools 地图工具类
2
+
3
+ `MapTools` 提供通用的地图操作工具,包括图层查找、移除、显隐控制、地图裁剪和视图自适应等功能。
4
+
5
+ ## 构造函数
6
+
7
+ ```typescript
8
+ const tools = new MapTools(map: Map);
9
+ ```
10
+
11
+ - **map**: OpenLayers 地图实例。
12
+
13
+ ## 方法
14
+
15
+ ### 图层管理
16
+
17
+ #### getLayerByLayerName
18
+
19
+ 根据名称获取图层对象(支持模糊匹配)。
20
+
21
+ ```typescript
22
+ getLayerByLayerName(layerName: string | string[]): Layer[]
23
+ ```
24
+
25
+ | 参数 | 类型 | 说明 |
26
+ | :--- | :--- | :--- |
27
+ | `layerName` | `string` \| `string[]` | 图层名称或名称数组 |
28
+
29
+ #### removeLayer
30
+
31
+ 移除指定名称的图层。
32
+
33
+ ```typescript
34
+ removeLayer(layerName: string | string[]): void
35
+ ```
36
+
37
+ #### setLayerVisible
38
+
39
+ 设置图层可见性。
40
+
41
+ ```typescript
42
+ setLayerVisible(layerName: string, visible: boolean): void
43
+ ```
44
+
45
+ ### 视图操作
46
+
47
+ #### locationAction
48
+
49
+ 视图定位动画。
50
+
51
+ ```typescript
52
+ locationAction(lgtd: number, lttd: number, zoom = 20, duration = 3000): boolean
53
+ ```
54
+
55
+ | 参数 | 类型 | 说明 |
56
+ | :--- | :--- | :--- |
57
+ | `lgtd` | `number` | 目标经度 |
58
+ | `lttd` | `number` | 目标纬度 |
59
+ | `zoom` | `number` | 目标缩放层级 |
60
+ | `duration` | `number` | 动画持续时间(毫秒) |
61
+
62
+ #### fitToLayers
63
+
64
+ 缩放地图以适应指定图层的范围。
65
+
66
+ ```typescript
67
+ fitToLayers(
68
+ layerNameOrLayers: string | string[] | Layer[],
69
+ fitOptions?: {
70
+ padding?: [number, number, number, number];
71
+ maxZoom?: number;
72
+ duration?: number;
73
+ }
74
+ ): boolean
75
+ ```
76
+
77
+ | 参数 | 类型 | 说明 |
78
+ | :--- | :--- | :--- |
79
+ | `layerNameOrLayers` | `string` \| `Layer[]` | 图层名称或图层对象数组 |
80
+ | `fitOptions` | `Object` | 缩放配置:padding (边距), maxZoom, duration |
81
+
82
+ #### fitByData
83
+
84
+ 缩放地图以适应 GeoJSON 数据的范围。
85
+
86
+ ```typescript
87
+ fitByData(
88
+ jsonData: MapJSONData,
89
+ fitOptions?: {
90
+ padding?: [number, number, number, number];
91
+ maxZoom?: number;
92
+ duration?: number;
93
+ }
94
+ ): boolean
95
+ ```
96
+
97
+ ### 高级功能
98
+
99
+ #### setMapClip
100
+
101
+ 设置地图裁剪区域(基于 Canvas 的裁剪)。
102
+
103
+ ```typescript
104
+ static setMapClip(baseLayer: Layer, data: MapJSONData): Layer
105
+ ```
106
+
107
+ | 参数 | 类型 | 说明 |
108
+ | :--- | :--- | :--- |
109
+ | `baseLayer` | `Layer` | 需要被裁剪的图层 |
110
+ | `data` | `MapJSONData` | 定义裁剪形状的 GeoJSON 数据 |
111
+
112
+ ## 使用示例
113
+
114
+ ### 图层查找与控制
115
+
116
+ ```typescript
117
+ const tools = map.getTools();
118
+
119
+ // 1. 获取图层
120
+ const layers = tools.getLayerByLayerName('my-layer');
121
+ if (layers.length > 0) {
122
+ console.log('找到图层:', layers[0]);
123
+ }
124
+
125
+ // 2. 移除图层
126
+ tools.removeLayer('temp-layer');
127
+
128
+ // 3. 设置可见性
129
+ tools.setLayerVisible('background-layer', false);
130
+ ```
131
+
132
+ ### 视图定位与缩放
133
+
134
+ ```typescript
135
+ // 定位到指定坐标
136
+ tools.locationAction(120.123, 30.456, 15, 2000);
137
+
138
+ // 缩放以包含指定图层的所有要素
139
+ tools.fitToLayers('target-layer', {
140
+ padding: [50, 50, 50, 50], // 上右下左边距
141
+ duration: 1000
142
+ });
143
+
144
+ // 缩放以包含 GeoJSON 数据范围
145
+ tools.fitByData(geoJsonData, {
146
+ maxZoom: 18
147
+ });
148
+ ```
149
+
150
+ ### 地图裁剪
151
+
152
+ ```typescript
153
+ // 创建底图图层
154
+ const baseLayer = new TileLayer({ ... });
155
+
156
+ // 定义裁剪区域(例如一个多边形)
157
+ const clipPolygon = {
158
+ type: 'FeatureCollection',
159
+ features: [{
160
+ type: 'Feature',
161
+ geometry: {
162
+ type: 'Polygon',
163
+ coordinates: [[...]]
164
+ }
165
+ }]
166
+ };
167
+
168
+ // 应用裁剪
169
+ // 注意:这会修改 baseLayer 的渲染行为,使其只在 clipPolygon 范围内显示
170
+ MapTools.setMapClip(baseLayer, clipPolygon);
171
+ map.addLayer(baseLayer);
172
+ ```
@@ -1,47 +1,87 @@
1
- # MeasureHandler 测量工具类
2
-
3
- `MeasureHandler` 提供在地图上进行距离和面积测量的功能。
4
-
5
- ## 方法
6
-
7
- - **start(type: 'LineString' | 'Polygon')**: 开始测量。
8
- - `'LineString'`: 测量距离(单位:m/km)。
9
- - `'Polygon'`: 测量面积(单位:m²/km²)。
10
- - **end()**: 结束当前的绘制测量操作。
11
- - **clean()**: 清除所有测量结果和绘制的图形。
12
- - **destory()**: 销毁测量工具,释放资源。
13
-
14
- ## 交互说明
15
-
16
- - 单击开始绘制。
17
- - 双击结束绘制。
18
- - 移动鼠标会显示实时测量提示。
19
-
20
- ## 使用示例
21
-
22
- ```typescript
23
- import { MeasureHandler } from 'my-openlayer';
24
-
25
- // 实例化测量工具(需要传入原生 ol.Map 对象)
26
- const measure = new MeasureHandler(map.map);
27
-
28
- // 1. 开始测距
29
- document.getElementById('measure-dist-btn').onclick = () => {
30
- measure.start('LineString');
31
- };
32
-
33
- // 2. 开始测面
34
- document.getElementById('measure-area-btn').onclick = () => {
35
- measure.start('Polygon');
36
- };
37
-
38
- // 3. 结束测量(停止绘制,保留图形)
39
- document.getElementById('end-btn').onclick = () => {
40
- measure.end();
41
- };
42
-
43
- // 4. 清除结果(移除图形和提示)
44
- document.getElementById('clear-btn').onclick = () => {
45
- measure.clean();
46
- };
47
- ```
1
+ # MeasureHandler
2
+
3
+ `MeasureHandler` 类提供地图上的距离和面积测量功能。
4
+
5
+ ## 构造函数
6
+
7
+ ```typescript
8
+ constructor(map: Map)
9
+ ```
10
+
11
+ - **map**: OpenLayers 地图实例。
12
+
13
+ ## 类型定义
14
+
15
+ ### MeasureHandlerType
16
+
17
+ ```typescript
18
+ type MeasureHandlerType = 'LineString' | 'Polygon';
19
+ ```
20
+
21
+ ## 方法
22
+
23
+ ### start
24
+
25
+ 开始测量。
26
+
27
+ ```typescript
28
+ start(type: MeasureHandlerType): void
29
+ ```
30
+
31
+ - **type**: 测量类型,`'LineString'` (测距) 或 `'Polygon'` (测面)。
32
+ - **说明**: 调用此方法后,鼠标在地图上点击开始绘制,双击结束绘制。绘制过程中会显示测量结果的 tooltip。
33
+
34
+ ### end
35
+
36
+ 结束测量绘制交互,但保留测量结果。
37
+
38
+ ```typescript
39
+ end(): void
40
+ ```
41
+
42
+ ### clean
43
+
44
+ 清除所有测量结果和交互。
45
+
46
+ ```typescript
47
+ clean(): void
48
+ ```
49
+
50
+ - **说明**: 移除地图上的所有测量绘制、结果标签和 tooltip。
51
+
52
+ ### destroy
53
+
54
+ 销毁实例。
55
+
56
+ ```typescript
57
+ destory(): void
58
+ ```
59
+
60
+ - **说明**: 彻底清理资源,同 `clean`。
61
+
62
+ ## 使用示例
63
+
64
+ ### 测距
65
+
66
+ ```typescript
67
+ import { MeasureHandler } from 'my-openlayers';
68
+
69
+ const measureTool = new MeasureHandler(map);
70
+
71
+ // 开始测距
72
+ measureTool.start('LineString');
73
+ ```
74
+
75
+ ### 测面
76
+
77
+ ```typescript
78
+ // 开始测面
79
+ measureTool.start('Polygon');
80
+ ```
81
+
82
+ ### 清除测量
83
+
84
+ ```typescript
85
+ // 清除所有测量结果
86
+ measureTool.clean();
87
+ ```
package/docs/MyOl.md CHANGED
@@ -1,62 +1,247 @@
1
- # MyOl 核心类
2
-
3
- `MyOl` 是地图组件库的入口类,负责初始化地图实例并提供对各个功能模块的访问入口。
4
-
5
- ## 构造函数
6
-
7
- ```typescript
8
- new MyOl(id: string | HTMLElement, options?: MapInitType)
9
- ```
10
-
11
- - **id**: 地图容器的 ID 或 DOM 元素。
12
- - **options**: 地图初始化配置项。
13
-
14
- ## 方法
15
-
16
- ### 模块获取
17
-
18
- - **getPoint()**: 获取点要素操作实例 `Point`。
19
- - **getLine()**: 获取线要素操作实例 `Line`。
20
- - **getPolygon()**: 获取面要素操作实例 `Polygon`。
21
- - **getMapBaseLayers()**: 获取底图管理实例 `MapBaseLayers`。
22
- - **getTools()**: 获取地图工具实例 `MapTools`。
23
- - **getSelectHandler()**: 获取要素选择实例 `SelectHandler`。
24
- - **getEventManager()**: 获取事件管理实例 `EventManager`。
25
- - **getErrorHandler()**: 获取错误处理实例 `ErrorHandler`。
26
- - **getConfigManager()**: 获取配置管理实例 `ConfigManager`。
27
-
28
- ### 地图操作
29
-
30
- - **locationAction(longitude: number, latitude: number, zoom?: number, duration?: number)**: 地图定位到指定坐标。
31
- - **resetPosition(duration?: number)**: 重置地图位置到初始中心点。
32
- - **destroy()**: 销毁地图实例及相关资源。
33
-
34
- ### 静态方法
35
-
36
- - **createView(options: MapInitType)**: 创建地图视图。
37
-
38
- ## 使用示例
39
-
40
- ```typescript
41
- import MyOl, { MapInitType } from 'my-openlayer';
42
-
43
- // 1. 定义配置
44
- const options: MapInitType = {
45
- center: [119.81, 29.969],
46
- zoom: 10,
47
- minZoom: 3,
48
- maxZoom: 18,
49
- token: '您的天地图Token', // 可选,用于加载天地图
50
- annotation: true // 是否显示注记
51
- };
52
-
53
- // 2. 初始化地图
54
- const map = new MyOl('map-container', options);
55
-
56
- // 3. 获取功能模块
57
- const pointModule = map.getPoint();
58
- const lineModule = map.getLine();
59
-
60
- // 4. 地图操作
61
- map.locationAction(120.15, 30.28, 12); // 定位到杭州
62
- ```
1
+ # MyOl
2
+
3
+ `MyOl` 是地图的核心类,作为整个库的入口点,负责地图的初始化、配置管理、模块加载以及基础的地图操作(如定位、重置)。它采用了模块化设计,按需加载各个功能模块(如点、线、面要素管理)。
4
+
5
+ ## 导入
6
+
7
+ ```typescript
8
+ import { MyOl } from 'my-openlayer';
9
+ // 或者
10
+ import MyOl from 'my-openlayer';
11
+ ```
12
+
13
+ ## 构造函数
14
+
15
+ ```typescript
16
+ constructor(id: string | HTMLElement, options?: Partial<MapInitType>)
17
+ ```
18
+
19
+ 初始化一个新的地图实例。
20
+
21
+ ### 参数说明
22
+
23
+ | 参数名 | 类型 | 必填 | 默认值 | 描述 |
24
+ | :--- | :--- | :--- | :--- | :--- |
25
+ | `id` | `string` \| `HTMLElement` | 是 | - | 地图容器的 DOM ID 字符串或 HTMLElement 对象。 |
26
+ | `options` | `Partial<MapInitType>` | 否 | `{}` | 地图初始化配置选项,详见下表。 |
27
+
28
+ ### MapInitType 配置选项
29
+
30
+ | 属性名 | 类型 | 描述 |
31
+ | :--- | :--- | :--- |
32
+ | `center` | `number[]` | 地图初始中心点坐标 `[经度, 纬度]`,默认为 `[0, 0]`。 |
33
+ | `zoom` | `number` | 地图初始缩放级别,默认为 `2`。 |
34
+ | `minZoom` | `number` | 最小缩放级别。 |
35
+ | `maxZoom` | `number` | 最大缩放级别。 |
36
+ | `token` | `string` | 天地图 API Token,用于加载天地图底图。 |
37
+ | `annotation` | `boolean` | 是否显示注记图层(如地名标注),默认为 `false`。 |
38
+ | `layers` | `LayerItem[]` | 自定义初始图层数组。如果设置了此项,内置底图管理可能受到影响。 |
39
+ | `mapClipData` | `MapJSONData` | 地图裁剪数据(GeoJSON 格式),用于仅显示特定区域。 |
40
+ | `enableLog` | `boolean` | 是否启用内部日志输出,默认为 `false`。 |
41
+ | `logLevel` | `'debug' \| 'info' \| 'warn' \| 'error'` | 日志级别,默认为 `'error'`。 |
42
+ | `projection` | `object` | 自定义投影坐标系配置。 |
43
+ | `projection.code` | `string` | 投影代码,如 `'EPSG:4549'`。 |
44
+ | `projection.def` | `string` | proj4 定义字符串。 |
45
+ | `projection.extent` | `number[]` | 投影范围。 |
46
+
47
+ ## 静态方法
48
+
49
+ ### createView
50
+
51
+ 创建 OpenLayers 的 `View` 实例。
52
+
53
+ ```typescript
54
+ static createView(options: MapInitType): View
55
+ ```
56
+
57
+ | 参数名 | 类型 | 描述 |
58
+ | :--- | :--- | :--- |
59
+ | `options` | `MapInitType` | 地图配置选项,主要使用其中的 `center`, `zoom`, `projection` 等属性。 |
60
+
61
+ ## 实例方法
62
+
63
+ ### 模块获取
64
+
65
+ `MyOl` 提供了懒加载的模块获取方法,只有在首次调用时才会初始化对应模块。
66
+
67
+ #### getPoint
68
+
69
+ 获取点要素操作模块。
70
+
71
+ ```typescript
72
+ getPoint(): Point
73
+ ```
74
+
75
+ **返回值**: `Point` 实例,用于添加、删除、管理点要素。
76
+
77
+ #### getLine
78
+
79
+ 获取线要素操作模块。
80
+
81
+ ```typescript
82
+ getLine(): Line
83
+ ```
84
+
85
+ **返回值**: `Line` 实例,用于绘制线条。
86
+
87
+ #### getPolygon
88
+
89
+ 获取面要素操作模块。
90
+
91
+ ```typescript
92
+ getPolygon(): Polygon
93
+ ```
94
+
95
+ **返回值**: `Polygon` 实例,用于绘制多边形。
96
+
97
+ #### getMapBaseLayers
98
+
99
+ 获取底图管理模块。
100
+
101
+ ```typescript
102
+ getMapBaseLayers(): MapBaseLayers
103
+ ```
104
+
105
+ **返回值**: `MapBaseLayers` 实例,用于切换底图类型(矢量、影像、地形)。
106
+
107
+ #### getTools
108
+
109
+ 获取地图工具模块。
110
+
111
+ ```typescript
112
+ getTools(): MapTools
113
+ ```
114
+
115
+ **返回值**: `MapTools` 实例,包含地图截图、裁剪等工具。
116
+
117
+ #### getSelectHandler
118
+
119
+ 获取要素选择处理器模块。
120
+
121
+ ```typescript
122
+ getSelectHandler(): SelectHandler
123
+ ```
124
+
125
+ **返回值**: `SelectHandler` 实例,用于处理地图要素的点击、悬停选择交互。
126
+
127
+ ### 地图操作
128
+
129
+ #### locationAction
130
+
131
+ 定位到指定坐标,支持动画过渡。
132
+
133
+ ```typescript
134
+ locationAction(longitude: number, latitude: number, zoom: number = 20, duration: number = 3000): void
135
+ ```
136
+
137
+ | 参数名 | 类型 | 默认值 | 描述 |
138
+ | :--- | :--- | :--- | :--- |
139
+ | `longitude` | `number` | - | 目标经度。 |
140
+ | `latitude` | `number` | - | 目标纬度。 |
141
+ | `zoom` | `number` | `20` | 目标缩放级别。 |
142
+ | `duration` | `number` | `3000` | 动画持续时间(毫秒)。 |
143
+
144
+ #### resetPosition
145
+
146
+ 重置地图位置到初始化时设置的中心点。
147
+
148
+ ```typescript
149
+ resetPosition(duration: number = 3000): void
150
+ ```
151
+
152
+ | 参数名 | 类型 | 默认值 | 描述 |
153
+ | :--- | :--- | :--- | :--- |
154
+ | `duration` | `number` | `3000` | 动画持续时间(毫秒)。 |
155
+
156
+ ### 管理器访问
157
+
158
+ #### getEventManager
159
+
160
+ 获取事件管理器,用于监听地图事件。
161
+
162
+ ```typescript
163
+ getEventManager(): EventManager
164
+ ```
165
+
166
+ #### getErrorHandler
167
+
168
+ 获取错误处理器,用于自定义错误处理逻辑。
169
+
170
+ ```typescript
171
+ getErrorHandler(): ErrorHandler
172
+ ```
173
+
174
+ #### getConfigManager
175
+
176
+ 获取配置管理器。
177
+
178
+ ```typescript
179
+ getConfigManager(): ConfigManager
180
+ ```
181
+
182
+ #### getMapOptions
183
+
184
+ 获取当前地图的只读配置副本。
185
+
186
+ ```typescript
187
+ getMapOptions(): Readonly<MapInitType>
188
+ ```
189
+
190
+ ### 销毁
191
+
192
+ #### destroy
193
+
194
+ 销毁地图实例,清理所有事件监听和资源。
195
+
196
+ ```typescript
197
+ destroy(): void
198
+ ```
199
+
200
+ ## 使用示例
201
+
202
+ ### 完整初始化
203
+
204
+ ```typescript
205
+ import { MyOl } from 'my-openlayer';
206
+
207
+ // 定义配置
208
+ const options = {
209
+ // 杭州市中心
210
+ center: [120.15507, 30.274085],
211
+ zoom: 12,
212
+ minZoom: 5,
213
+ maxZoom: 18,
214
+
215
+ // 天地图 Token
216
+ token: 'YOUR_TIANDITU_TOKEN',
217
+
218
+ // 开启注记
219
+ annotation: true,
220
+
221
+ // 开启调试日志
222
+ enableLog: true,
223
+ logLevel: 'debug'
224
+ };
225
+
226
+ // 初始化地图
227
+ const map = new MyOl('map-container', options);
228
+
229
+ // 监听加载完成
230
+ map.getEventManager().on('rendercomplete', () => {
231
+ console.log('Map loaded!');
232
+ });
233
+ ```
234
+
235
+ ### 使用自定义投影
236
+
237
+ ```typescript
238
+ import { MyOl } from 'my-openlayer';
239
+
240
+ const map = new MyOl('map', {
241
+ projection: {
242
+ code: 'EPSG:4549', // CGCS2000 3度带
243
+ def: '+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs',
244
+ extent: [...] // 可选
245
+ }
246
+ });
247
+ ```