@xingm/vmap-cesium-toolbar 0.0.6 → 0.0.7-alpha.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.
@@ -23,6 +23,7 @@ export interface MapLayersServiceConfig {
23
23
  export declare class MapLayersService {
24
24
  private static readonly PLACE_NAME_LAYER_TAG;
25
25
  private viewer;
26
+ private readonly defaultTerrainProvider;
26
27
  private toolbarElement;
27
28
  private config;
28
29
  private currentGeoWTFS;
@@ -66,18 +67,25 @@ export declare class MapLayersService {
66
67
  /**
67
68
  * 切换地图类型
68
69
  */
69
- switchMapType(mapTypeId: string): void;
70
+ switchMapType(mapTypeId: string): Promise<void>;
70
71
  /**
71
72
  * 获取当前地图类型
72
73
  */
73
74
  getCurrentMapType(): string;
74
75
  private setPlaceNameChecked;
76
+ private ensureTDTPluginForMapType;
77
+ private syncGeoWTFSWithPlugin;
75
78
  private shouldEnablePlaceName;
76
79
  private isSameProvider;
77
80
  private resolveExistingPlaceNameLayer;
78
81
  private ensurePlaceNameProvider;
79
82
  private addPlaceNameLayer;
80
83
  private removePlaceNameLayer;
84
+ private shouldUse3DForCurrentMapType;
85
+ private ensure3DSceneIfNeeded;
86
+ private applyTerrainForMapType;
87
+ private syncGeoWTFS;
88
+ private destroyGeoWTFS;
81
89
  /**
82
90
  * 关闭图层菜单
83
91
  */
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xingm/vmap-cesium-toolbar",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "A powerful Cesium map toolbar plugin with drawing, measurement, and interaction features",
5
5
  "type": "module",
6
6
  "main": "index.es.js",
package/dist/style.css CHANGED
@@ -1,162 +1,162 @@
1
- /* VMap Cesium Toolbar Plugin Styles */
2
-
3
- /* 工具栏基础样式 */
4
- .cesium-map-toolbar {
5
- position: absolute;
6
- background: rgba(255, 255, 255, 0.95);
7
- border: 1px solid #e0e0e0;
8
- border-radius: 6px;
9
- box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
10
- padding: 8px;
11
- z-index: 1000;
12
- display: flex;
13
- flex-direction: column;
14
- gap: 8px;
15
- }
16
-
17
- /* 工具栏按钮样式 */
18
- .cesium-toolbar-button {
19
- width: 40px;
20
- height: 40px;
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- background: rgba(66, 133, 244, 0.4);
25
- color: white;
26
- border: none;
27
- border-radius: 4px;
28
- cursor: pointer;
29
- font-size: 14px;
30
- font-weight: bold;
31
- transition: all 0.2s ease;
32
- user-select: none;
33
- position: relative;
34
- }
35
-
36
- .cesium-toolbar-button:hover {
37
- background: rgba(51, 103, 214, 0.9);
38
- transform: scale(1.05);
39
- }
40
-
41
- /* 搜索容器样式 */
42
- .search-container {
43
- position: absolute;
44
- background: white;
45
- border: 1px solid #e0e0e0;
46
- border-radius: 4px;
47
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
48
- padding: 8px;
49
- min-width: 200px;
50
- z-index: 1001;
51
- }
52
-
53
- .search-container input {
54
- padding: 6px 8px;
55
- border: 1px solid #ddd;
56
- border-radius: 3px;
57
- font-size: 14px;
58
- outline: none;
59
- width: 100%;
60
- box-sizing: border-box;
61
- }
62
-
63
- .search-results {
64
- margin-top: 8px;
65
- max-height: 200px;
66
- overflow-y: auto;
67
- }
68
-
69
- .search-results > div {
70
- padding: 8px;
71
- border-bottom: 1px solid #f0f0f0;
72
- cursor: pointer;
73
- transition: background-color 0.2s;
74
- }
75
-
76
- .search-results > div:hover {
77
- background-color: #f5f5f5;
78
- }
79
-
80
- /* 测量菜单样式 */
81
- .measurement-menu,
82
- .layers-menu {
83
- position: absolute;
84
- background: white;
85
- border: 1px solid #e0e0e0;
86
- border-radius: 4px;
87
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
88
- padding: 4px 0;
89
- min-width: 120px;
90
- z-index: 1001;
91
- }
92
-
93
- .layers-menu {
94
- padding: 8px;
95
- min-width: 200px;
96
- }
97
-
98
- .measurement-menu > div,
99
- .layers-menu > div {
100
- padding: 8px 12px;
101
- cursor: pointer;
102
- display: flex;
103
- align-items: center;
104
- gap: 8px;
105
- transition: background-color 0.2s;
106
- }
107
-
108
- .measurement-menu > div:hover,
109
- .layers-menu > div:hover {
110
- background-color: #f5f5f5;
111
- }
112
-
113
- /* 图层菜单项样式 */
114
- .layers-menu .map-type-item {
115
- display: flex;
116
- align-items: center;
117
- gap: 8px;
118
- padding: 6px;
119
- cursor: pointer;
120
- border-radius: 3px;
121
- transition: background-color 0.2s;
122
- }
123
-
124
- .layers-menu .map-type-item:hover {
125
- background-color: #f5f5f5;
126
- }
127
-
128
- .layers-menu .map-type-item.selected {
129
- background-color: #e3f2fd;
130
- }
131
-
132
- .layers-menu .map-type-thumbnail {
133
- width: 20px;
134
- height: 20px;
135
- border-radius: 2px;
136
- }
137
-
138
- .layers-menu .map-type-checkmark {
139
- color: #1976d2;
140
- font-weight: bold;
141
- margin-left: auto;
142
- }
143
-
144
- /* 响应式设计 */
145
- @media (max-width: 768px) {
146
- .cesium-map-toolbar {
147
- padding: 6px;
148
- gap: 6px;
149
- }
150
-
151
- .cesium-toolbar-button {
152
- width: 36px;
153
- height: 36px;
154
- font-size: 12px;
155
- }
156
-
157
- .search-container,
158
- .measurement-menu,
159
- .layers-menu {
160
- min-width: 180px;
161
- }
1
+ /* VMap Cesium Toolbar Plugin Styles */
2
+
3
+ /* 工具栏基础样式 */
4
+ .cesium-map-toolbar {
5
+ position: absolute;
6
+ background: rgba(255, 255, 255, 0.95);
7
+ border: 1px solid #e0e0e0;
8
+ border-radius: 6px;
9
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
10
+ padding: 8px;
11
+ z-index: 1000;
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: 8px;
15
+ }
16
+
17
+ /* 工具栏按钮样式 */
18
+ .cesium-toolbar-button {
19
+ width: 40px;
20
+ height: 40px;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ background: rgba(66, 133, 244, 0.4);
25
+ color: white;
26
+ border: none;
27
+ border-radius: 4px;
28
+ cursor: pointer;
29
+ font-size: 14px;
30
+ font-weight: bold;
31
+ transition: all 0.2s ease;
32
+ user-select: none;
33
+ position: relative;
34
+ }
35
+
36
+ .cesium-toolbar-button:hover {
37
+ background: rgba(51, 103, 214, 0.9);
38
+ transform: scale(1.05);
39
+ }
40
+
41
+ /* 搜索容器样式 */
42
+ .search-container {
43
+ position: absolute;
44
+ background: white;
45
+ border: 1px solid #e0e0e0;
46
+ border-radius: 4px;
47
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
48
+ padding: 8px;
49
+ min-width: 200px;
50
+ z-index: 1001;
51
+ }
52
+
53
+ .search-container input {
54
+ padding: 6px 8px;
55
+ border: 1px solid #ddd;
56
+ border-radius: 3px;
57
+ font-size: 14px;
58
+ outline: none;
59
+ width: 100%;
60
+ box-sizing: border-box;
61
+ }
62
+
63
+ .search-results {
64
+ margin-top: 8px;
65
+ max-height: 200px;
66
+ overflow-y: auto;
67
+ }
68
+
69
+ .search-results > div {
70
+ padding: 8px;
71
+ border-bottom: 1px solid #f0f0f0;
72
+ cursor: pointer;
73
+ transition: background-color 0.2s;
74
+ }
75
+
76
+ .search-results > div:hover {
77
+ background-color: #f5f5f5;
78
+ }
79
+
80
+ /* 测量菜单样式 */
81
+ .measurement-menu,
82
+ .layers-menu {
83
+ position: absolute;
84
+ background: white;
85
+ border: 1px solid #e0e0e0;
86
+ border-radius: 4px;
87
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
88
+ padding: 4px 0;
89
+ min-width: 120px;
90
+ z-index: 1001;
91
+ }
92
+
93
+ .layers-menu {
94
+ padding: 8px;
95
+ min-width: 200px;
96
+ }
97
+
98
+ .measurement-menu > div,
99
+ .layers-menu > div {
100
+ padding: 8px 12px;
101
+ cursor: pointer;
102
+ display: flex;
103
+ align-items: center;
104
+ gap: 8px;
105
+ transition: background-color 0.2s;
106
+ }
107
+
108
+ .measurement-menu > div:hover,
109
+ .layers-menu > div:hover {
110
+ background-color: #f5f5f5;
111
+ }
112
+
113
+ /* 图层菜单项样式 */
114
+ .layers-menu .map-type-item {
115
+ display: flex;
116
+ align-items: center;
117
+ gap: 8px;
118
+ padding: 6px;
119
+ cursor: pointer;
120
+ border-radius: 3px;
121
+ transition: background-color 0.2s;
122
+ }
123
+
124
+ .layers-menu .map-type-item:hover {
125
+ background-color: #f5f5f5;
126
+ }
127
+
128
+ .layers-menu .map-type-item.selected {
129
+ background-color: #e3f2fd;
130
+ }
131
+
132
+ .layers-menu .map-type-thumbnail {
133
+ width: 20px;
134
+ height: 20px;
135
+ border-radius: 2px;
136
+ }
137
+
138
+ .layers-menu .map-type-checkmark {
139
+ color: #1976d2;
140
+ font-weight: bold;
141
+ margin-left: auto;
142
+ }
143
+
144
+ /* 响应式设计 */
145
+ @media (max-width: 768px) {
146
+ .cesium-map-toolbar {
147
+ padding: 6px;
148
+ gap: 6px;
149
+ }
150
+
151
+ .cesium-toolbar-button {
152
+ width: 36px;
153
+ height: 36px;
154
+ font-size: 12px;
155
+ }
156
+
157
+ .search-container,
158
+ .measurement-menu,
159
+ .layers-menu {
160
+ min-width: 180px;
161
+ }
162
162
  }
@@ -0,0 +1,16 @@
1
+ import * as Cesium from 'cesium';
2
+ export interface TDT3DLayerOptions {
3
+ token: string;
4
+ sk?: string;
5
+ showPlaceName?: boolean;
6
+ }
7
+ export declare class TDT3DLayerController {
8
+ private readonly viewer;
9
+ private currentGeoWTFS;
10
+ constructor(viewer: Cesium.Viewer);
11
+ mount(options: TDT3DLayerOptions): Promise<void>;
12
+ setPlaceNameVisible(visible: boolean, token: string, sk?: string): Promise<void>;
13
+ unmount(): void;
14
+ dispose(): void;
15
+ private destroyGeoWTFS;
16
+ }
@@ -0,0 +1,14 @@
1
+ import * as Cesium from 'cesium';
2
+ type TDTPluginModule = {
3
+ GeoTerrainProvider?: new (options: {
4
+ url: string;
5
+ subdomains?: string[];
6
+ token?: string;
7
+ }) => Cesium.TerrainProvider;
8
+ GeoWTFS?: new (viewer: Cesium.Viewer, options: Record<string, unknown>) => any;
9
+ };
10
+ export declare const isTDTPluginReady: (plugin: TDTPluginModule | null) => boolean;
11
+ export declare function setTDTPlugin(plugin: unknown): void;
12
+ export declare function ensureTDT3DExtensionLoaded(): Promise<boolean>;
13
+ export declare function getTDTPlugin(): TDTPluginModule | null;
14
+ export {};
@@ -0,0 +1,4 @@
1
+ import * as Cesium from 'cesium';
2
+ export declare const createTDT3DImageryProviders: (token: string, sk?: string) => Cesium.ImageryProvider[];
3
+ export declare const createTDT3DTerrainProvider: (token: string, sk?: string) => Cesium.TerrainProvider | null;
4
+ export declare const createTDT3DGeoWTFS: (token: string, viewer: Cesium.Viewer, sk?: string) => any | null;