@xingm/vmap-cesium-toolbar 0.0.1-beta.1 → 0.0.1-beta.3

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/README.md CHANGED
@@ -1,404 +1,115 @@
1
- # CesiumMapToolbar API 文档
1
+ # @xingm/vmap-cesium-toolbar
2
2
 
3
- ## 概述
3
+ 一个功能强大的 Cesium 地图工具栏组件,提供搜索、测量、绘制、2D/3D切换、图层管理等功能。
4
4
 
5
- 本文档详细介绍了 `vmap-cesium-tool` 项目中三个核心模块的API接口和使用方法。
5
+ ## 特性
6
6
 
7
- ## 目录
7
+ - 🗺️ **完整的地图工具栏** - 搜索、测量、绘制、图层切换等功能
8
+ - 📏 **精确测量工具** - 支持距离、面积、高度测量
9
+ - ✏️ **绘制功能** - 支持点、线、面绘制和编辑
10
+ - 🔄 **2D/3D切换** - 无缝切换2D和3D视图模式
11
+ - 🎨 **可定制样式** - 支持自定义按钮样式和布局
12
+ - 📱 **响应式设计** - 适配不同屏幕尺寸
13
+ - 🚀 **TypeScript支持** - 完整的类型定义
14
+ - ⚡ **Vue 3兼容** - 原生支持Vue 3项目
8
15
 
