@xingm/vmap-cesium-toolbar 0.0.3 → 0.0.4

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.
@@ -20,11 +20,7 @@ declare class DrawHelper {
20
20
  private publicEntities;
21
21
  private _doubleClickPending;
22
22
  private lastPreviewPosition;
23
- private drawHintEntity;
24
- private drawHintText;
25
- private drawHintLastPosition;
26
- private drawHintOverrideText;
27
- private drawHintOverrideUntil;
23
+ private drawHintHelper;
28
24
  private lastLeftClickDebug;
29
25
  private static activeDrawingHelper;
30
26
  private drawLine;
@@ -56,6 +52,10 @@ declare class DrawHelper {
56
52
  * 其它模块(如覆盖物服务)继续触发 pick,引发 ground/worker 相关异常。
57
53
  */
58
54
  private setPickCooldown;
55
+ /**
56
+ * 检查当前是否处于拾取(blocked)状态
57
+ * @returns {boolean} 如果当前时间小于设定的阻塞时间,则返回true表示拾取被阻塞,否则返回false
58
+ */
59
59
  private isPickBlocked;
60
60
  /**
61
61
  * 在实体被加入场景后、渲染循环更新前做一次快速校验。
@@ -73,6 +73,11 @@ declare class DrawHelper {
73
73
  * @param viewer Cesium Viewer 实例
74
74
  */
75
75
  constructor(viewer: Cesium.Viewer);
76
+ /**
77
+ * 检测并输出可能存在高度限制问题的实体信息
78
+ * @param tag 标识本次检测的唯一标签
79
+ * @returns 返回包含检测结果的报告对象
80
+ */
76
81
  private dumpPotentialClampingEntities;
77
82
  /**
78
83
  * 对新创建的实体进行净化处理,确保其符合渲染要求
@@ -80,7 +85,16 @@ declare class DrawHelper {
80
85
  * @param tag - 用于标识来源的标签,会在控制台警告时显示
81
86
  */
82
87
  private sanitizeNewEntity;
88
+ /**
89
+ * 安装实体添加钩子函数,用于在实体被添加到EntityCollection时进行安全检查和处理
90
+ * 这是一个私有方法,主要用于拦截和修改Cesium中EntityCollection的add方法
91
+ */
83
92
  private installEntitiesAddHook;
93
+ /**
94
+ * 卸载实体集合添加钩子函数
95
+ * 该方法用于移除之前添加到EntityCollection原型中的自定义add方法
96
+ * 恢复原始的add方法实现
97
+ */
84
98
  private uninstallEntitiesAddHook;
85
99
  /**
86
100
  * 安装地面几何更新器调试钩子
@@ -95,32 +109,6 @@ declare class DrawHelper {
95
109
  * 根据场景模式更新偏移高度
96
110
  */
97
111
  private updateOffsetHeight;
98
- /**
99
- * 计算提示文本(随绘制模式 + 点数量变化)
100
- */
101
- private getDrawHintText;
102
- /**
103
- * 设置绘制提示覆盖文本及其持续时间
104
- * @param text 要显示的提示文本
105
- * @param ms 提示文本显示的持续时间(毫秒),默认为1200毫秒
106
- */
107
- private setDrawHintOverride;
108
- /**
109
- * 将提示位置转换为显示位置(按当前模式做轻微抬高,避免被地形遮挡)
110
- */
111
- private toHintDisplayPosition;
112
- /**
113
- * 创建或更新提示实体的位置与文本
114
- */
115
- private updateDrawHintPosition;
116
- /**
117
- * 更新提示文本(不改变位置;通常在点数变化时调用)
118
- */
119
- private refreshDrawHintTextOnly;
120
- /**
121
- * 清除绘制提示实体
122
- */
123
- private clearDrawHint;
124
112
  /**
125
113
  * 开始绘制线条
126
114
  */
@@ -8,6 +8,7 @@ interface InitOptions {
8
8
  terrain?: Terrain;
9
9
  terrainProvider?: TerrainProvider;
10
10
  mapType?: string;
11
+ tdtMapTypeId?: string;
11
12
  imageryProvider?: Cesium.UrlTemplateImageryProvider;
12
13
  imageryLayers?: Cesium.ImageryLayerCollection;
13
14
  terrainShadows?: Cesium.ShadowMode;
@@ -80,6 +80,12 @@ export interface MapType {
80
80
  id: string;
81
81
  name: string;
82
82
  nameKey?: string;
83
+ /** 选中态左上角“地名”文案(可选,未配置时走 i18n 默认 key) */
84
+ placeNameLabel?: string;
85
+ /** 选中态左上角“地名”文案 i18n key(可选) */
86
+ placeNameLabelKey?: string;
87
+ /** 是否强制始终显示地名层(不受 placeName 开关影响) */
88
+ forcePlaceName?: boolean;
83
89
  thumbnail: string;
84
90
  provider: (token: string) => Cesium.ImageryProvider[];
85
91
  terrainProvider?: (token: string) => Cesium.TerrainProvider | null;
@@ -36,6 +36,7 @@ export declare class CesiumOverlayService {
36
36
  /** 构造参数(用于开关 hover handler 等运行时策略) */
37
37
  private readonly options;
38
38
  private overlayEditor;
39
+ private overlayHighlight;
39
40
  private lastHoverTargets;
40
41
  private hoverPickRAF;
41
42
  private hoverPickPos;
@@ -44,10 +45,6 @@ export declare class CesiumOverlayService {
44
45
  private lastHoverPickTime;
45
46
  private lastHoverPickPos;
46
47
  private bulkUpdateDepth;
47
- private static readonly DEFAULT_HIGHLIGHT_COLOR;
48
- private static readonly DEFAULT_HIGHLIGHT_FILL_ALPHA;
49
- private static readonly DEFAULT_HIGHLIGHT_GLOW_POWER;
50
- private static readonly GLOW_OUTLINE_ROOT_ID_PROP;
51
48
  private static readonly HOVER_PICK_MIN_INTERVAL_MS;
52
49
  private static readonly HOVER_PICK_MIN_MOVE_PX;
53
50
  private static readonly HOVER_SUSPEND_AFTER_MUTATION_MS;
@@ -70,12 +67,6 @@ export declare class CesiumOverlayService {
70
67
  * 需要映射回 overlayMap 内的根覆盖物 id。
71
68
  */
72
69
  private normalizeOverlayPickId;
73
- private getEntityPropertyString;
74
- private mapGlowOutlineEntityToRoot;
75
- private getClosedPositions;
76
- private generateEllipseOutlinePositions;
77
- private ensureGlowOutline;
78
- private removeGlowOutline;
79
70
  private resolveOverlayByPickId;
80
71
  private resolvePickedOverlayEntity;
81
72
  readonly marker: MapMarker;
@@ -117,6 +108,12 @@ export declare class CesiumOverlayService {
117
108
  * 设置实体点击处理器
118
109
  */
119
110
  private setupEntityClickHandler;
111
+ /**
112
+ * 开启或是关闭覆盖物的Hover高亮(鼠标移入高亮,移出取消)。
113
+ * - 开启后:覆盖物会触发高亮,且高亮状态会在鼠标移出时取消。
114
+ * - 关闭后:覆盖物不再触发 hover 高亮。
115
+ */
116
+ toggleOverlayHoverHighlight(enabled: boolean): void;
120
117
  /**
121
118
  * 开启/关闭覆盖物编辑模式。
122
119
  * - 开启后:点击覆盖物会进入编辑,并显示可拖拽控制点。
@@ -138,16 +135,6 @@ export declare class CesiumOverlayService {
138
135
  private setupEntityHoverHandler;
139
136
  private getPropertyValue;
140
137
  private getNumberProperty;
141
- private resolveHighlightOptions;
142
- private getActiveHighlightOptions;
143
- private setOverlayHighlightReason;
144
- private applyOverlayHighlightStyle;
145
- /**
146
- * 恢复覆盖物的高亮样式
147
- * @param entity - 覆盖物实体对象
148
- * @returns 无返回值
149
- */
150
- private restoreOverlayHighlightStyle;
151
138
  /**
152
139
  * 生成唯一ID
153
140
  */
@@ -1,4 +1,4 @@
1
- import { Viewer } from '../../node_modules/cesium';
1
+ import { Viewer, Entity } from '../../node_modules/cesium';
2
2
  import * as Cesium from 'cesium';
3
3
  export interface ClusterPoint {
4
4
  /** 业务 id(可选,建议传以便稳定更新) */
@@ -40,6 +40,17 @@ export interface PointClusterLayerOptions {
40
40
  clusterPixelSize?: number;
41
41
  /** 聚合点样式分段:用 count 决定颜色/大小 */
42
42
  clusterStyleSteps?: ClusterStyleStep[];
43
+ /** 自定义聚合点渲染(直接修改 cluster entity) */
44
+ renderCluster?: (args: {
45
+ cluster: Entity;
46
+ clusteredEntities: Entity[];
47
+ count: number;
48
+ }) => void;
49
+ /** 自定义单点渲染(直接修改 point entity) */
50
+ renderSinglePoint?: (args: {
51
+ entity: Entity;
52
+ point: ClusterPoint;
53
+ }) => void;
43
54
  /** 点击聚合点回调:返回该聚合内的原始点 */
44
55
  onClusterClick?: (points: ClusterPoint[], ctx: {
45
56
  screenPosition: Cesium.Cartesian2;
@@ -54,18 +65,25 @@ export interface PointClusterLayerOptions {
54
65
  idPrefix?: string;
55
66
  }
56
67
  export default class CesiumPointClusterLayer {
68
+ private static readonly CLUSTER_STYLE_MIN_INTERVAL_MS;
57
69
  private viewer;
58
70
  private readonly options;
59
71
  private dataSource;
60
72
  private entityIdToPoint;
61
73
  private clickHandler;
62
74
  private readonly layerId;
75
+ private pendingClusterStyles;
76
+ private clusterStyleRAF;
77
+ private clusterStyleTimer;
78
+ private lastClusterStyleFlushTime;
63
79
  constructor(viewer: Viewer, options?: PointClusterLayerOptions);
64
80
  /** 设置/替换点数据(经纬度单位:度) */
65
81
  setData(points: ClusterPoint[]): void;
66
82
  setVisible(visible: boolean): void;
67
83
  setClusteringEnabled(enabled: boolean): void;
68
84
  destroy(): void;
85
+ private enqueueClusterStyle;
86
+ private flushClusterStyles;
69
87
  private applyClusterStyle;
70
88
  private pickStyle;
71
89
  private installClickHandler;
@@ -11,6 +11,7 @@ export declare class DrawCircle extends BaseDraw {
11
11
  * 开始绘制
12
12
  */
13
13
  startDrawing(options?: DrawOptions): void;
14
+ addPoint(position: Cartesian3): void;
14
15
  /**
15
16
  * 更新绘制实体(预览)
16
17
  */
@@ -0,0 +1,32 @@
1
+ import * as Cesium from "cesium";
2
+ type DrawMode = "line" | "polygon" | "rectangle" | "circle" | null;
3
+ type DrawHintState = {
4
+ isDrawing: boolean;
5
+ drawMode: DrawMode;
6
+ tempPositions: Cesium.Cartesian3[];
7
+ offsetHeight: number;
8
+ };
9
+ export declare class DrawHintHelper {
10
+ private entities;
11
+ private getState;
12
+ private translate;
13
+ private drawHintEntity;
14
+ private drawHintText;
15
+ private drawHintLastPosition;
16
+ private drawHintOverrideText;
17
+ private drawHintOverrideUntil;
18
+ constructor(entities: Cesium.EntityCollection, getState: () => DrawHintState, translate: (key: string, params?: Record<string, any>) => string);
19
+ handleSceneModeChanged(): void;
20
+ setOverride(options: Cesium.LabelGraphics | Cesium.LabelGraphics.ConstructorOptions, ms?: number): void;
21
+ updatePosition(position: Cesium.Cartesian3): void;
22
+ refreshTextOnly(): void;
23
+ clear(): void;
24
+ /**
25
+ * 获取绘图提示文本的公共方法
26
+ * 根据当前的绘图状态和模式返回相应的提示信息
27
+ * @returns {string} 返回对应的提示文本,如果不在绘图状态则返回空字符串
28
+ */
29
+ getDrawHintText(): string;
30
+ private toHintDisplayPosition;
31
+ }
32
+ export {};
@@ -3,3 +3,4 @@ export { DrawLine } from './DrawLine';
3
3
  export { DrawPolygon } from './DrawPolgon';
4
4
  export { DrawRectangle } from './DrawRectangle';
5
5
  export { DrawCircle } from './DrawCircle';
6
+ export { DrawHintHelper } from './DrawHint';
@@ -62,6 +62,7 @@ export declare class OverlayEditController {
62
62
  * @returns true 表示成功进入编辑
63
63
  */
64
64
  start(entityOrId: (DrawEntity & OverlayEntity) | string): boolean;
65
+ private resolveEditTarget;
65
66
  private detectEditableKind;
66
67
  private getPropertyValue;
67
68
  private getNumberProperty;
@@ -72,21 +73,22 @@ export declare class OverlayEditController {
72
73
  private getEditablePointPosition;
73
74
  private getEditableRectangle;
74
75
  private getEditableCircleInfo;
75
- /**
76
- * 确保编辑处理器已初始化
77
- * 如果处理器不存在,则创建一个新的 ScreenSpaceEventHandler 并设置各种交互事件处理函数
78
- * @private
79
- */
80
- /**
81
- * 确保事件处理器已初始化
82
- * 如果处理器不存在,则创建并设置各种事件处理函数
83
- * @private
84
- */
85
76
  /**
86
77
  * 确保屏幕空间事件处理器已初始化
87
78
  * 如果处理器不存在,则创建一个新的处理器并设置各种交互事件
88
79
  */
89
80
  private ensureHandler;
81
+ private beginDrag;
82
+ private beginMoveDrag;
83
+ private computeMovedPositions;
84
+ private emitChange;
85
+ private prepareOnChangeTarget;
86
+ private resolveOverlayTypeFromId;
87
+ private attachMarkerLngLat;
88
+ private attachPolylineLngLat;
89
+ private attachCircleLngLat;
90
+ private attachPolygonLngLat;
91
+ private attachRectangleLngLat;
90
92
  private captureDragSnapshot;
91
93
  private isGeometryChangedSinceSnapshot;
92
94
  private destroyHandler;
@@ -94,17 +96,8 @@ export declare class OverlayEditController {
94
96
  private restoreCameraController;
95
97
  private clearHandles;
96
98
  private rebuildHandles;
99
+ private getHandleHelpers;
97
100
  private createHandle;
98
- private buildPolygonHandles;
99
- private buildRectangleHandles;
100
- private buildPolylineHandles;
101
- private buildPointHandles;
102
- private buildCircleHandles;
103
- private updatePolygonHandlePositions;
104
- private updateRectangleHandlePositions;
105
- private updatePolylineHandlePositions;
106
- private updatePointHandlePositions;
107
- private updateCircleHandlePositions;
108
101
  private applyEditedPolygon;
109
102
  private applyEditedRectangle;
110
103
  private applyEditedCircle;
@@ -112,10 +105,14 @@ export declare class OverlayEditController {
112
105
  private applyEditedPoint;
113
106
  private getEditingClampToGround;
114
107
  private getCartesianHeight;
108
+ private convertOutlineToLngLat;
109
+ private convertPositionToLngLat;
110
+ private convertCartoToLngLat;
115
111
  private pickCartesianOnGlobe;
116
112
  private computeSurfaceDistanceMeters;
117
113
  private circleRadiusHandlePosition;
118
114
  private rectangleToPositions;
115
+ private rectangleToLngLatPositions;
119
116
  private positionsToRectangle;
120
117
  private getRectangleEditHeight;
121
118
  private computePolygonCenterCartesian;
@@ -0,0 +1,63 @@
1
+ import * as Cesium from "cesium";
2
+ /**
3
+ * 句柄样式(颜色/描边/像素大小)
4
+ */
5
+ export type HandleStyle = {
6
+ color: Cesium.Color;
7
+ outlineColor: Cesium.Color;
8
+ pixelSize: number;
9
+ };
10
+ /**
11
+ * 创建编辑句柄实体
12
+ */
13
+ export type CreateHandle = (position: Cesium.Cartesian3, style: HandleStyle, meta: any) => Cesium.Entity;
14
+ /**
15
+ * 构建/更新句柄所需的依赖函数集合
16
+ */
17
+ export interface HandleHelpers {
18
+ createHandle: CreateHandle;
19
+ computePolygonCenterCartesian: (positions: Cesium.Cartesian3[]) => Cesium.Cartesian3;
20
+ computePolylineHandleRadius: (positions: Cesium.Cartesian3[], center: Cesium.Cartesian3) => number;
21
+ offsetByMeters: (center: Cesium.Cartesian3, meters: number, bearingDeg: number) => Cesium.Cartesian3;
22
+ circleRadiusHandlePosition: (center: Cesium.Cartesian3, radiusMeters: number) => Cesium.Cartesian3;
23
+ }
24
+ /**
25
+ * 构建多边形编辑句柄(顶点/中点/整体移动)
26
+ */
27
+ export declare function buildPolygonHandles(verts: Cesium.Cartesian3[], helpers: HandleHelpers): Cesium.Entity[];
28
+ /**
29
+ * 构建矩形编辑句柄(顶点/边中点/整体移动)
30
+ */
31
+ export declare function buildRectangleHandles(verts: Cesium.Cartesian3[], helpers: HandleHelpers): Cesium.Entity[];
32
+ /**
33
+ * 构建折线编辑句柄(顶点/中点/整体移动/旋转/缩放)
34
+ */
35
+ export declare function buildPolylineHandles(verts: Cesium.Cartesian3[], helpers: HandleHelpers): Cesium.Entity[];
36
+ /**
37
+ * 构建点编辑句柄
38
+ */
39
+ export declare function buildPointHandles(pos: Cesium.Cartesian3 | null, helpers: HandleHelpers): Cesium.Entity[];
40
+ /**
41
+ * 构建圆形编辑句柄(圆心/半径)
42
+ */
43
+ export declare function buildCircleHandles(center: Cesium.Cartesian3 | null, radiusMeters: number, helpers: HandleHelpers): Cesium.Entity[];
44
+ /**
45
+ * 更新多边形句柄位置
46
+ * @returns false 表示句柄数量不匹配,需重建
47
+ */
48
+ export declare function updatePolygonHandlePositions(verts: Cesium.Cartesian3[], handles: Cesium.Entity[], helpers: HandleHelpers): boolean;
49
+ /**
50
+ * 更新折线句柄位置
51
+ * @returns false 表示句柄数量不匹配,需重建
52
+ */
53
+ export declare function updatePolylineHandlePositions(verts: Cesium.Cartesian3[], handles: Cesium.Entity[], helpers: HandleHelpers): boolean;
54
+ /**
55
+ * 更新点句柄位置
56
+ * @returns false 表示句柄数量不匹配或参数为空
57
+ */
58
+ export declare function updatePointHandlePositions(pos: Cesium.Cartesian3 | null, handles: Cesium.Entity[]): boolean;
59
+ /**
60
+ * 更新圆形句柄位置
61
+ * @returns false 表示句柄数量不匹配或参数为空
62
+ */
63
+ export declare function updateCircleHandlePositions(center: Cesium.Cartesian3 | null, radiusMeters: number, handles: Cesium.Entity[], helpers: HandleHelpers): boolean;
@@ -0,0 +1,40 @@
1
+ import { Entity } from '../../../node_modules/cesium';
2
+ import { DrawEntity } from '../drawHelper';
3
+ import { OverlayEntity } from './types';
4
+ import { MapCircle } from './MapCircle';
5
+ import { MapPolygon } from './MapPolygon';
6
+ import { MapRectangle } from './MapRectangle';
7
+ import * as Cesium from "cesium";
8
+ export interface OverlayHighlightHost {
9
+ getEntities(): Cesium.EntityCollection;
10
+ getOverlayById(id: string): (DrawEntity & OverlayEntity) | undefined;
11
+ getPropertyValue<T>(prop: any, fallback: T): T;
12
+ getNumberProperty(prop: any, fallback: number): number;
13
+ getCircle(): MapCircle;
14
+ getPolygon(): MapPolygon;
15
+ getRectangle(): MapRectangle;
16
+ }
17
+ export declare class OverlayHighlight {
18
+ private readonly host;
19
+ private static readonly DEFAULT_HIGHLIGHT_COLOR;
20
+ private static readonly DEFAULT_HIGHLIGHT_FILL_ALPHA;
21
+ private static readonly DEFAULT_HIGHLIGHT_GLOW_POWER;
22
+ private static readonly GLOW_OUTLINE_ROOT_ID_PROP;
23
+ private readonly entities;
24
+ constructor(host: OverlayHighlightHost);
25
+ mapGlowOutlineEntityToRoot(entity: Cesium.Entity): (DrawEntity & OverlayEntity) | null;
26
+ setOverlayHighlightReason(targets: Entity[], reason: "click" | "hover", enabled: boolean): void;
27
+ toggleOverlayHighlight(entity: OverlayEntity, reason?: "click" | "hover"): void;
28
+ setOverlayHighlight(entityOrId: OverlayEntity | string, enabled: boolean, reason?: "click" | "hover"): boolean;
29
+ private getEntityPropertyString;
30
+ private getPropertyValue;
31
+ private getNumberProperty;
32
+ private resolveHighlightOptions;
33
+ private getActiveHighlightOptions;
34
+ private getClosedPositions;
35
+ private generateEllipseOutlinePositions;
36
+ private ensureGlowOutline;
37
+ private removeGlowOutline;
38
+ private applyOverlayHighlightStyle;
39
+ private restoreOverlayHighlightStyle;
40
+ }
@@ -13,21 +13,31 @@ export interface MapLayersServiceConfig {
13
13
  i18n?: I18nLike;
14
14
  useI18n?: boolean;
15
15
  onMapTypeChange?: (mapTypeId: string) => void;
16
- onNoFlyZoneToggle?: (isChecked: boolean) => void;
17
16
  onShowNoFlyZones?: () => Promise<void> | void;
17
+ onNoFlyZoneToggle?: (isChecked: boolean) => void;
18
18
  }
19
19
  /**
20
20
  * 图层服务类
21
21
  * 负责处理地图图层切换相关的所有逻辑
22
22
  */
23
23
  export declare class MapLayersService {
24
+ private static readonly PLACE_NAME_LAYER_TAG;
24
25
  private viewer;
25
26
  private toolbarElement;
26
27
  private config;
27
28
  private currentGeoWTFS;
29
+ private currentMapTypeConfig;
30
+ private currentMapLayers;
31
+ private currentPlaceNameProvider;
32
+ private currentPlaceNameLayer;
33
+ private isPlaceNameChecked;
28
34
  private i18n;
29
35
  private useI18n;
30
36
  constructor(viewer: Viewer, toolbarElement: HTMLElement, config: MapLayersServiceConfig);
37
+ /**
38
+ * 初始化当前地图上下文:用于“初始底图不是通过 switchMapType 加载”时的地名层识别。
39
+ */
40
+ private bootstrapCurrentMapContext;
31
41
  /**
32
42
  * 更新配置
33
43
  */
@@ -61,6 +71,13 @@ export declare class MapLayersService {
61
71
  * 获取当前地图类型
62
72
  */
63
73
  getCurrentMapType(): string;
74
+ private setPlaceNameChecked;
75
+ private shouldEnablePlaceName;
76
+ private isSameProvider;
77
+ private resolveExistingPlaceNameLayer;
78
+ private ensurePlaceNameProvider;
79
+ private addPlaceNameLayer;
80
+ private removePlaceNameLayer;
64
81
  /**
65
82
  * 关闭图层菜单
66
83
  */
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@xingm/vmap-cesium-toolbar",
3
+ "version": "0.0.4",
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
+ }