vis-core 0.30.0-beta.4 → 0.30.0-beta.40

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/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "0.30.0-beta.4";
1
+ declare const _default: "0.30.0-beta.40";
2
2
  export default _default;
@@ -8,3 +8,13 @@ export declare const findAdcodeInfo: (adcode: number) => {
8
8
  c: number[];
9
9
  b: number[];
10
10
  } | undefined;
11
+ export declare const findNameInfo: (name: string) => {
12
+ adcode: number;
13
+ lng: number;
14
+ lat: number;
15
+ name: string;
16
+ level: string;
17
+ parent: number;
18
+ c: number[];
19
+ b: number[];
20
+ } | undefined;
@@ -1,7 +1,8 @@
1
- import Pencil, { BaseObject } from 'gl-draw';
2
- import { Group, Line } from 'gl-draw/dist/objects';
1
+ import type Pencil from 'gl-draw';
2
+ import { BaseObject } from 'gl-draw';
3
+ import type { Line } from 'gl-draw/dist/objects';
3
4
  import * as THREE from 'three';
4
- import Tube from '../Tube';
5
+ import type Tube from '../Tube';
5
6
  interface Options {
6
7
  from: number[];
7
8
  to: number[];
@@ -15,7 +16,6 @@ interface Options {
15
16
  export default class extends BaseObject {
16
17
  options: Options;
17
18
  line: Line;
18
- helperMesh?: Group[];
19
19
  helperMeshPosition?: THREE.Vector3[];
20
20
  constructor(options: Options);
21
21
  static getInitOptions(pencil: Pencil, options: Options): {
@@ -12,6 +12,7 @@ export interface BaseOptions {
12
12
  container: HTMLElement;
13
13
  assetsPrefix?: string;
14
14
  css2DContainer?: HTMLElement;
15
+ controlsContainer?: HTMLElement;
15
16
  pencil?: any;
16
17
  pencil2?: any;
17
18
  pencilConfig?: Record<string, any>;
@@ -96,7 +97,7 @@ export default class Base extends Camera {
96
97
  initCameraUserData(): void;
97
98
  initSceneUserData(): void;
98
99
  initBaseObjectUserData(baseObject: BaseObject): void;
99
- addCSS3DRenderer(): void;
100
+ addCSS3DRenderer(container?: HTMLElement): void;
100
101
  initSettingsObj?: Record<string, any>;
101
102
  mouseButtonsActiveStore: Record<string, any> | null;
102
103
  initSettings(): void;
@@ -104,14 +105,17 @@ export default class Base extends Camera {
104
105
  show(): void;
105
106
  showAction(): void;
106
107
  hide(): void;
108
+ addGroup(): Promise<import("gl-draw/dist/objects").Group>;
107
109
  addCSS2D(dom: HTMLElement, options?: {
108
110
  display?: string;
109
111
  onTop?: number;
112
+ target?: BaseObject;
110
113
  }): Promise<Node>;
111
114
  addCSS3D(dom: HTMLElement, options?: {
112
115
  display?: string;
113
116
  onTop?: number;
114
117
  type?: '3d' | '3dSprite';
118
+ target?: BaseObject;
115
119
  }): Promise<Node>;
116
120
  getRoomEnvMap(): THREE.Texture<unknown>;
117
121
  handlePick(objArr: PickFunctionsItem['objArr'], type: PickFunctionsItem['type'], cb: PickFunctionsItem['cb']): void;
@@ -4,6 +4,7 @@ import { type BaseObject, type Lead } from 'gl-draw';
4
4
  import { type Group } from 'gl-draw/dist/objects';
5
5
  import { getProjection } from 'gl-draw/dist/utils';
6
6
  import * as THREE from 'three';
7
+ import type { IBaseObject } from "../../editor";
7
8
  import type Building from './objects/building';
8
9
  import type Road from './objects/road';
9
10
  interface CityOptions extends BaseOptions {
@@ -71,13 +72,11 @@ export default class extends Base {
71
72
  projection: ReturnType<typeof getProjection>;
72
73
  options: CityOptions;
73
74
  group: Group;
74
- outAreaGroup: Group;
75
75
  building: Building;
76
76
  road: Road;
77
77
  setOptions(options: CityOptions): void;
78
78
  multiplyScalar: number;
79
79
  loaderAdd(): void;
80
- loaderAddJson(jsonName: string): void;
81
80
  initMaterial(): Promise<void>;
82
81
  disableSSAO(): void;
83
82
  enabledSSAO(): void;
@@ -85,27 +84,22 @@ export default class extends Base {
85
84
  getInvert(vector3: THREE.Vector3): any;
86
85
  fitTo(obj: BaseObject, enableTransition?: boolean): Promise<void>;
87
86
  initVis(): Promise<void>;
87
+ drawCityPlane(adcode: number, target?: IBaseObject): Promise<void>;
88
88
  drawBuilding(options?: {
89
- json?: {
90
- features: any[];
91
- };
89
+ jsonUrl?: string;
92
90
  meters?: number;
93
91
  grey?: boolean;
94
92
  sideGradient?: boolean;
95
93
  hasSide?: boolean;
96
94
  }): Promise<Building | undefined>;
97
95
  drawArea(options?: {
98
- json?: {
99
- features: any[];
100
- };
96
+ jsonUrl?: string;
101
97
  type?: 'river' | 'grassland';
102
98
  oArr?: number[];
103
99
  grey?: boolean;
104
100
  }): Promise<import("./objects/area").default | undefined>;
105
101
  drawRoad(options?: {
106
- json?: {
107
- features: any[];
108
- };
102
+ jsonUrl?: string;
109
103
  meters?: number;
110
104
  z?: number;
111
105
  grey?: boolean;
@@ -2,9 +2,7 @@ import { BaseObject } from 'gl-draw';
2
2
  import type { ExtrudePolygon } from 'gl-draw/dist/objects';
3
3
  import type * as THREE from 'three';
4
4
  interface Options {
5
- json: {
6
- features: any[];
7
- };
5
+ jsonUrl: string;
8
6
  projection: {
9
7
  center: [number, number];
10
8
  scale: number;
@@ -1,9 +1,7 @@
1
1
  import { BaseObject } from 'gl-draw';
2
2
  import * as THREE from 'three';
3
3
  interface Options {
4
- json: {
5
- features: any[];
6
- };
4
+ jsonUrl: string;
7
5
  projection: {
8
6
  center: [number, number];
9
7
  scale: number;
@@ -1,9 +1,7 @@
1
1
  import { BaseObject } from 'gl-draw';
2
2
  import type { Line } from 'gl-draw/dist/objects';
3
3
  interface Options {
4
- json: {
5
- features: any[];
6
- };
4
+ jsonUrl: string;
7
5
  projection: {
8
6
  center: [number, number];
9
7
  scale: number;
@@ -2,3 +2,4 @@ export { default as Base } from './base';
2
2
  export { default as City } from './city';
3
3
  export { default as Earth } from './earth';
4
4
  export { default as Map } from './map';
5
+ export * from './map/MapManager';
@@ -0,0 +1,124 @@
1
+ import Map from './';
2
+ export interface FixConfig {
3
+ [key: `level:${string}`]: {
4
+ s: string[];
5
+ z: string[];
6
+ };
7
+ }
8
+ export interface MapManagerConfig {
9
+ container: HTMLDivElement;
10
+ controlsContainer?: HTMLDivElement;
11
+ assetsPrefix?: string;
12
+ fixConfig?: FixConfig;
13
+ raycasterPointsThreshold?: number;
14
+ mapPadding?: [number, number, number, number];
15
+ }
16
+ export interface MapEventHandlers {
17
+ [key: string]: (...args: any[]) => void;
18
+ }
19
+ /**
20
+ * MapManager - 地图管理类
21
+ */
22
+ export declare class MapManager {
23
+ private container;
24
+ private controlsContainer?;
25
+ private assetsPrefix?;
26
+ private fixConfig?;
27
+ private raycasterPointsThreshold;
28
+ private readonly MAX_ZOOM_FACTOR;
29
+ private readonly MIN_ZOOM_FACTOR;
30
+ private mapInstances;
31
+ private mapDistances;
32
+ private mapConfigs;
33
+ private currentMap;
34
+ private currentZoom;
35
+ private mapPadding;
36
+ private groups;
37
+ private eventHandlers;
38
+ private areaCloseTimer;
39
+ static findNameInfo: (name: string) => {
40
+ adcode: number;
41
+ lng: number;
42
+ lat: number;
43
+ name: string;
44
+ level: string;
45
+ parent: number;
46
+ c: number[];
47
+ b: number[];
48
+ } | undefined;
49
+ static getAdcodeShowLevel: (adcode: number, fix?: boolean) => string | undefined;
50
+ static findAdcodeInfo: (adcode: number) => {
51
+ adcode: number;
52
+ lng: number;
53
+ lat: number;
54
+ name: string;
55
+ level: string;
56
+ parent: number;
57
+ c: number[];
58
+ b: number[];
59
+ } | undefined;
60
+ constructor(config: MapManagerConfig);
61
+ /**
62
+ * 设置事件处理器
63
+ */
64
+ setEventHandlers(handlers: MapEventHandlers): void;
65
+ /**
66
+ * 触发事件
67
+ */
68
+ emit<K extends keyof MapEventHandlers>(eventName: K, ...args: Parameters<MapEventHandlers[K]>): void;
69
+ /**
70
+ * 获取当前地图实例
71
+ */
72
+ getCurrentMap(): Map | null;
73
+ /**
74
+ * 获取当前缩放级别
75
+ */
76
+ getCurrentZoom(): number;
77
+ /**
78
+ * 初始化地图
79
+ */
80
+ initMap(adcodeArr: number[], fixedAdcode?: boolean): Promise<Map | null>;
81
+ /**
82
+ * 创建地图实例
83
+ */
84
+ private createMapInstance;
85
+ /**
86
+ * 应用地图修复配置
87
+ */
88
+ private applyFixConfig;
89
+ /**
90
+ * 绑定区域交互事件
91
+ */
92
+ private bindAreaEvents;
93
+ /**
94
+ * 设置缩放级别
95
+ */
96
+ setZoom(zoom: number): void;
97
+ /**
98
+ * 创建分组
99
+ * @param groupId 分组ID,用于后续管理
100
+ * @returns 分组实例
101
+ */
102
+ createGroup(groupId: string): Promise<Awaited<ReturnType<Map['addGroup']>> | null>;
103
+ /**
104
+ * 获取分组
105
+ */
106
+ getGroup(groupId: string): Awaited<ReturnType<Map['addGroup']>> | undefined;
107
+ /**
108
+ * 清除指定分组
109
+ */
110
+ clearGroup(groupId: string): void;
111
+ /**
112
+ * 清除所有分组
113
+ */
114
+ clearAllGroups(): void;
115
+ /**
116
+ * 清除区域关闭定时器(供 PortalModal 调用)
117
+ */
118
+ clearAreaCloseTimer(): void;
119
+ /**
120
+ * 销毁所有地图实例
121
+ */
122
+ dispose(): void;
123
+ }
124
+ export declare function proposedRaycast(raycaster: any, intersects: any): void;
@@ -54,7 +54,6 @@ export interface MapOptions extends BaseOptions {
54
54
  bottomPlaneWater?: boolean;
55
55
  }
56
56
  interface MapCityOptions extends MapOptions {
57
- jsonNameObj?: Record<number, string>;
58
57
  cacheCity?: boolean;
59
58
  nearbyCities?: boolean | 'full';
60
59
  showBuilding?: boolean;
@@ -105,6 +104,27 @@ export default class extends Base {
105
104
  };
106
105
  lead: Lead<typeof leadObjs>;
107
106
  options: Required<MapCityOptions>;
107
+ static getAdcodeShowLevel: (adcode: number, fix?: boolean) => string | undefined;
108
+ static findAdcodeInfo: (adcode: number) => {
109
+ adcode: number;
110
+ lng: number;
111
+ lat: number;
112
+ name: string;
113
+ level: string;
114
+ parent: number;
115
+ c: number[];
116
+ b: number[];
117
+ } | undefined;
118
+ static findNameInfo: (name: string) => {
119
+ adcode: number;
120
+ lng: number;
121
+ lat: number;
122
+ name: string;
123
+ level: string;
124
+ parent: number;
125
+ c: number[];
126
+ b: number[];
127
+ } | undefined;
108
128
  mapHistory: {
109
129
  map: PlaneMap;
110
130
  mapInfo: NonNullable<ReturnType<typeof findAdcodeInfo>>;
@@ -164,13 +184,13 @@ export default class extends Base {
164
184
  pcenter: [number, number];
165
185
  pscale: number;
166
186
  meters: number;
167
- cityVis: City | null;
187
+ cityVis: City[];
168
188
  extendsOptions: Record<string, any>;
169
189
  setOptions(options: MapOptions): void;
170
190
  initSettingsObj: Record<string, any>;
171
191
  handleSetting(key: string, value: any): Promise<any>;
172
192
  init(): Promise<void>;
173
- initCityVis(adcode: number, grey?: boolean): Promise<City>;
193
+ initCityVis(adcode: number, grey?: boolean): Promise<City | null>;
174
194
  initCityOnMap(adcode: number): Promise<void>;
175
195
  initVisBg(): Promise<void>;
176
196
  initVis(adcode: number): Promise<void>;
@@ -226,11 +246,19 @@ export default class extends Base {
226
246
  * @param height - 距离地图平面的高度,默认为0
227
247
  */
228
248
  setObjectOnMap(object: BaseObject, location: [number, number], height?: number): void;
249
+ setObjectOnMapAreaByProperty(object: BaseObject, key: string, value: any, height?: number): void;
229
250
  getAdcodeScreenPosition(adcode: number): {
230
251
  x: number;
231
252
  y: number;
232
253
  } | undefined;
233
254
  booleanPointInCn(location: [number, number]): boolean;
255
+ /**
256
+ * 判断经纬度是否在当前地图板块内
257
+ * @param location - 经纬度坐标 [经度, 纬度]
258
+ * @param adcode - 可选,指定板块的行政区划代码,不传则使用当前地图的adcode
259
+ * @returns 是否在板块内
260
+ */
261
+ booleanPointInMap(location: [number, number], adcode?: number): boolean;
234
262
  private getGeojson;
235
263
  handleDrillDown({ adcode, duration, handleLook, saveBackCamvasState, extrudelineBloom, }: {
236
264
  adcode: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vis-core",
3
- "version": "0.30.0-beta.4",
3
+ "version": "0.30.0-beta.40",
4
4
  "scripts": {
5
5
  "start": "npm run version && PORT=5173 bundler-dev",
6
6
  "build:site": "npm run version && PUBLIC_EXCLUDE=true bundler",
@@ -9,8 +9,6 @@
9
9
  "preview": "bundler-preview",
10
10
  "version": "node ./scripts/generate-version",
11
11
  "gzip": "node ./scripts/gzip",
12
- "start:3dSite": "npm run version && VITE_SITE_3D=true bundler-dev",
13
- "build:3dSite": "npm run version && VITE_SITE_3D=true bundler",
14
12
  "pub": "npm publish --tag beta"
15
13
  },
16
14
  "main": "dist/index.js",
@@ -50,7 +48,7 @@
50
48
  "primeicons": "^7.0.0",
51
49
  "primevue": "^4.4.1",
52
50
  "tailwind-config-bundler": "^0.4.6",
53
- "three": "^0.181.0",
51
+ "three": "^0.182.0",
54
52
  "vite-plugin-javascript-obfuscator": "^3.1.0",
55
53
  "vite-plugin-markdown": "^2.2.0",
56
54
  "vite-plugin-static-copy": "^2.2.0",
@@ -61,12 +59,12 @@
61
59
  "dependencies": {
62
60
  "@turf/turf": "^6.5.0",
63
61
  "@types/crypto-js": "^4.2.2",
64
- "@types/three": "^0.181.0",
62
+ "@types/three": "^0.182.0",
65
63
  "crypto-js": "^4.2.0",
66
64
  "esus-lite": "^0.2.8",
67
65
  "events": "^3.3.0",
68
66
  "geojson-cn": "^0.2.5",
69
- "gl-draw": "0.17.0-beta.12",
67
+ "gl-draw": "0.17.0-beta.24",
70
68
  "jsrsasign": "^11.1.0",
71
69
  "lodash-es": "^4.17.21"
72
70
  },