9
- - [CesiumMapHelper.ts](#cesiummaphelperts)
10
- - [CesiumMapLoader.ts](#cesiummaploaderts)
11
- - [CesiumMapToolbar.ts](#cesiummaptoolbarts)
16
+ ## 安装
12
17
 
13
- ---
14
-
15
- ## CesiumMapHelper.ts
16
-
17
- ### 概述
18
-
19
- Cesium绘图辅助工具类,提供绘制点、线、多边形、矩形、视锥体等功能,支持编辑和删除操作。
20
-
21
- ### 类定义
22
-
23
- ```typescript
24
- class DrawHelper
25
- ```
26
-
27
- ### 构造函数
28
-
29
- ```typescript
30
- constructor(viewer: Cesium.Viewer)
31
- ```
32
-
33
- **参数:**
34
-
35
- - `viewer` (Cesium.Viewer): Cesium Viewer 实例
36
-
37
- **示例:**
38
-
39
- ```typescript
40
- import DrawHelper from './libs/CesiumMapHelper';
41
-
42
- const drawHelper = new DrawHelper(viewer);
18
+ ```bash
19
+ npm install @xingm/vmap-cesium-toolbar cesium
43
20
  ```
44
21
 
45
- ### 主要方法
46
-
47
- #### 1. 绘制线条
48
-
49
- ```typescript
50
- startDrawingLine(): void
51
- ```
52
-
53
- 开始绘制线条模式。支持多点折线绘制。
54
-
55
- **使用示例:**
56
-
57
- ```typescript
58
- drawHelper.startDrawingLine();
59
- ```
60
-
61
- #### 2. 绘制多边形
62
-
63
- ```typescript
64
- startDrawingPolygon(): void
65
- ```
66
-
67
- 开始绘制多边形模式。绘制带淡绿色填充的多边形区域。
68
-
69
- **使用示例:**
70
-
71
- ```typescript
72
- drawHelper.startDrawingPolygon();
73
- ```
74
-
75
- #### 3. 绘制矩形
76
-
77
- ```typescript
78
- startDrawingRectangle(): void
79
- ```
80
-
81
- 开始绘制矩形模式。
82
-
83
- **使用示例:**
84
-
85
- ```typescript
86
- drawHelper.startDrawingRectangle();
87
- ```
88
-
89
- #### 4. 绘制视锥体
90
-
91
- ```typescript
92
- drawFrustum(options?: FrustumOptions): void
93
- ```
94
-
95
- **参数:**
96
-
97
- - `options` (FrustumOptions, 可选): 视锥体配置选项
98
-
99
- **FrustumOptions 接口:**
22
+ ## 快速开始
100
23
 
101
- ```typescript
102
- interface FrustumOptions {
103
- position?: Cartesian3; // 视锥体位置
104
- orientation?: Quaternion; // 视锥体方向
105
- fov?: number; // 视野角度 (1-179度)
106
- aspectRatio?: number; // 宽高比
107
- near?: number; // 近平面距离
108
- far?: number; // 远平面距离
109
- fillColor?: Color; // 填充颜色
110
- outlineColor?: Color; // 轮廓颜色
111
- onRightClick?: (position: Cartesian3) => void; // 右键点击回调
112
- }
113
- ```
24
+ ### 基本使用
114
25
 
115
- **使用示例:**
26
+ ```javascript
27
+ import { CesiumMapToolbar, initCesium } from '@xingm/vmap-cesium-toolbar';
28
+ import '@xingm/vmap-cesium-toolbar/style';
116
29
 
117
- ```typescript
118
- drawHelper.drawFrustum({
119
- fov: 60,
120
- aspectRatio: 1.5,
121
- near: 10,
122
- far: 2000,
123
- fillColor: Cesium.Color.GREEN.withAlpha(0.3),
124
- outlineColor: Cesium.Color.WHITE,
125
- onRightClick: (pos) => {
126
- console.log('视锥体被右键点击:', pos);
127
- }
30
+ // 初始化Cesium
31
+ const viewer = initCesium('cesiumContainer', {
32
+ terrainProvider: Cesium.createWorldTerrain()
128
33
  });
129
- ```
130
-
131
- #### 5. 结束绘制
132
-
133
- ```typescript
134
- endDrawing(): void
135
- ```
136
-
137
- 结束当前绘制操作。
138
-
139
- #### 6. 清除所有
140
-
141
- ```typescript
142
- clearAll(): void
143
- ```
144
-
145
- 清除所有已绘制的实体。
146
-
147
- #### 7. 清除视锥体
148
-
149
- ```typescript
150
- clearFrustum(): void
151
- ```
152
-
153
- 清除所有视锥体相关图形。
154
-
155
- #### 8. 删除指定实体
156
-
157
- ```typescript
158
- removeEntity(entity: Cesium.Entity): void
159
- ```
160
-
161
- **参数:**
162
34
 
163
- - `entity` (Cesium.Entity): 要删除的实体
164
-
165
- #### 9. 获取已完成实体
166
-
167
- ```typescript
168
- getFinishedEntities(): Cesium.Entity[]
169
- ```
170
-
171
- 返回所有已完成的绘制实体数组。
172
-
173
- ### 事件回调
174
-
175
- #### 设置开始绘制回调
176
-
177
- ```typescript
178
- onDrawStart(callback: () => void): void
179
- ```
180
-
181
- #### 设置结束绘制回调
182
-
183
- ```typescript
184
- onDrawEnd(callback: (entity: Cesium.Entity | null) => void): void
35
+ // 创建工具栏
36
+ const toolbar = new CesiumMapToolbar(viewer, document.getElementById('toolbar'));
185
37
  ```
186
38
 
187
- #### 设置实体移除回调
39
+ ### Vue 3 项目中使用
188
40
 
189
- ```typescript
190
- onEntityRemoved(callback: (entity: Cesium.Entity) => void): void
191
- ```
41
+ ```vue
42
+ <template>
43
+ <div id="cesiumContainer"></div>
44
+ <div id="toolbar"></div>
45
+ </template>
192
46
 
193
- **使用示例:**
47
+ <script setup>
48
+ import { onMounted } from 'vue';
49
+ import { CesiumMapToolbar, initCesium } from '@xingm/vmap-cesium-toolbar';
50
+ import '@xingm/vmap-cesium-toolbar/style';
194
51
 
195
- ```typescript
196
- drawHelper.onDrawStart(() => {
197
- console.log('开始绘制');
198
- });
52
+ let viewer;
53
+ let toolbar;
199
54
 
200
- drawHelper.onDrawEnd((entity) => {
201
- if (entity) {
202
- console.log('绘制完成:', entity);
203
- } else {
204
- console.log('绘制被取消');
205
- }
206
- });
55
+ onMounted(() => {
56
+ // 初始化Cesium
57
+ viewer = initCesium('cesiumContainer', {
58
+ terrainProvider: Cesium.createWorldTerrain()
59
+ });
207
60
 
208
- drawHelper.onEntityRemoved((entity) => {
209
- console.log('实体被移除:', entity);
61
+ // 创建工具栏
62
+ toolbar = new CesiumMapToolbar(viewer, document.getElementById('toolbar'));
210
63
  });
64
+ </script>
211
65
  ```
212
66
 
213
- ### 销毁资源
214
-
215
- ```typescript
216
- destroy(): void
217
- ```
218
-
219
- 销毁工具实例,清理所有事件监听器和资源。
220
-
221
- ---
67
+ ## 主要组件
222
68
 
223
- ## CesiumMapLoader.ts
69
+ ### CesiumMapToolbar
224
70
 
225
- ### 概述
226
-
227
- Cesium地图加载器,提供地图初始化、地形配置、图层管理等功能。
228
-
229
- ### 主要函数
230
-
231
- #### 1. 初始化Cesium地图
232
-
233
- ```typescript
234
- async function initCesium(
235
- containerId: string,
236
- options: InitOptions,
237
- mapCenter?: MapCenter
238
- ): Promise<{ viewer: CesiumViewer; initialCenter: MapCenter }>
239
- ```
240
-
241
- **参数:**
242
-
243
- - `containerId` (string): 地图容器DOM元素ID
244
- - `options` (InitOptions): 地图初始化配置
245
- - `mapCenter` (MapCenter, 可选): 地图中心点配置
246
-
247
- **InitOptions 接口:**
248
-
249
- ```typescript
250
- interface InitOptions {
251
- terrain?: Terrain; // 地形配置
252
- terrainProvider?: TerrainProvider; // 地形提供者
253
- mapType?: string; // 地图类型
254
- imageryProvider?: UrlTemplateImageryProvider; // 自定义影像图层
255
- imageryLayers?: ImageryLayerCollection; // 自定义影像图层集合
256
- terrainShadows?: ShadowMode; // 地形阴影
257
- contextOptions?: ContextOptions; // 上下文选项
258
- scene3DOnly?: boolean; // 是否只使用3D场景
259
- selectionIndicator?: boolean; // 选择指示器
260
- navigationHelpButton?: boolean; // 导航帮助按钮
261
- fullscreenButton?: boolean; // 全屏按钮
262
- geocoder?: boolean; // 地理编码器
263
- homeButton?: boolean; // 主页按钮
264
- infoBox?: boolean; // 信息框
265
- sceneModePicker?: boolean; // 场景模式选择器
266
- timeline?: boolean; // 时间轴
267
- animation?: boolean; // 动画
268
- baseLayerPicker?: boolean; // 基础图层选择器
269
- navigationInstructionsInitiallyVisible?: boolean; // 导航指令初始可见
270
- clock?: Clock; // 时钟
271
- sceneMode?: SceneMode; // 场景模式
272
- screenSpaceEventHandler?: ScreenSpaceEventHandler; // 屏幕空间事件处理器
273
- useDefaultRenderLoop?: boolean; // 使用默认渲染循环
274
- targetFrameRate?: number; // 目标帧率
275
- showRenderLoopErrors?: boolean; // 显示渲染循环错误
276
- automaticallyTrackDataSourceClocks?: boolean; // 自动跟踪数据源时钟
277
- dataSources?: DataSourceCollection; // 数据源集合
278
- creationTime?: number; // 创建时间
279
- useBrowserRecommendedResolution?: boolean; // 使用浏览器推荐分辨率
280
- resolutionScale?: number; // 分辨率缩放
281
- orderIndependentTransparency?: boolean; // 无序透明度
282
- shadows?: boolean; // 阴影
283
- terrainExaggeration?: number; // 地形夸张系数
284
- maximumScreenSpaceError?: number; // 最大屏幕空间误差
285
- maximumNumberOfLoadedTiles?: number; // 最大加载瓦片数量
286
- }
287
- ```
288
-
289
- **MapCenter 接口:**
290
-
291
- ```typescript
292
- interface MapCenter {
293
- latitude: number; // 纬度
294
- longitude: number; // 经度
295
- height: number; // 高度
296
- pitch?: number; // 俯仰角
297
- heading?: number; // 航向角
298
- }
299
- ```
300
-
301
- **返回值:**
302
-
303
- - `viewer`: Cesium Viewer 实例
304
- - `initialCenter`: 初始中心点配置
305
-
306
- **使用示例:**
307
-
308
- ```typescript
309
- import { initCesium } from './libs/CesiumMapLoader';
310
-
311
- const { viewer, initialCenter } = await initCesium("cesiumContainer", {
312
- terrain: Cesium.Terrain.fromWorldTerrain(),
313
- animation: false,
314
- baseLayerPicker: false,
315
- fullscreenButton: false,
316
- geocoder: false,
317
- homeButton: false,
318
- infoBox: false,
319
- sceneModePicker: false,
320
- selectionIndicator: false,
321
- timeline: false,
322
- navigationHelpButton: false,
323
- scene3DOnly: false,
324
- }, {
325
- longitude: 120.2052342,
326
- latitude: 30.2489634,
327
- height: 1000,
328
- pitch: -60,
329
- heading: 0
330
- });
331
- ```
332
-
333
- #### 2. 创建天地图
71
+ 主要工具栏组件,提供完整的地图操作功能。
334
72
 
335
73
  ```typescript
336
- function createTianDiMap(): TianDiMap
74
+ const toolbar = new CesiumMapToolbar(
75
+ viewer, // Cesium Viewer实例
76
+ container, // 工具栏容器元素
77
+ config, // 配置选项(可选)
78
+ callbacks, // 回调函数(可选)
79
+ initialCenter // 初始中心点(可选)
80
+ );
337
81
  ```
338
82
 
339
- 创建天地图配置对象。
83
+ ### CesiumMapHelper
340
84
 
341
- **返回值:**
85
+ 地图辅助工具类,提供绘制和测量功能。
342
86
 
343
87
  ```typescript
344
- interface TianDiMap {
345
- url: string; // 瓦片URL模板
346
- subdomains: string[]; // 子域名数组
347
- minimumLevel: number; // 最小缩放级别
348
- maximumLevel: number; // 最大缩放级别
349
- credit: string; // 版权信息
350
- }
351
- ```
88
+ import { CesiumMapHelper } from '@xingm/vmap-cesium-toolbar';
352
89
 
353
- #### 3. 创建高德地图
354
-
355
- ```typescript
356
- function createGaoDeMap(): UrlTemplateImageryProvider
90
+ const helper = new CesiumMapHelper(viewer);
91
+ helper.startDrawing('line'); // 开始绘制线条
92
+ helper.startMeasurement('distance'); // 开始距离测量
357
93
  ```
358
94
 
359
- 创建高德地图影像提供者。
360
-
361
- ---
95
+ ### CesiumMapLoader
362
96
 
363
- ## CesiumMapToolbar.ts
364
-
365
- ### 概述
366
-
367
- Cesium地图工具栏类,提供搜索、测量、2D/3D切换、图层切换、定位、缩放、全屏等功能。
368
-
369
- ### 类定义
97
+ Cesium初始化工具,简化Cesium的配置和初始化。
370
98
 
371
99
  ```typescript
372
- class CesiumMapToolbar
373
- ```
374
-
375
- ### 构造函数
100
+ import { CesiumMapLoader } from '@xingm/vmap-cesium-toolbar';
376
101
 
377
- ```typescript
378
- constructor(
379
- viewer: Viewer,
380
- container: HTMLElement,
381
- config?: ToolbarConfig,
382
- callbacks?: {
383
- search?: SearchCallback;
384
- measurement?: MeasurementCallback;
385
- zoom?: ZoomCallback;
386
- },
387
- initialCenter?: { longitude: number; latitude: number; height: number }
388
- )
102
+ const viewer = CesiumMapLoader.init('container', {
103
+ terrainProvider: Cesium.createWorldTerrain(),
104
+ imageryProvider: new Cesium.OpenStreetMapImageryProvider({
105
+ url: 'https://a.tile.openstreetmap.org/'
106
+ })
107
+ });
389
108
  ```
390
109
 
391
- **参数:**
392
-
393
- - `viewer` (Viewer): Cesium Viewer 实例
394
- - `container` (HTMLElement): 地图容器元素
395
- - `config` (ToolbarConfig, 可选): 工具栏配置
396
- - `callbacks` (对象, 可选): 回调函数配置
397
- - `initialCenter` (对象, 可选): 初始中心点
398
-
399
- ### 配置接口
110
+ ## 配置选项
400
111
 
401
- #### ToolbarConfig
112
+ ### 工具栏配置
402
113
 
403
114
  ```typescript
404
115
  interface ToolbarConfig {
@@ -408,308 +119,151 @@ interface ToolbarConfig {
408
119
  backgroundColor?: string; // 背景色
409
120
  borderColor?: string; // 边框色
410
121
  borderRadius?: number; // 圆角半径
411
- borderWidth?: number; // 边框宽度
412
- boxShadow?: string; // 阴影
413
- zIndex?: number; // 层级
414
- }
415
- ```
416
-
417
- #### SearchCallback
418
-
419
- ```typescript
420
- interface SearchCallback {
421
- onSearch?: (query: string) => Promise<SearchResult[]>;
422
- onSelect?: (result: SearchResult) => void;
122
+ showSearch?: boolean; // 显示搜索框
123
+ showMeasurement?: boolean; // 显示测量工具
124
+ showDrawing?: boolean; // 显示绘制工具
125
+ showLayerControl?: boolean; // 显示图层控制
126
+ show2D3DToggle?: boolean; // 显示2D/3D切换
423
127
  }
424
128
  ```
425
129
 
426
- #### MeasurementCallback
130
+ ### 回调函数
427
131
 
428
132
  ```typescript
429
- interface MeasurementCallback {
430
- onDistanceComplete?: (positions: Cartesian3[], distance: number) => void;
431
- onAreaComplete?: (positions: Cartesian3[], area: number) => void;
432
- onClear?: () => void;
133
+ interface ToolbarCallbacks {
134
+ search?: (query: string) => void;
135
+ measurement?: (type: string, result: any) => void;
136
+ drawing?: (type: string, entity: Entity) => void;
137
+ zoom?: (level: number) => void;
433
138
  }
434
139
  ```
435
140
 
436
- #### ZoomCallback
141
+ ## 功能说明
437
142
 
438
- ```typescript
439
- interface ZoomCallback {
440
- onZoomIn?: (beforeLevel: number, afterLevel: number) => void;
441
- onZoomOut?: (beforeLevel: number, afterLevel: number) => void;
442
- }
443
- ```
143
+ ### 搜索功能
444
144
 
445
- #### SearchResult
145
+ 支持地名搜索和坐标定位:
446
146
 
447
- ```typescript
448
- interface SearchResult {
449
- name: string; // 地点名称
450
- address: string; // 详细地址
451
- longitude: number; // 经度
452
- latitude: number; // 纬度
453
- height?: number; // 高度
454
- }
147
+ ```javascript
148
+ // 搜索回调
149
+ const callbacks = {
150
+ search: (query) => {
151
+ console.log('搜索:', query);
152
+ // 实现搜索逻辑
153
+ }
154
+ };
455
155
  ```
456
156
 
457
- ### 主要方法
157
+ ### 测量工具
458
158
 
459
- #### 1. 设置初始中心点
159
+ 支持多种测量类型:
460
160
 
461
- ```typescript
462
- setInitialCenter(center: { longitude: number; latitude: number; height: number }): void
463
- ```
161
+ - **距离测量** - 测量两点间距离
162
+ - **面积测量** - 测量多边形面积
163
+ - **高度测量** - 测量点的高度信息
464
164
 
465
- #### 2. 获取初始中心点
466
-
467
- ```typescript
468
- getInitialCenter(): { longitude: number; latitude: number; height: number } | undefined
165
+ ```javascript
166
+ // 测量回调
167
+ const callbacks = {
168
+ measurement: (type, result) => {
169
+ console.log('测量结果:', type, result);
170
+ }
171
+ };
469
172
  ```
470
173
 
471
- #### 3. 复位到初始位置
174
+ ### 绘制功能
472
175
 
473
- ```typescript
474
- resetToInitialLocation(): void
475
- ```
176
+ 支持多种绘制类型:
476
177
 
477
- #### 4. 销毁工具栏
178
+ - **点绘制** - 在地图上标记点
179
+ - **线绘制** - 绘制线条
180
+ - **面绘制** - 绘制多边形区域
478
181
 
479
- ```typescript
480
- destroy(): void
182
+ ```javascript
183
+ // 绘制回调
184
+ const callbacks = {
185
+ drawing: (type, entity) => {
186
+ console.log('绘制完成:', type, entity);
187
+ }
188
+ };
481
189
  ```
482
190
 
483
- ### 工具栏按钮功能
484
-
485
- 工具栏包含以下8个按钮:
486
-
487
- 1. **🔍 搜索按钮**
488
- - 鼠标悬停显示搜索框
489
- - 支持地址搜索
490
- - 点击搜索结果自动定位
191
+ ## 样式定制
491
192
 
492
- 2. **📏 测量按钮**
493
- - 悬停显示:测面积、测距、清除
494
- - 测距:支持多点折线,显示每段距离和总距离
495
- - 测面积:绘制淡绿色填充多边形,显示面积
193
+ 组件提供了完整的CSS变量支持,可以轻松定制样式:
496
194
 
497
- 3. **2D/3D 切换按钮**
498
- - 一键切换2D和3D视角
499
- - 按钮文本自动更新
500
-
501
- 4. **📚 图层切换按钮**
502
- - 悬停显示地图类型选择菜单
503
- - 支持:普通地图、三维地图、影像图、地形图
504
-
505
- 5. **🎯 定位按钮**
506
- - 复位到地图初始中心点
507
- - 平滑飞行动画
508
-
509
- 6. **🔍+ 放大按钮**
510
- - 地图放大
511
- - 支持缩放回调
512
-
513
- 7. **🔍- 缩小按钮**
514
- - 地图缩小
515
- - 支持缩放回调
516
-
517
- 8. **⛶ 全屏按钮**
518
- - 进入/退出全屏模式
519
- - 自动检测全屏状态
520
-
521
- ### 使用示例
522
-
523
- #### 基本使用
524
-
525
- ```typescript
526
- import { CesiumMapToolbar } from './libs/CesiumMapToolbar';
527
-
528
- const toolbar = new CesiumMapToolbar(
529
- viewer,
530
- container,
531
- {
532
- position: 'bottom-right',
533
- buttonSize: 45,
534
- buttonSpacing: 10,
535
- backgroundColor: 'rgba(255, 255, 255, 0.95)',
536
- borderColor: '#4285f4',
537
- borderRadius: 8,
538
- zIndex: 1000
539
- },
540
- {
541
- search: {
542
- onSearch: async (query: string) => {
543
- // 实现搜索逻辑
544
- return await searchAPI(query);
545
- },
546
- onSelect: (result) => {
547
- console.log('选择了:', result);
548
- }
549
- },
550
- measurement: {
551
- onDistanceComplete: (positions, distance) => {
552
- console.log('测距完成:', distance);
553
- },
554
- onAreaComplete: (positions, area) => {
555
- console.log('测面积完成:', area);
556
- },
557
- onClear: () => {
558
- console.log('清除测量');
559
- }
560
- },
561
- zoom: {
562
- onZoomIn: (before, after) => {
563
- console.log('放大:', before, '->', after);
564
- },
565
- onZoomOut: (before, after) => {
566
- console.log('缩小:', before, '->', after);
567
- }
568
- }
569
- },
570
- {
571
- longitude: 120.2052342,
572
- latitude: 30.2489634,
573
- height: 1000
574
- }
575
- );
195
+ ```css
196
+ :root {
197
+ --toolbar-bg-color: #ffffff;
198
+ --toolbar-border-color: #e0e0e0;
199
+ --toolbar-button-size: 40px;
200
+ --toolbar-button-spacing: 8px;
201
+ --toolbar-border-radius: 4px;
202
+ }
576
203
  ```
577
204
 
578
- #### 动态设置初始中心点
205
+ ## 示例项目
579
206
 
580
- ```typescript
581
- toolbar.setInitialCenter({
582
- longitude: 116.3974,
583
- latitude: 39.9093,
584
- height: 1000
585
- });
586
- ```
207
+ ### 基本使用示例
587
208
 
588
- #### 复位到初始位置
209
+ ```bash
210
+ # 克隆项目
211
+ git clone https://github.com/your-username/vmap-cesium-toolbar.git
212
+ cd vmap-cesium-toolbar
589
213
 
590
- ```typescript
591
- toolbar.resetToInitialLocation();
214
+ # 查看基本示例
215
+ cd examples/basic-usage
216
+ # 在浏览器中打开 index.html
592
217
  ```
593
218
 
594
- ### 地图类型配置
219
+ ### Vue 3 示例
595
220
 
596
- 工具栏内置支持以下地图类型:
221
+ ```bash
222
+ cd examples/vue3-usage
223
+ npm install
224
+ npm run dev
225
+ ```
597
226
 
598
- 1. **天地图-普通** (normal)
599
- 2. **天地图-三维** (3d)
600
- 3. **天地图-影像** (imagery) - 默认
601
- 4. **天地图-地形** (terrain)
227
+ ## API 文档
602
228
 
603
- ### 样式定制
229
+ 详细的API文档请参考:
604
230
 
605
- 可以通过CSS覆盖工具栏样式:
231
+ - [CesiumMapToolbar API](./doc/CesiumMapToolbar_API.md)
232
+ - [CesiumMapHelper API](./doc/CesiumMapHelper_API.md)
233
+ - [CesiumMapLoader API](./doc/CesiumMapLoader_API.md)
606
234
 
607
- ```css
608
- /* 自定义工具栏样式 */
609
- .cesium-map-toolbar {
610
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
611
- border: 2px solid #fff !important;
612
- }
235
+ ## 依赖要求
613
236
 
614
- .cesium-toolbar-button {
615
- background: rgba(255, 255, 255, 0.2) !important;
616
- color: #fff !important;
617
- border: 1px solid rgba(255, 255, 255, 0.3) !important;
618
- }
237
+ - **Cesium**: ^1.100.0
238
+ - **Vue**: ^3.0.0 (可选,用于Vue项目)
619
239
 
620
- .cesium-toolbar-button:hover {
621
- background: rgba(255, 255, 255, 0.3) !important;
622
- transform: scale(1.1) !important;
623
- }
624
- ```
240
+ ## 浏览器支持
625
241
 
626
- ### 注意事项
242
+ - Chrome 60+
243
+ - Firefox 55+
244
+ - Safari 12+
245
+ - Edge 79+
627
246
 
628
- 1. **搜索功能**:需要实现 `onSearch` 回调函数,可以集成真实的地理编码API
629
- 2. **地图类型**:天地图需要有效的token,请替换示例中的 `your_token`
630
- 3. **全屏功能**:需要用户手势触发,某些浏览器可能有限制
631
- 4. **测量精度**:面积计算使用球面几何,适合大范围测量
632
- 5. **内存管理**:记得在组件销毁时调用 `destroy()` 方法
247
+ ## 许可证
633
248
 
634
- ---
249
+ MIT License
635
250
 
636
- ## 完整使用示例
251
+ ## 贡献
637
252
 
638
- ```typescript
639
- import { initCesium } from './libs/CesiumMapLoader';
640
- import { CesiumMapToolbar } from './libs/CesiumMapToolbar';
641
- import DrawHelper from './libs/CesiumMapHelper';
642
-
643
- // 初始化地图
644
- const { viewer, initialCenter } = await initCesium("cesiumContainer", {
645
- terrain: Cesium.Terrain.fromWorldTerrain(),
646
- animation: false,
647
- baseLayerPicker: false,
648
- fullscreenButton: false,
649
- geocoder: false,
650
- homeButton: false,
651
- infoBox: false,
652
- sceneModePicker: false,
653
- selectionIndicator: false,
654
- timeline: false,
655
- navigationHelpButton: false,
656
- scene3DOnly: false,
657
- });
658
-
659
- // 创建绘图助手
660
- const drawHelper = new DrawHelper(viewer);
661
- drawHelper.onDrawEnd((entity) => {
662
- console.log('绘制完成:', entity);
663
- });
664
-
665
- // 创建工具栏
666
- const container = document.getElementById("cesiumContainer");
667
- const toolbar = new CesiumMapToolbar(
668
- viewer,
669
- container,
670
- {
671
- position: 'bottom-right',
672
- buttonSize: 45,
673
- backgroundColor: 'rgba(255, 255, 255, 0.95)',
674
- },
675
- {
676
- search: {
677
- onSearch: async (query) => {
678
- // 实现搜索逻辑
679
- return [];
680
- },
681
- onSelect: (result) => {
682
- console.log('定位到:', result.name);
683
- }
684
- },
685
- measurement: {
686
- onDistanceComplete: (positions, distance) => {
687
- console.log(`测距完成,总距离: ${distance.toFixed(2)} 米`);
688
- },
689
- onAreaComplete: (positions, area) => {
690
- console.log(`测面积完成,面积: ${area.toFixed(2)} 平方公里`);
691
- }
692
- }
693
- },
694
- initialCenter
695
- );
253
+ 欢迎提交 Issue 和 Pull Request!
696
254
 
697
- // 清理资源
698
- function cleanup() {
699
- toolbar.destroy();
700
- drawHelper.destroy();
701
- }
702
- ```
255
+ ## 更新日志
703
256
 
704
- ---
257
+ ### v0.0.1-beta.2
705
258
 
706
- ## 更新日志
259
+ - 新增高度测量功能
260
+ - 优化标签显示逻辑
261
+ - 修复3D模式下标签位置问题
262
+ - 改进绘制工具的用户体验
707
263
 
708
- ### v1.0.0
264
+ ### v0.0.1-beta.1
709
265
 
710
266
  - 初始版本发布
711
- - 支持完整的绘图功能(点、线、多边形、矩形、视锥体)
712
- - 支持完整的工具栏功能(搜索、测量、2D/3D切换、图层切换、定位、缩放、全屏)
713
- - 完整的回调系统和事件处理
714
- - 可配置的样式选项
715
- - 完善的错误处理和资源管理
267
+ - 基础工具栏功能
268
+ - 搜索、测量、绘制功能
269
+ - Vue 3 支持