@xingm/vmap-cesium-toolbar 0.0.4-alpha.1 → 0.0.4-alpha.2

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.
@@ -30,6 +30,7 @@ declare class DrawHelper {
30
30
  private currentDrawer;
31
31
  private screenSpaceEventHandler;
32
32
  private entityClickHandler;
33
+ private readonly pickGovernor;
33
34
  private terrainRefineQueue;
34
35
  private terrainRefineInFlight;
35
36
  private terrainRefineLastTick;
@@ -48,13 +48,9 @@ export declare class CesiumOverlayService {
48
48
  private hoverPickPos;
49
49
  private overlayMutationRevision;
50
50
  private hoverSuspendUntil;
51
- private lastHoverPickTime;
52
- private lastHoverPickPos;
53
51
  private bulkUpdateDepth;
54
- private lastClickPickTime;
55
52
  private readonly clickPickMinIntervalMs;
56
- private static readonly HOVER_PICK_MIN_INTERVAL_MS;
57
- private static readonly HOVER_PICK_MIN_MOVE_PX;
53
+ private readonly pickGovernor;
58
54
  private static readonly HOVER_SUSPEND_AFTER_MUTATION_MS;
59
55
  private static readonly CLICK_PICK_MIN_INTERVAL_MS;
60
56
  private markOverlayMutated;
@@ -77,7 +77,7 @@ export default class CesiumPointClusterLayer {
77
77
  private clusterStyleRAF;
78
78
  private clusterStyleTimer;
79
79
  private lastClusterStyleFlushTime;
80
- private lastClickPickTime;
80
+ private readonly pickGovernor;
81
81
  constructor(viewer: Viewer, options?: PointClusterLayerOptions);
82
82
  /** 设置/替换点数据(经纬度单位:度) */
83
83
  setData(points: ClusterPoint[]): void;
@@ -0,0 +1,23 @@
1
+ export type PickGovernorKind = 'hover' | 'click' | 'cluster' | 'draw' | 'edit';
2
+ export interface PickGovernorProfile {
3
+ minIntervalMs: number;
4
+ minMovePx: number;
5
+ }
6
+ export interface PickGovernorOptions {
7
+ profiles?: Partial<Record<PickGovernorKind, Partial<PickGovernorProfile>>>;
8
+ }
9
+ type PointLike = {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ export declare function isMacPlatform(): boolean;
14
+ export declare class PickGovernor {
15
+ private readonly profiles;
16
+ private readonly lastByKind;
17
+ private suspendUntil;
18
+ constructor(options?: PickGovernorOptions);
19
+ shouldPick(kind: PickGovernorKind, point: PointLike, nowMs?: number): boolean;
20
+ suspend(ms: number): void;
21
+ private isFinitePoint;
22
+ }
23
+ export {};
@@ -9,6 +9,7 @@ export declare class DrawLine extends BaseDraw {
9
9
  private currentTotalLabel;
10
10
  private currentLinePositions;
11
11
  private isTotalLabelWarmedUp;
12
+ private readonly avoidGroundPipeline;
12
13
  /**
13
14
  * 清理当前线段/总距离标签(不影响线实体本身)
14
15
  */
@@ -30,6 +30,7 @@ export interface PolylineOptions {
30
30
  export declare class MapPolyline {
31
31
  private viewer;
32
32
  private entities;
33
+ private readonly avoidGroundPipeline;
33
34
  constructor(viewer: Viewer);
34
35
  /**
35
36
  * 转换位置为 Cartesian3
@@ -31,6 +31,7 @@ export declare class OverlayEditController {
31
31
  private readonly host;
32
32
  private enabled;
33
33
  private handler;
34
+ private readonly pickGovernor;
34
35
  private onChange;
35
36
  private editingTarget;
36
37
  private editingKind;
@@ -36,6 +36,7 @@ export declare class CirclePrimitiveBatch {
36
36
  setColors(circleId: string, ringColor: Cesium.Color, fillColor: Cesium.Color): void;
37
37
  private scheduleApplyColors;
38
38
  private scheduleRebuild;
39
+ private assertCloneableInstanceId;
39
40
  private rebuild;
40
41
  private applyCurrentColors;
41
42
  }
@@ -37,6 +37,7 @@ export declare class PolygonPrimitiveBatch {
37
37
  private scheduleApplyColors;
38
38
  setBorderWidth(polygonId: string, borderWidth: number): void;
39
39
  private scheduleRebuild;
40
+ private assertCloneableInstanceId;
40
41
  private rebuild;
41
42
  private applyCurrentColors;
42
43
  }
@@ -35,6 +35,7 @@ export declare class RectanglePrimitiveBatch {
35
35
  setColors(rectangleId: string, ringColor: Cesium.Color, fillColor: Cesium.Color): void;
36
36
  private scheduleApplyColors;
37
37
  private scheduleRebuild;
38
+ private assertCloneableInstanceId;
38
39
  private rebuild;
39
40
  private applyCurrentColors;
40
41
  }
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@xingm/vmap-cesium-toolbar",
3
+ "version": "0.0.4-alpha.1",
4
+ "description": "A powerful Cesium map toolbar plugin with drawing, measurement, and interaction features",
5
+ "type": "module",
6
+ "main": "index.es.js",
7
+ "module": "index.es.js",
8
+ "types": "index.d.ts",
9
+ "files": [
10
+ "index.es.js",
11
+ "index.umd.js",
12
+ "index.d.ts",
13
+ "style.css",
14
+ "README.md",
15
+ "geojson"
16
+ ],
17
+ "exports": {
18
+ ".": {
19
+ "import": "./index.es.js",
20
+ "default": "./index.es.js"
21
+ },
22
+ "./style": "./style.css"
23
+ },
24
+ "peerDependencies": {
25
+ "vue": "^3.0.0"
26
+ },
27
+ "keywords": [
28
+ "cesium",
29
+ "map",
30
+ "toolbar",
31
+ "drawing",
32
+ "measurement",
33
+ "vue3",
34
+ "typescript"
35
+ ],
36
+ "author": "pengxueyou",
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/BenXueYou/vmap-cesium-tool.git"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/BenXueYou/vmap-cesium-tool/issues"
44
+ },
45
+ "homepage": "https://github.com/BenXueYou/vmap-cesium-tool#readme"
46
+ }
package/dist/style.css ADDED
@@ -0,0 +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
+ }
162
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xingm/vmap-cesium-toolbar",
3
- "version": "0.0.4-alpha.1",
3
+ "version": "0.0.4-alpha.2",
4
4
  "description": "A powerful Cesium map toolbar plugin with drawing, measurement, and interaction features",
5
5
  "type": "module",
6
6
  "main": "dist/index.es.js",