xinrui-3d 1.0.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.
package/README.md ADDED
@@ -0,0 +1,421 @@
1
+ # scene-3d
2
+
3
+ `src/npm` 是楼层 3D 预览/展示模块,基于 Three.js 渲染编辑器保存的楼层数据。模块支持底图面、墙体、房间标签、业务图标、设备、通行设施和路径渲染,并提供运行时新增图标、替换设备图标、移动设备、相机飞行等能力。
4
+
5
+ ## 快速开始
6
+
7
+ ```js
8
+ import { createScene3D } from '@/npm/index.js'
9
+
10
+ const scene3d = createScene3D(containerEl, floorData, {
11
+ resourceBaseUrl: '/resource/', // 图片资源路径在public下:public/resource/
12
+ showAreaLabels: true,
13
+ showIconSprites: true,
14
+ showPassageSprites: true,
15
+ showDeviceSprites: true
16
+ })
17
+
18
+ scene3d.on('click', (object, feature) => {
19
+ console.log(object, feature)
20
+ })
21
+ ```
22
+
23
+ 销毁时释放 Three.js 资源:
24
+
25
+ ```js
26
+ scene3d.dispose()
27
+ ```
28
+
29
+ ## 创建场景
30
+
31
+ ### 配置
32
+
33
+ ```ts
34
+ createScene3D(container: HTMLElement, data?: EditorData | FeatureCollection, options?: SceneOptions): TDScene
35
+ ```
36
+
37
+ | 选项 | 类型 | 必选 | 描述 |
38
+ | --- | --- | --- | --- |
39
+ | container | HTMLElement | √ | 3D 场景容器。 |
40
+ | data | EditorData \| FeatureCollection | | 初始化数据。支持编辑器保存结构或普通 GeoJSON。 |
41
+ | options | SceneOptions | | 场景配置。 |
42
+
43
+ ### SceneOptions
44
+
45
+ | 选项 | 类型 | 必选 | 描述 |
46
+ | --- | --- | --- | --- |
47
+ | targetSize | number | | 投影后的目标尺寸参考值,默认 `96`。 |
48
+ | areaHeight | number | | 面区域高度,默认 `0.08`。 |
49
+ | wallHeight | number | | 墙体高度,默认 `2.5`。 |
50
+ | areaLabelHeight | number | | 房间文字高度,默认 `2`。 |
51
+ | spriteY | number | | 业务图标统一高度;未传时按墙体高度计算。 |
52
+ | showAreaLabels | boolean | | 是否显示房间标签,默认启用。 |
53
+ | showIconSprites | boolean | | 是否显示普通图标,默认启用。 |
54
+ | showPassageSprites | boolean | | 是否显示通行设施图标,默认启用。 |
55
+ | showDeviceSprites | boolean | | 是否显示设备图标,默认启用。 |
56
+ | showPaths | boolean | | 是否显示路径线,默认关闭。 |
57
+ | background | number | | 场景背景色,默认 `0xf7fafc`。 |
58
+ | resourceBaseUrl | string | | 图片资源根路径,默认 `/resource/`。 |
59
+ | resourceExtension | string | | 资源默认扩展名,默认 `png`。 |
60
+ | resourceFolders | Record<string, string> | | 不同业务图层的资源目录映射。 |
61
+ | resolveResourcePath | function | | 自定义资源路径解析函数。 |
62
+
63
+ ## 数据结构
64
+
65
+ 模块支持两类输入:
66
+
67
+ | 类型 | 描述 |
68
+ | --- | --- |
69
+ | EditorData | 编辑器保存结构,包含 `baseMap` 和 `business`。 |
70
+ | FeatureCollection | 普通 GeoJSON,会作为底图数据处理。 |
71
+
72
+ 推荐结构:
73
+
74
+ ```js
75
+ {
76
+ schemaVersion: 'rt-gis-editor.v1',
77
+ coordinateSystem: {
78
+ metersPerUnit: 1
79
+ },
80
+ baseMap: {
81
+ type: 'FeatureCollection',
82
+ features: []
83
+ },
84
+ business: {
85
+ type: 'FeatureCollection',
86
+ features: []
87
+ }
88
+ }
89
+ ```
90
+
91
+ 业务点位通过 `properties.layerType` 区分:
92
+
93
+ | layerType | 描述 | 常用字段 |
94
+ | --- | --- | --- |
95
+ | icon | 普通图标 | `iconName`、`iconUrl`、`markerUrl`、`color` |
96
+ | device | 设备 | `categoryName`、`categoryIconUrl`、`deviceCode`、`markerUrl` |
97
+ | passage | 通行设施 | `passageType`、`passageName`、`facilityIconUrl`、`markerUrl` |
98
+
99
+ 示例:
100
+
101
+ ```js
102
+ {
103
+ type: 'Feature',
104
+ geometry: {
105
+ type: 'Point',
106
+ coordinates: [lng, lat]
107
+ },
108
+ properties: {
109
+ layerType: 'device',
110
+ deviceCode: 'code-1',
111
+ categoryName: '监控'
112
+ }
113
+ }
114
+ ```
115
+
116
+ ## 图标资源
117
+
118
+ ### 资源解析
119
+
120
+ ```ts
121
+ resolveResourceIconUrl(feature: Feature, options?: ResourceOptions): string
122
+ ```
123
+
124
+ | 选项 | 类型 | 必选 | 描述 |
125
+ | --- | --- | --- | --- |
126
+ | feature | Feature | √ | 业务点位 Feature。 |
127
+ | options.resourceBaseUrl | string | | 资源根路径。 |
128
+ | options.resourceExtension | string | | 默认资源扩展名。 |
129
+ | options.resourceFolders | Record<string, string> | | 资源目录映射。 |
130
+ | options.resolveResourcePath | function | | 自定义资源路径函数。 |
131
+
132
+ 默认会根据 `layerType` 和名称字段拼接资源路径:
133
+
134
+ | layerType | 名称字段 | 默认目录 |
135
+ | --- | --- | --- |
136
+ | device | `categoryName` | `设备` |
137
+ | passage / facility | `passageType` 或 `passageName` | `直梯` |
138
+ | icon | `iconName` | `图标` |
139
+
140
+ ### markerUrl
141
+
142
+ `properties.markerUrl` 表示已经生成好的图片资源,会直接作为 Sprite 贴图渲染,不再走默认 marker 画布生成。
143
+
144
+ ```js
145
+ {
146
+ properties: {
147
+ layerType: 'device',
148
+ markerUrl: '/resource/device/camera-marker.png'
149
+ }
150
+ }
151
+ ```
152
+
153
+ ## 运行时图标
154
+
155
+ ### createIcon
156
+
157
+ ```ts
158
+ scene3d.createIcon(image: IconImage, coordinate: RuntimePosition, info?: object, options?: CreateIconOptions): THREE.Sprite | null
159
+ ```
160
+
161
+ 新增一个运行时业务图标。
162
+
163
+ | 参数 | 类型 | 必选 | 描述 |
164
+ | --- | --- | --- | --- |
165
+ | image | IconImage | √ | 图片资源。会直接作为 Sprite 贴图,不走资源名称解析或默认 marker 画布生成。 |
166
+ | coordinate | RuntimePosition | √ | 图标坐标。支持地图坐标、Three 世界坐标和 `THREE.Vector3`。 |
167
+ | info | object | | 写入 `feature.properties` 的业务信息。 |
168
+ | options | CreateIconOptions | | 创建选项。 |
169
+
170
+ #### IconImage
171
+
172
+ | 类型 | 示例 | 描述 |
173
+ | --- | --- | --- |
174
+ | string | `'/resource/device/camera.png'` | 图片 URL。 |
175
+ | object | `{ image: '/resource/device/camera.png' }` | 从 `markerUrl`、`image`、`iconUrl`、`url`、`icon`、`src`、`href` 中读取图片资源。 |
176
+ | HTMLImageElement | `imageEl` | 图片元素。 |
177
+ | HTMLCanvasElement | `canvasEl` | Canvas 资源。 |
178
+ | THREE.Texture | `texture` | Three.js 贴图。 |
179
+
180
+ #### RuntimePosition
181
+
182
+ | 类型 | 示例 | 描述 |
183
+ | --- | --- | --- |
184
+ | `[lng, lat]` | `[113.1, 23.1]` | 地图坐标。 |
185
+ | `[x, y, z]` | `[10, 3, 20]` | Three 世界坐标。 |
186
+ | object | `{ lng, lat }` | 地图坐标对象。 |
187
+ | object | `{ x, y, z }` | Three 世界坐标对象。 |
188
+ | THREE.Vector3 | `new THREE.Vector3(x, y, z)` | Three 世界坐标。 |
189
+
190
+ #### CreateIconOptions
191
+
192
+ | 选项 | 类型 | 必选 | 描述 |
193
+ | --- | --- | --- | --- |
194
+ | id | string | | Feature ID;未传时自动生成。 |
195
+ | layerType | string | | 图层类型,默认读取 `info.layerType`,再默认 `icon`。 |
196
+ | y | number | | 图标高度。 |
197
+
198
+ 示例:
199
+
200
+ ```js
201
+ scene3d.createIcon('/resource/device/camera.png', [lng, lat], {
202
+ layerType: 'device',
203
+ deviceCode: 'code-1',
204
+ deviceName: '监控 1'
205
+ })
206
+ ```
207
+
208
+ 别名:
209
+
210
+ ```js
211
+ scene3d.addIcon(...args)
212
+ ```
213
+
214
+ ### replaceDeviceIcon
215
+
216
+ ```ts
217
+ scene3d.replaceDeviceIcon(image: IconImage, deviceCode: string, info?: object): boolean
218
+ ```
219
+
220
+ 替换已有设备图标。
221
+
222
+ | 参数 | 类型 | 必选 | 描述 |
223
+ | --- | --- | --- | --- |
224
+ | image | IconImage | √ | 新图片资源。会直接作为 Sprite 贴图。 |
225
+ | deviceCode | string | √ | 设备标识。 |
226
+ | info | object | | 合并到原设备 `feature.properties` 的业务信息。 |
227
+
228
+ 设备查找会匹配以下字段:
229
+
230
+ | 字段 |
231
+ | --- |
232
+ | `properties.deviceCode` |
233
+ | `properties.deviceId` |
234
+ | `properties.deviceNo` |
235
+ | `properties.code` |
236
+ | `properties.id` |
237
+ | `feature.id` |
238
+
239
+ 示例:
240
+
241
+ ```js
242
+ scene3d.replaceDeviceIcon('/resource/device/offline.png', 'code-1', {
243
+ status: 'offline'
244
+ })
245
+ ```
246
+
247
+ 别名:
248
+
249
+ ```js
250
+ scene3d.replaceIcon(...args)
251
+ ```
252
+
253
+ ## 设备移动
254
+
255
+ ### moveDeviceIcon
256
+
257
+ ```ts
258
+ scene3d.moveDeviceIcon(deviceCode: string, endPosition: RuntimePosition, options?: MoveOptions): boolean
259
+ ```
260
+
261
+ | 参数 | 类型 | 必选 | 描述 |
262
+ | --- | --- | --- | --- |
263
+ | deviceCode | string | √ | 设备标识。 |
264
+ | endPosition | RuntimePosition | √ | 目标位置。 |
265
+ | options | MoveOptions | | 移动配置。 |
266
+
267
+ #### MoveOptions
268
+
269
+ | 选项 | 类型 | 必选 | 描述 |
270
+ | --- | --- | --- | --- |
271
+ | duration | number | | 动画时长,单位毫秒,默认 `800`。 |
272
+ | follow | boolean | | 是否让相机跟随移动目标。 |
273
+ | followOptions | object | | 相机飞行配置。 |
274
+
275
+ 示例:
276
+
277
+ ```js
278
+ scene3d.moveDeviceIcon('code-1', [endLng, endLat], {
279
+ duration: 1000,
280
+ follow: true,
281
+ followOptions: {
282
+ distance: 10,
283
+ duration: 1000
284
+ }
285
+ })
286
+ ```
287
+
288
+ 别名:
289
+
290
+ ```js
291
+ scene3d.moveIcon(...args)
292
+ ```
293
+
294
+ ## 设备状态
295
+
296
+ ### setDeviceAlarm
297
+
298
+ ```ts
299
+ scene3d.setDeviceAlarm(deviceCode: string): boolean
300
+ ```
301
+
302
+ 将设备渲染为告警状态。
303
+
304
+ ### setDeviceOffline
305
+
306
+ ```ts
307
+ scene3d.setDeviceOffline(deviceCode: string): boolean
308
+ ```
309
+
310
+ 将设备渲染为离线状态。
311
+
312
+ | 参数 | 类型 | 必选 | 描述 |
313
+ | --- | --- | --- | --- |
314
+ | deviceCode | string | √ | 设备标识。 |
315
+
316
+ ## 相机
317
+
318
+ ### followDevice
319
+
320
+ ```ts
321
+ scene3d.followDevice(deviceCode: string, options?: CameraFlyOptions): boolean
322
+ ```
323
+
324
+ 从当前视角平滑飞到目标设备近景。
325
+
326
+ 别名:
327
+
328
+ ```js
329
+ scene3d.cameraFollowDevice(...args)
330
+ scene3d.trackDevice(...args)
331
+ ```
332
+
333
+ ### stopFollowDevice
334
+
335
+ ```ts
336
+ scene3d.stopFollowDevice(): void
337
+ ```
338
+
339
+ 取消当前相机飞行动画。
340
+
341
+ #### CameraFlyOptions
342
+
343
+ | 选项 | 类型 | 必选 | 描述 |
344
+ | --- | --- | --- | --- |
345
+ | distance | number | | 相机和目标的距离。 |
346
+ | height | number | | 相机高度。 |
347
+ | duration | number | | 动画时长,单位毫秒。 |
348
+ | target | THREE.Vector3 | | 自定义目标点。 |
349
+
350
+ ## 事件
351
+
352
+ ### on
353
+
354
+ ```ts
355
+ const cleanup = scene3d.on(type: 'click', callback: (object: THREE.Object3D, feature: Feature) => void): Function
356
+ ```
357
+
358
+ | 参数 | 类型 | 必选 | 描述 |
359
+ | --- | --- | --- | --- |
360
+ | type | `'click'` | √ | 当前支持业务点位点击事件。 |
361
+ | callback | function | √ | 点击回调。 |
362
+
363
+ ### off
364
+
365
+ ```ts
366
+ scene3d.off(type: 'click'): void
367
+ ```
368
+
369
+ 取消指定事件。
370
+
371
+ ## 坐标转换
372
+
373
+ ### mapCoordinateToWorld
374
+
375
+ ```ts
376
+ scene3d.mapCoordinateToWorld(coordinate: [number, number]): THREE.Vector3 | null
377
+ ```
378
+
379
+ 地图坐标转 Three 世界坐标。
380
+
381
+ ### worldToMapCoordinate
382
+
383
+ ```ts
384
+ scene3d.worldToMapCoordinate(x: number, z: number): [number, number] | null
385
+ ```
386
+
387
+ Three 世界坐标转地图坐标。
388
+
389
+ ## 数据切换
390
+
391
+ ### setData
392
+
393
+ ```ts
394
+ scene3d.setData(data: EditorData | FeatureCollection, options?: SceneOptions): void
395
+ ```
396
+
397
+ 清空当前场景并重新渲染。
398
+
399
+ ### switchMap
400
+
401
+ ```ts
402
+ scene3d.switchMap(data: EditorData | FeatureCollection, options?: SceneOptions): void
403
+ ```
404
+
405
+ `setData` 的语义化别名。
406
+
407
+ ## 底层方法
408
+
409
+ `TDMethods` 导出底层工具方法,适合需要自定义渲染或独立处理数据时使用。
410
+
411
+ | 方法 | 描述 |
412
+ | --- | --- |
413
+ | normalizeEditorData | 归一化编辑器数据。 |
414
+ | createProjection | 创建坐标投影函数。 |
415
+ | createBusinessSprite | 创建业务点位 Sprite。 |
416
+ | createMarkerSprite | 创建默认 marker Sprite。 |
417
+ | createTextureSprite | 使用图片资源创建贴图 Sprite。 |
418
+ | createPathLine | 创建路径线。 |
419
+ | createRaycaster | 创建点击射线检测。 |
420
+ | disposeObject | 释放单个 Three 对象资源。 |
421
+ | disposeChildren | 释放 Group 下所有子对象资源。 |
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ const _0x487462=_0x3a38;function _0x4e94(){const _0x24ce74=['update','__tdTextCanvas','toTarget','div','DoubleSide','#ffffff','labelGroup','mapGroup','undefined','parseInt','depthTest','outlineColor','iconUrl','layerType','easing','disposeChildren','Feature','world','applyDeviceCategoryFilter','duration','businessGroup','1772mLGxXG','onComplete','toString','initScene','beginPath','outputColorSpace','view','resolveDeviceCategoryIcon','pageY','features','test','renderOrder','bind','data','follow','href','disposeObject','12005zYcmNq','button','change','push','appendChild','worldSize','setSize','deviceLegendEl','startsWith','maxPolarAngle','intersectObjects','getContext','stringify','worldToMapCoordinate','anonymous','replace','title','maxDistance','devicePixelRatio','nav','fontFamily','lerpVectors','visible','Mesh','alt','set','slice','type','startRenderLoop','fill','1621557egYrzZ','static','updateCameraTweens','count','followOptions','createDeviceStatusFeature','#16BCC2','setFromPoints','src','runtimeImageResource','holes','36351zOpvVV','domElement','scene','opacity','bold\x2042px\x20Arial,\x20sans-serif','findDeviceObject','style','dispose','icon','remove','projection','resize','getBoundingClientRect','rgba(','join','isArray','categoryCode','name','shadowBlur','addEventListener','string','strokeStyle','min','removeDeviceLegend','#fff','Arial,\x20Microsoft\x20YaHei,\x20sans-serif','trim','DeviceCategoryTabs','onClick','updateProjectionMatrix','setupDeviceLegend','filter','minDistance','__previewLabelVisible','off','12YZrGDo','setData','setDeviceCategory','target','alarm','canvas','MeshStandardMaterial','globalCompositeOperation','fitCamera','LineSegments','shadowColor','ellipse','createAreaObject','CanvasTexture','td-device-tabs__text','Group','middle','animateCamera','createBusinessSprite','fontColor','onerror','mouseup','createSceneBusinessSprite','scale','2530HNkBFs','endPosition','999930AoGqKa','number','pathHeight','call','receiveShadow','resourceFolders','restore','properties','relative','showDeviceSprites','clear','function','arc','followDevice','center','LineBasicMaterial','926144iCOnQW','fillRect','coordinateSystem','areaLabelHeight','split','targetSize','abs','FeatureCollection','Sprite','LinearFilter','copy','bounds','stroke','keys','PerspectiveCamera','colorSpace','SRGBColorSpace','resolveResourcePath','fillOpacity','HemisphereLight','fontWeight','dom','td-device-tabs','from','device','textBaseline','createElement','fillText','background','px\x20','now','replaceDeviceIcon','showAreaLabels','flatMap','generateMipmaps','data-v-897b5843','schemaVersion','image','toPos','userData','clientHeight','removeEventListener','deviceLegendApp','526786pLuHSe','1959621CVZhaP','AmbientLight','/resource/','createProjection','resolveBusinessObject','#263845','area','rgba(35,\x2046,\x2057,\x200.14)','replaceDeviceSpriteColor','lineWidth','passage','font','complete','height','pathGroup','resolveRuntimePosition','clone','width','#000','Color','lng','ceil','measureText','fillStyle','updateObjectCoordinate','positionTweens','options','color','keepCurrentOffset','TDScene\x20requires\x20a\x20container\x20element.','coordinate','parent','values','lineTo','Line','td-device-tabs__item','collectDeviceCategories','wallHeight','img','EdgesGeometry','lat','left','max','key','feature','includes','sort','material','resourceExtension','setFromCamera','animateCameraToObject','#f5f5f5','onload','initGroups','tagName','top','toLowerCase','isFinite','forEach','distance','cameraTweens','controls','renderer','needsUpdate','Shape','round','passageType','lineJoin','some','coordinates','cleanups','metersPerUnit','position','fontSize','geometry','MultiPolygon','Path','Vector3','clientX','22px','ExtrudeGeometry','map','object','Vector2','activeDeviceCategoryKey','edgeColor','markerUrl','hidden','findIndex','isVector3','destination-out','fromTarget','rgba(255,\x20255,\x20255,\x200.94)','load','setPixelRatio','rgba(255,\x20255,\x20255,\x200.98)','shadowOffsetY','fillColor','length','crossOrigin','hasOwnProperty','clearRect','deviceCategories','code','onError','addColorStop','initLights','businessObjects','isTexture','renderBaseMap','sub','png','resourceBaseUrl','Raycaster','camera','renderDeviceLegend','moveDeviceIcon','add','has','children','resolveResourceIconUrl'];_0x4e94=function(){return _0x24ce74;};return _0x4e94();}(function(stringArrayFunction,comparisonValue){const _0x549ff3=_0x3a38,_0x50c5da=stringArrayFunction();while(!![]){try{const expression=-parseInt(_0x549ff3(0x253))/0x1+parseInt(_0x549ff3(0x14d))/0x2+parseInt(_0x549ff3(0x14e))/0x3+parseInt(_0x549ff3(0x1dc))/0x4*(parseInt(_0x549ff3(0x1ed))/0x5)+-parseInt(_0x549ff3(0x239))/0x6*(-parseInt(_0x549ff3(0x20b))/0x7)+parseInt(_0x549ff3(0x263))/0x8+-parseInt(_0x549ff3(0x216))/0x9*(parseInt(_0x549ff3(0x251))/0xa);if(expression===comparisonValue)break;else _0x50c5da['push'](_0x50c5da['shift']());}catch(_0x5655c6){_0x50c5da['push'](_0x50c5da['shift']());}}}(_0x4e94,0x833ac));import*as _0x49cc0b from'three';import{reactive as _0x1b03bb,openBlock as _0x2dfdab,createElementBlock as _0x6bfd82,Fragment as _0x2f181e,renderList as _0x556594,normalizeClass as _0x3d7a94,normalizeStyle as _0x2c3e2a,createElementVNode as _0x56c6c9,toDisplayString as _0x421b68,createApp as _0x1da8e3}from'vue';import{MapControls as _0x37b03a}from'three/addons/controls/MapControls.js';const p=_0x487462(0x211),d=(_0x3331e5,_0x1f0248=p)=>{const _0xa827a6=_0x487462,_0x58bc72=String(_0x3331e5??'')['trim']();return/^#[0-9a-fA-F]{6}$/[_0xa827a6(0x1e6)](_0x58bc72)?_0x58bc72:/^#[0-9a-fA-F]{3}$/['test'](_0x58bc72)?'#'+_0x58bc72[_0xa827a6(0x207)](0x1)[_0xa827a6(0x267)]('')[_0xa827a6(0x19f)](_0x48d749=>_0x48d749+_0x48d749)[_0xa827a6(0x224)](''):_0x1f0248;},m=(_0x1fd8e4,_0x2b4528)=>{const _0x513a37=_0x487462,{r:_0x3722e4,g:_0x4f4081,b:_0x15bded}=(_0x132782=>{const _0x325655=_0x3a38,_0x424de2=d(_0x132782)[_0x325655(0x207)](0x1);return{'r':Number['parseInt'](_0x424de2['slice'](0x0,0x2),0x10),'g':Number[_0x325655(0x1d0)](_0x424de2[_0x325655(0x207)](0x2,0x4),0x10),'b':Number[_0x325655(0x1d0)](_0x424de2['slice'](0x4,0x6),0x10)};})(_0x1fd8e4);return _0x513a37(0x223)+_0x3722e4+',\x20'+_0x4f4081+',\x20'+_0x15bded+',\x20'+_0x2b4528+')';},v=(_0x24f82a='',_0xabf33={})=>{const _0x376231=_0x487462,_0x1ca2aa=String(_0x24f82a??''),_0x38d07c=Number[_0x376231(0x1d0)](_0xabf33[_0x376231(0x197)]??'24',0xa),_0x292fd4=Number['isFinite'](_0x38d07c)?_0x38d07c:0x18,_0x40a292=_0xabf33[_0x376231(0x201)]??_0x376231(0x22f),_0x262af7=_0xabf33['fontWeight']??0x258,_0x358ce6=document[_0x376231(0x13c)](_0x376231(0x23e)),_0x54647a=_0x358ce6[_0x376231(0x1f8)]('2d');_0x54647a[_0x376231(0x159)]=_0x262af7+'\x20'+_0x292fd4+_0x376231(0x13f)+_0x40a292;const _0x31e3e1=_0x1ca2aa||'-',_0x561e86=_0x54647a[_0x376231(0x164)](_0x31e3e1),_0x49d955=Math['min'](Number(_0xabf33['pixelRatio']??(_0x376231(0x1cf)!=typeof window?window[_0x376231(0x1ff)]:0x1)),0x3),_0x556652=Math[_0x376231(0x163)](_0x561e86['width']+0x10),_0x3b179c=Math[_0x376231(0x163)](_0x292fd4+0x8);_0x358ce6[_0x376231(0x15f)]=Math['ceil'](_0x556652*_0x49d955),_0x358ce6[_0x376231(0x15b)]=Math[_0x376231(0x163)](_0x3b179c*_0x49d955),_0x358ce6[_0x376231(0x1c8)]=!0x0;const _0x23fb76=_0x358ce6[_0x376231(0x1f8)]('2d');return _0x23fb76[_0x376231(0x250)](_0x49d955,_0x49d955),_0x23fb76[_0x376231(0x159)]=_0x262af7+'\x20'+_0x292fd4+_0x376231(0x13f)+_0x40a292,_0x23fb76['textAlign']=_0x376231(0x261),_0x23fb76[_0x376231(0x13b)]=_0x376231(0x249),_0x23fb76[_0x376231(0x165)]=d(_0xabf33['color'],_0x376231(0x153)),_0x23fb76['fillText'](_0x31e3e1,_0x556652/0x2,_0x3b179c/0x2),_0x358ce6;},g=(_0xea352e,_0x22ecb7,_0x3faaac,_0x28fdd9,_0x43f832)=>{const _0x2d96b7=_0x487462;if(!_0x22ecb7)return void((_0x4d6daf,_0x3c8e94,_0x2abceb,_0x16cc26)=>{const _0x5c1aac=_0x3a38;_0x4d6daf['save'](),_0x4d6daf['strokeStyle']=_0x5c1aac(0x1aa),_0x4d6daf[_0x5c1aac(0x157)]=Math[_0x5c1aac(0x178)](0x7,0.05*_0x16cc26),_0x4d6daf['lineCap']=_0x5c1aac(0x18f),_0x4d6daf[_0x5c1aac(0x191)]=_0x5c1aac(0x18f),_0x4d6daf['strokeRect'](_0x3c8e94+0.18*_0x16cc26,_0x2abceb+0.18*_0x16cc26,0.64*_0x16cc26,0.48*_0x16cc26),_0x4d6daf['beginPath'](),_0x4d6daf['moveTo'](_0x3c8e94+0.5*_0x16cc26,_0x2abceb+0.66*_0x16cc26),_0x4d6daf[_0x5c1aac(0x16f)](_0x3c8e94+0.5*_0x16cc26,_0x2abceb+0.84*_0x16cc26),_0x4d6daf['moveTo'](_0x3c8e94+0.32*_0x16cc26,_0x2abceb+0.84*_0x16cc26),_0x4d6daf[_0x5c1aac(0x16f)](_0x3c8e94+0.68*_0x16cc26,_0x2abceb+0.84*_0x16cc26),_0x4d6daf[_0x5c1aac(0x26f)](),_0x4d6daf[_0x5c1aac(0x259)]();})(_0xea352e,_0x3faaac,_0x28fdd9,_0x43f832);const _0x31b19d=document['createElement']('canvas');_0x31b19d[_0x2d96b7(0x15f)]=_0x43f832,_0x31b19d[_0x2d96b7(0x15b)]=_0x43f832;const _0x1d8cfe=_0x31b19d[_0x2d96b7(0x1f8)]('2d');_0x1d8cfe['drawImage'](_0x22ecb7,0x0,0x0,_0x43f832,_0x43f832),_0x1d8cfe[_0x2d96b7(0x240)]='source-in',_0x1d8cfe[_0x2d96b7(0x165)]=_0x2d96b7(0x1aa),_0x1d8cfe[_0x2d96b7(0x264)](0x0,0x0,_0x43f832,_0x43f832),_0xea352e['drawImage'](_0x31b19d,_0x3faaac,_0x28fdd9);},f=({color:_0x25485c=p,image:_0x263811=null}={})=>{const _0x33bcd5=_0x487462,_0x1568f0=document[_0x33bcd5(0x13c)](_0x33bcd5(0x23e));_0x1568f0[_0x33bcd5(0x15f)]=0xb4,_0x1568f0[_0x33bcd5(0x15b)]=0xb4;const _0x4c0b5e=_0x1568f0['getContext']('2d'),_0x5d7a88=d(_0x25485c);return _0x4c0b5e['clearRect'](0x0,0x0,_0x1568f0['width'],_0x1568f0['height']),_0x4c0b5e['save'](),_0x4c0b5e[_0x33bcd5(0x243)]=_0x33bcd5(0x155),_0x4c0b5e[_0x33bcd5(0x228)]=0x10,_0x4c0b5e[_0x33bcd5(0x1ae)]=0x8,_0x4c0b5e[_0x33bcd5(0x165)]=_0x33bcd5(0x22e),_0x4c0b5e[_0x33bcd5(0x1e0)](),_0x4c0b5e[_0x33bcd5(0x25f)](0x5a,0x5a,0x4e,0x0,0x2*Math['PI']),_0x4c0b5e['fill'](),_0x4c0b5e['restore'](),_0x4c0b5e[_0x33bcd5(0x165)]=m(_0x5d7a88,0x1),_0x4c0b5e['beginPath'](),_0x4c0b5e['arc'](0x5a,0x5a,0x46,0x0,0x2*Math['PI']),_0x4c0b5e['fill'](),g(_0x4c0b5e,_0x263811,0x26,0x26,0x68),_0x1568f0;},y=({color:_0x45b631=p,image:_0x37a0f7=null}={})=>{const _0x4ed03c=_0x487462,_0x2ce053=document[_0x4ed03c(0x13c)]('canvas');_0x2ce053['width']=0x1ae,_0x2ce053['height']=0x1f4;const _0x1292a0=_0x2ce053['getContext']('2d'),_0x5ddfc6=d(_0x45b631),_0x506891=0xd7,_0x1550cd=0xa0;_0x1292a0[_0x4ed03c(0x1b3)](0x0,0x0,_0x2ce053['width'],_0x2ce053[_0x4ed03c(0x15b)]),_0x1292a0['fillStyle']=m(_0x5ddfc6,0.1),_0x1292a0['beginPath'](),_0x1292a0[_0x4ed03c(0x244)](_0x506891,0x184,0xcc,0x3a,0x0,0x0,0x2*Math['PI']),_0x1292a0[_0x4ed03c(0x20a)](),_0x1292a0[_0x4ed03c(0x165)]=m(_0x5ddfc6,0.2),_0x1292a0[_0x4ed03c(0x1e0)](),_0x1292a0['ellipse'](_0x506891,0x184,0x7e,0x2a,0x0,0x0,0x2*Math['PI']),_0x1292a0[_0x4ed03c(0x20a)](),_0x1292a0[_0x4ed03c(0x22b)]=m(_0x5ddfc6,0.48),_0x1292a0[_0x4ed03c(0x157)]=0x5,_0x1292a0['beginPath'](),_0x1292a0['ellipse'](_0x506891,0x184,0x7e,0x2a,0x0,0x0,0x2*Math['PI']),_0x1292a0[_0x4ed03c(0x26f)](),_0x1292a0['save'](),_0x1292a0[_0x4ed03c(0x1e0)](),_0x1292a0[_0x4ed03c(0x244)](_0x506891,0x184,0xcc,0x3a,0x0,0x0,0x2*Math['PI']),_0x1292a0['clip'](),_0x1292a0[_0x4ed03c(0x240)]=_0x4ed03c(0x1a8),_0x1292a0['fillStyle']=_0x4ed03c(0x160),_0x1292a0['beginPath'](),_0x1292a0['moveTo'](0xa8,0x114),_0x1292a0['lineTo'](0x106,0x114),_0x1292a0['lineTo'](_0x506891,0x194),_0x1292a0['closePath'](),_0x1292a0[_0x4ed03c(0x20a)](),_0x1292a0[_0x4ed03c(0x259)](),_0x1292a0['save'](),_0x1292a0[_0x4ed03c(0x243)]='rgba(25,\x2044,\x2056,\x200.14)',_0x1292a0['shadowBlur']=0x1a,_0x1292a0['shadowOffsetY']=0x10,_0x1292a0['fillStyle']=_0x4ed03c(0x1ad),_0x1292a0['beginPath'](),_0x1292a0[_0x4ed03c(0x25f)](_0x506891,_0x1550cd,0x78,0x0,0x2*Math['PI']),_0x1292a0['fill'](),_0x1292a0['restore'](),_0x1292a0['fillStyle']=m(_0x5ddfc6,0.2),_0x1292a0['beginPath'](),_0x1292a0[_0x4ed03c(0x25f)](_0x506891,_0x1550cd,0x70,0x0,0x2*Math['PI']),_0x1292a0[_0x4ed03c(0x20a)]();const _0x6a1134=_0x1292a0['createRadialGradient'](0xc7,0x94,0x8,_0x506891,_0x1550cd,0x56);return _0x6a1134[_0x4ed03c(0x1b7)](0x0,m(_0x5ddfc6,0.96)),_0x6a1134['addColorStop'](0x1,m(_0x5ddfc6,0.76)),_0x1292a0['fillStyle']=_0x6a1134,_0x1292a0['beginPath'](),_0x1292a0['arc'](_0x506891,_0x1550cd,0x54,0x0,0x2*Math['PI']),_0x1292a0['fill'](),g(_0x1292a0,_0x37a0f7,0x79,0x42,0xbc),_0x2ce053;},b=({layerType:_0xb1a4af=_0x487462(0x21e),color:_0x2fd66a,image:_0x1ba370}={})=>_0x487462(0x13a)===_0xb1a4af?y({'color':_0x2fd66a,'image':_0x1ba370}):f({'color':_0x2fd66a,'image':_0x1ba370}),w='#16BCC2',C=_0x487462(0x1bd),S=/\.(png|jpe?g|webp|gif|svg)$/i,D={'device':'设备','facility':'直梯','passage':'直梯','icon':'图标'},M={'elevator':'直梯','vertical_ladder':'直梯','vertical-ladder':'直梯','ladder':'直梯','lift':'直梯','elv':'直梯','直梯':'直梯','escalator':'扶梯','esc':'扶梯','扶梯':'扶梯','stair':'楼梯','stairs':'楼梯','stairway':'楼梯','sta':'楼梯','楼梯':'楼梯'},x=(_0x3e39b0,_0x53cbdb=w)=>{const _0x3e8782=_0x487462,_0xb2b1b2=String(_0x3e39b0||'')[_0x3e8782(0x230)]();return/^#[0-9a-fA-F]{6}$/[_0x3e8782(0x1e6)](_0xb2b1b2)?_0xb2b1b2:/^#[0-9a-fA-F]{3}$/[_0x3e8782(0x1e6)](_0xb2b1b2)?'#'+_0xb2b1b2[_0x3e8782(0x207)](0x1)['split']('')[_0x3e8782(0x19f)](_0xf7a38d=>_0xf7a38d+_0xf7a38d)['join'](''):_0x53cbdb;},P=(_0x353d7d={})=>({'type':_0x487462(0x26a),'features':Array['isArray'](null==_0x353d7d?void 0x0:_0x353d7d[_0x487462(0x1e5)])?_0x353d7d['features']:[]}),T=(_0x3d32cd={},_0x27c06={})=>{const _0x43ffd2=_0x487462,_0x5073dc=_0x3d32cd['properties']||{},_0x332eb5=_0x5073dc['layerType']||_0x43ffd2(0x21e),_0x1a688e={...D,..._0x27c06[_0x43ffd2(0x258)]||{}},_0x2ffef1=Object['prototype'][_0x43ffd2(0x1b2)]['call'](_0x1a688e,_0x332eb5),_0x43756f=_0x1a688e[_0x332eb5];let _0x423b19='';if(_0x43ffd2(0x13a)===_0x332eb5?_0x423b19=String(_0x5073dc['categoryName']||'')[_0x43ffd2(0x230)]():_0x43ffd2(0x158)===_0x332eb5||'facility'===_0x332eb5?_0x423b19=((_0x379ae3={})=>{const _0x14ac9c=_0x43ffd2,_0x34a7cf=(_0xb88e91=_0x379ae3[_0x14ac9c(0x190)],String(_0xb88e91||'')['trim']()[_0x14ac9c(0x186)]());var _0xb88e91;return M[_0x34a7cf]?M[_0x34a7cf]:String(_0x379ae3['passageName']||'')['trim']();})(_0x5073dc):_0x43ffd2(0x21e)===_0x332eb5&&(_0x423b19=String(_0x5073dc['iconName']||'')['trim']()),!_0x2ffef1||!_0x423b19)return'';const _0x16ad45=(_0x388595=>{const _0x5d5b03=_0x43ffd2,_0x3651d0=String(_0x388595||String('/')['replace'](/\/$/,'')+'/resource/')['trim']()||_0x5d5b03(0x150);return _0x3651d0['endsWith']('/')?_0x3651d0:_0x3651d0+'/';})(_0x27c06[_0x43ffd2(0x1be)]),_0x32ba4e=_0x27c06['resourceExtension']||C,_0x43c653=String(_0x43756f||'')['split']('/')['map'](_0x114993=>_0x114993['trim']())['filter'](Boolean)[_0x43ffd2(0x19f)](encodeURIComponent)['join']('/'),_0x3c4b55=((_0x105b11,_0x129577=C)=>{const _0x507522=_0x43ffd2,_0x341471=String(_0x105b11||'')['trim']();if(!_0x341471)return'';const _0x1f7d4d=S[_0x507522(0x1e6)](_0x341471)?_0x341471:_0x341471+'.'+(_0x129577||C);return encodeURIComponent(_0x1f7d4d);})(_0x423b19,_0x32ba4e);return _0x43ffd2(0x25e)==typeof _0x27c06[_0x43ffd2(0x133)]?_0x27c06['resolveResourcePath']({'feature':_0x3d32cd,'properties':_0x5073dc,'layerType':_0x332eb5,'baseUrl':_0x16ad45,'folder':_0x43756f,'folderPath':_0x43c653,'name':_0x423b19,'fileName':_0x3c4b55,'extension':_0x32ba4e})||'':''+_0x16ad45+(_0x43c653?_0x43c653+'/':'')+_0x3c4b55;},j=(_0x301d02={})=>{var _0x2c007e;return'Point'===(null==(_0x2c007e=_0x301d02['geometry'])?void 0x0:_0x2c007e['type']);},N=(_0x51874f={})=>{var _0x1e4160;return'LineString'===(null==(_0x1e4160=_0x51874f['geometry'])?void 0x0:_0x1e4160['type']);},L=(_0x156744,_0x59734e=[])=>Array['isArray'](_0x156744)?'number'==typeof _0x156744[0x0]&&_0x487462(0x254)==typeof _0x156744[0x1]?(_0x59734e[_0x487462(0x1f0)](_0x156744),_0x59734e):(_0x156744[_0x487462(0x188)](_0x3eedf6=>L(_0x3eedf6,_0x59734e)),_0x59734e):_0x59734e,F=(_0x3504c2=[])=>{const _0x592402=_0x487462,_0x8e5e24=_0x3504c2[_0x592402(0x143)](_0x1af3e1=>{const _0x3e03d2=_0x592402;var _0x792109;return L(null==(_0x792109=_0x1af3e1[_0x3e03d2(0x198)])?void 0x0:_0x792109[_0x3e03d2(0x193)]);});if(!_0x8e5e24['length'])return{'minX':-0x1,'maxX':0x1,'minY':-0x1,'maxY':0x1,'width':0x2,'height':0x2,'center':[0x0,0x0]};const _0x242ab5=_0x8e5e24[_0x592402(0x19f)](_0x39b893=>Number(_0x39b893[0x0]||0x0)),_0x449fca=_0x8e5e24['map'](_0x1c2779=>Number(_0x1c2779[0x1]||0x0)),_0x3ed6eb=Math['min'](..._0x242ab5),_0x328c8f=Math[_0x592402(0x178)](..._0x242ab5),_0x3accd8=Math['min'](..._0x449fca),_0x24623b=Math[_0x592402(0x178)](..._0x449fca);return{'minX':_0x3ed6eb,'maxX':_0x328c8f,'minY':_0x3accd8,'maxY':_0x24623b,'width':Math[_0x592402(0x178)](_0x328c8f-_0x3ed6eb,0x1),'height':Math['max'](_0x24623b-_0x3accd8,0x1),'center':[(_0x3ed6eb+_0x328c8f)/0x2,(_0x3accd8+_0x24623b)/0x2]};},I=_0x371217=>Number(_0x371217||0x0)*Math['PI']/0xb4,O=_0x1cb67b=>0xb4*Number(_0x1cb67b||0x0)/Math['PI'],E=([_0x3a0d02,_0x282abb]=[])=>{const _0x200eeb=I(_0x3a0d02),_0x2eef0b=I((_0x240e88=>Math['max'](-89.999999,Math['min'](89.999999,Number(_0x240e88||0x0))))(_0x282abb));return[_0x200eeb,Math['log'](Math['tan'](Math['PI']/0x4+_0x2eef0b/0x2))];},B=(_0x59e6c0={})=>'Polygon'===_0x59e6c0['type']?[_0x59e6c0['coordinates']||[]]:'MultiPolygon'===_0x59e6c0['type']&&_0x59e6c0[_0x487462(0x193)]||[],R=(_0x48e13a=[],_0x3e278a,_0x235add=_0x49cc0b[_0x487462(0x19a)])=>{const _0x4c2bf6=_0x487462,_0x346912=new _0x235add();return _0x48e13a[_0x4c2bf6(0x188)]((_0x56f7c0,_0x1f1a50)=>{const _0x2dafb4=_0x4c2bf6,[_0x106edf,_0x3dff2e]=_0x3e278a(_0x56f7c0);0x0===_0x1f1a50?_0x346912['moveTo'](_0x106edf,-_0x3dff2e):_0x346912[_0x2dafb4(0x16f)](_0x106edf,-_0x3dff2e);}),_0x346912;},G=(_0xcffdec=[],_0x38a043)=>{const _0x58ae7e=_0x487462,[_0x488043=[],..._0x2e49d0]=_0xcffdec,_0x2a0175=R(_0x488043,_0x38a043,_0x49cc0b[_0x58ae7e(0x18e)]);return _0x2e49d0['forEach'](_0x5a68b3=>_0x2a0175[_0x58ae7e(0x215)]['push'](R(_0x5a68b3,_0x38a043))),_0x2a0175;},A=(_0x2511e1,_0x445997,_0x5deb6b={})=>{const _0x3f13d0=_0x487462,_0x213009=B(_0x2511e1['geometry'])['map'](_0x4e9199=>G(_0x4e9199,_0x445997)),_0x2203f9=new _0x49cc0b['ExtrudeGeometry'](_0x213009,{'depth':Number(_0x5deb6b[_0x3f13d0(0x15b)]??2.5),'bevelEnabled':!0x1}),_0x3b3480=[new _0x49cc0b[(_0x3f13d0(0x23f))]({'color':_0x5deb6b['topColor']||_0x3f13d0(0x1cc),'side':_0x49cc0b[_0x3f13d0(0x1cb)],'transparent':!0x0,'roughness':0.68,'metalness':0.02}),new _0x49cc0b[(_0x3f13d0(0x23f))]({'color':_0x5deb6b['sideColor']||'#dce4ed','side':_0x49cc0b['DoubleSide'],'transparent':!0x0,'roughness':0.76,'metalness':0.02})],_0x3b922d=new _0x49cc0b['Mesh'](_0x2203f9,_0x3b3480);_0x3b922d['rotation']['x']=-Math['PI']/0x2,_0x3b922d[_0x3f13d0(0x149)][_0x3f13d0(0x17a)]=_0x2511e1;const _0x5cca06=new _0x49cc0b[(_0x3f13d0(0x175))](_0x2203f9,0x1e);return _0x3b922d['add'](new _0x49cc0b[(_0x3f13d0(0x242))](_0x5cca06,new _0x49cc0b[(_0x3f13d0(0x262))]({'color':_0x5deb6b[_0x3f13d0(0x1a3)]||0xb9c5d0,'transparent':!0x0,'opacity':0.72}))),_0x3b922d;},z=(_0x571fef,_0x34e401={})=>{const _0x517584=_0x487462,_0x12cd75=new _0x49cc0b['CanvasTexture'](_0x571fef);_0x12cd75[_0x517584(0x131)]=_0x49cc0b['SRGBColorSpace'],_0x571fef[_0x517584(0x1c8)]&&(_0x12cd75[_0x517584(0x144)]=!0x1,_0x12cd75['minFilter']=_0x49cc0b[_0x517584(0x26c)],_0x12cd75['magFilter']=_0x49cc0b[_0x517584(0x26c)]);const _0x40677e=new _0x49cc0b['SpriteMaterial']({'map':_0x12cd75,'transparent':!0x0,'alphaTest':0.05,'depthTest':!0x1!==_0x34e401[_0x517584(0x1d1)],'depthWrite':!0x1}),_0x333bbf=new _0x49cc0b[(_0x517584(0x26b))](_0x40677e),_0x567ae4=Number(_0x34e401['height']||2.2);return _0x333bbf['scale']['set'](_0x571fef[_0x517584(0x15f)]/_0x571fef['height']*_0x567ae4,_0x567ae4,0x1),_0x333bbf['renderOrder']=Number(_0x34e401['renderOrder']||0x1),_0x333bbf;},k=new Set(['img',_0x487462(0x23e),'video']),$=(_0x307fe6,_0x4972c9={})=>{const _0x15eb87=_0x487462;let _0x14d820=new _0x49cc0b[(_0x15eb87(0x246))](((_0x19056={})=>{const _0x108748=_0x15eb87,_0x78a87=_0x19056[_0x108748(0x25a)]??{},_0x12fa8e=document[_0x108748(0x13c)](_0x108748(0x23e));_0x12fa8e['width']=0x80,_0x12fa8e['height']=0x80;const _0x3c5219=_0x12fa8e[_0x108748(0x1f8)]('2d'),_0x28246d=d(_0x78a87[_0x108748(0x169)],p),_0x44b6b9=String(_0x78a87[_0x108748(0x227)]??'')[_0x108748(0x207)](0x0,0x1);return _0x3c5219['fillStyle']='rgba(255,255,255,0.96)',_0x3c5219[_0x108748(0x1e0)](),_0x3c5219['arc'](0x40,0x40,0x32,0x0,0x2*Math['PI']),_0x3c5219[_0x108748(0x20a)](),_0x3c5219[_0x108748(0x165)]=_0x28246d,_0x3c5219[_0x108748(0x1e0)](),_0x3c5219[_0x108748(0x25f)](0x40,0x40,0x28,0x0,0x2*Math['PI']),_0x3c5219[_0x108748(0x20a)](),_0x3c5219[_0x108748(0x165)]=_0x108748(0x22e),_0x3c5219[_0x108748(0x159)]=_0x108748(0x21a),_0x3c5219['textAlign']='center',_0x3c5219['textBaseline']=_0x108748(0x249),_0x3c5219[_0x108748(0x13d)](_0x44b6b9||'-',0x40,0x42),_0x12fa8e;})(_0x4972c9['feature']));var _0x139922;(null==_0x307fe6?void 0x0:_0x307fe6['isTexture'])?_0x14d820=_0x307fe6:(_0x139922=_0x307fe6,Boolean(_0x139922&&'object'==typeof _0x139922&&(_0x139922['isTexture']||k['has'](String(_0x139922[_0x15eb87(0x184)]||'')[_0x15eb87(0x186)]())||'function'==typeof _0x139922[_0x15eb87(0x1f8)]))&&(_0x14d820=new _0x49cc0b['Texture'](_0x307fe6),_0x14d820['needsUpdate']=!0x0,_0x15eb87(0x25e)==typeof _0x307fe6[_0x15eb87(0x229)]&&!0x1===_0x307fe6[_0x15eb87(0x15a)]&&_0x307fe6['addEventListener']('load',()=>{const _0x332113=_0x15eb87;_0x14d820[_0x332113(0x18d)]=!0x0;},{'once':!0x0}))),_0x14d820['colorSpace']=_0x49cc0b[_0x15eb87(0x132)];const _0xc52063=new _0x49cc0b['SpriteMaterial']({'map':_0x14d820,'transparent':!0x0,'alphaTest':0.05,'depthTest':!0x1!==_0x4972c9[_0x15eb87(0x1d1)],'depthWrite':!0x1}),_0xfa3f98=new _0x49cc0b[(_0x15eb87(0x26b))](_0xc52063);return _0xfa3f98['scale'][_0x15eb87(0x206)](Number(_0x4972c9[_0x15eb87(0x15f)]||0x3),Number(_0x4972c9[_0x15eb87(0x15b)]||0x3),0x1),_0xfa3f98[_0x15eb87(0x1e7)]=Number(_0x4972c9[_0x15eb87(0x1e7)]||0x1),'string'==typeof _0x307fe6&&_0x307fe6&&new _0x49cc0b['TextureLoader']()[_0x15eb87(0x1ab)](_0x307fe6,_0x2b938=>{const _0x3072cd=_0x15eb87;var _0x506e96,_0x285ebf;_0x2b938['colorSpace']=_0x49cc0b[_0x3072cd(0x132)],null==(_0x285ebf=null==(_0x506e96=_0xc52063[_0x3072cd(0x19f)])?void 0x0:_0x506e96[_0x3072cd(0x21d)])||_0x285ebf['call'](_0x506e96),_0xc52063[_0x3072cd(0x19f)]=_0x2b938,_0xc52063[_0x3072cd(0x18d)]=!0x0;}),_0xfa3f98;},U=(_0x8537d8,_0x5c8fe7={})=>{const _0xf7868b=_0x487462;var _0x1bee1a,_0x1f79cb,_0x23bf9c,_0x4ee900;const _0x321191=_0x5c8fe7[_0xf7868b(0x1d4)]||(null==(_0x1f79cb=null==(_0x1bee1a=_0x5c8fe7[_0xf7868b(0x17a)])?void 0x0:_0x1bee1a['properties'])?void 0x0:_0x1f79cb[_0xf7868b(0x1d4)])||'icon',_0x21e88e=_0x5c8fe7[_0xf7868b(0x169)]||(null==(_0x4ee900=null==(_0x23bf9c=_0x5c8fe7[_0xf7868b(0x17a)])?void 0x0:_0x23bf9c[_0xf7868b(0x25a)])?void 0x0:_0x4ee900['color'])||w,_0x1d9e94=b({'layerType':_0x321191,'color':_0x21e88e,'image':null}),_0x5504b0=z(_0x1d9e94,{'height':_0x5c8fe7['height']||0x3,'depthTest':_0x5c8fe7['depthTest'],'renderOrder':_0x5c8fe7[_0xf7868b(0x1e7)]});return _0xf7868b(0x22a)==typeof _0x8537d8&&(_0x22947f=>{const _0x38889b=_0xf7868b;if(!_0x22947f)return;const _0x486c80=new Image();_0x486c80[_0x38889b(0x1b1)]=_0x38889b(0x1fb),_0x486c80[_0x38889b(0x182)]=()=>(_0x4cd63e=>{const _0x31728e=_0x38889b;var _0x1abdf1,_0x221300;const _0x40b8f0=b({'layerType':_0x321191,'color':_0x21e88e,'image':_0x4cd63e}),_0x500ea0=new _0x49cc0b['CanvasTexture'](_0x40b8f0);_0x500ea0['colorSpace']=_0x49cc0b['SRGBColorSpace'],null==(_0x221300=null==(_0x1abdf1=_0x5504b0['material']['map'])?void 0x0:_0x1abdf1['dispose'])||_0x221300['call'](_0x1abdf1),_0x5504b0[_0x31728e(0x17d)][_0x31728e(0x19f)]=_0x500ea0,_0x5504b0['material'][_0x31728e(0x18d)]=!0x0;const _0x590de7=Number(_0x5c8fe7[_0x31728e(0x15b)]||0x3);_0x5504b0[_0x31728e(0x250)][_0x31728e(0x206)](_0x40b8f0[_0x31728e(0x15f)]/_0x40b8f0[_0x31728e(0x15b)]*_0x590de7,_0x590de7,0x1);})(_0x486c80),_0x486c80[_0x38889b(0x24d)]=()=>{},_0x486c80[_0x38889b(0x213)]=_0x22947f;})(_0x8537d8),_0x5504b0;},V=_0x5d0878=>{const _0x5c5048=_0x487462;var _0x5b4c90,_0x7596c1,_0x5f46dc;_0x5d0878&&(null==(_0x5b4c90=_0x5d0878[_0x5c5048(0x1c5)])||_0x5b4c90[_0x5c5048(0x188)](_0x51333c=>V(_0x51333c)),null==(_0x5f46dc=null==(_0x7596c1=_0x5d0878['geometry'])?void 0x0:_0x7596c1[_0x5c5048(0x21d)])||_0x5f46dc['call'](_0x7596c1),(Array[_0x5c5048(0x225)](_0x5d0878[_0x5c5048(0x17d)])?_0x5d0878[_0x5c5048(0x17d)]:[_0x5d0878['material']]['filter'](Boolean))[_0x5c5048(0x188)](_0x37622c=>{const _0xf14649=_0x5c5048;var _0x25e469,_0xe5aea0,_0x30ed09;null==(_0xe5aea0=null==(_0x25e469=_0x37622c['map'])?void 0x0:_0x25e469['dispose'])||_0xe5aea0[_0xf14649(0x256)](_0x25e469),null==(_0x30ed09=_0x37622c['dispose'])||_0x30ed09['call'](_0x37622c);}));},TDMethods={'createAreaLabel':(_0x7143f1,_0x4af007,_0x58249b={})=>{const _0x5a8451=_0x487462,_0x332ee9=_0x7143f1['properties']||{},_0x340ddd=_0x332ee9[_0x5a8451(0x227)]||'';if(!_0x340ddd||!0x1===_0x332ee9['labelVisible'])return null;const [_0x206712,_0x232683]=((_0x1fec83={},_0x5b2baf)=>{const _0x3bb918=_0x5a8451;var _0xa2e51d;const _0x20a4e6=B(_0x1fec83['geometry'])['map'](([_0x174fbd=[]])=>((_0x1ce508=[])=>{const _0x93019c=_0x3a38;if(_0x1ce508['length']<0x3)return null;let _0x3527c4=0x0,_0x5e41da=0x0,_0x25e2b6=0x0;return _0x1ce508[_0x93019c(0x188)]((_0xe97988,_0x5a8f49)=>{const _0x3eaf59=_0x1ce508[(_0x5a8f49+0x1)%_0x1ce508['length']],_0x2fd82e=_0xe97988[0x0]*_0x3eaf59[0x1]-_0x3eaf59[0x0]*_0xe97988[0x1];_0x3527c4+=_0x2fd82e,_0x5e41da+=(_0xe97988[0x0]+_0x3eaf59[0x0])*_0x2fd82e,_0x25e2b6+=(_0xe97988[0x1]+_0x3eaf59[0x1])*_0x2fd82e;}),Math[_0x93019c(0x269)](_0x3527c4)<0.000001?null:{'area':Math[_0x93019c(0x269)](_0x3527c4/0x2),'center':[_0x5e41da/(0x3*_0x3527c4),_0x25e2b6/(0x3*_0x3527c4)]};})(((_0x40354c=[])=>{const _0x23ead6=_0x3a38;if(_0x40354c['length']<0x2)return _0x40354c;const _0x466c1d=_0x40354c[0x0],_0x52e4a8=_0x40354c[_0x40354c[_0x23ead6(0x1b0)]-0x1];return Number(null==_0x466c1d?void 0x0:_0x466c1d[0x0])===Number(null==_0x52e4a8?void 0x0:_0x52e4a8[0x0])&&Number(null==_0x466c1d?void 0x0:_0x466c1d[0x1])===Number(null==_0x52e4a8?void 0x0:_0x52e4a8[0x1])?_0x40354c['slice'](0x0,-0x1):_0x40354c;})(_0x174fbd)['map'](_0x2b4009=>_0x5b2baf(_0x2b4009))))['filter'](Boolean)[_0x3bb918(0x17c)]((_0x50b5a1,_0x28498b)=>_0x28498b['area']-_0x50b5a1[_0x3bb918(0x154)]);if(_0x20a4e6[0x0])return _0x20a4e6[0x0]['center'];const _0x50beac=L(null==(_0xa2e51d=_0x1fec83[_0x3bb918(0x198)])?void 0x0:_0xa2e51d['coordinates'])[_0x3bb918(0x19f)](_0x1e10ae=>_0x5b2baf(_0x1e10ae));if(!_0x50beac[_0x3bb918(0x1b0)])return[0x0,0x0];const _0xa2b219=_0x50beac[_0x3bb918(0x19f)](_0x4aa0c0=>_0x4aa0c0[0x0]),_0x252579=_0x50beac['map'](_0x534b53=>_0x534b53[0x1]);return[(Math[_0x3bb918(0x22c)](..._0xa2b219)+Math['max'](..._0xa2b219))/0x2,(Math['min'](..._0x252579)+Math['max'](..._0x252579))/0x2];})(_0x7143f1,_0x4af007),_0x2931dd=z(v(_0x340ddd,{'fontSize':_0x332ee9[_0x5a8451(0x197)]||_0x58249b['fontSize']||_0x5a8451(0x19d),'fontFamily':_0x332ee9['fontFamily']||_0x58249b[_0x5a8451(0x201)],'fontWeight':_0x332ee9[_0x5a8451(0x136)],'color':_0x332ee9[_0x5a8451(0x24c)]||_0x58249b['color']}),{'height':_0x58249b[_0x5a8451(0x15b)]||2.1});return _0x2931dd[_0x5a8451(0x196)][_0x5a8451(0x206)](_0x206712,Number(_0x58249b['y']||1.1),_0x232683),_0x2931dd[_0x5a8451(0x149)][_0x5a8451(0x17a)]=_0x7143f1,_0x2931dd;},'createAreaObject':(_0x56695,_0xedb12b,_0x24a99f={})=>{const _0x32d7c0=_0x487462,_0x46e5d1=new _0x49cc0b['Group']();return _0x46e5d1['add'](((_0x4b9482,_0x43096b,_0x12f7ee={})=>{const _0x14cc62=_0x3a38,_0x50deab=_0x4b9482['properties']||{},_0x2877a4=B(_0x4b9482[_0x14cc62(0x198)])['map'](_0x37eb9f=>G(_0x37eb9f,_0x43096b)),_0x3165e9=Number(_0x50deab[_0x14cc62(0x15b)]??_0x12f7ee['height']??0.08),_0x44bf97=new _0x49cc0b[(_0x14cc62(0x19e))](_0x2877a4,{'depth':Math['max'](_0x3165e9,0.01),'bevelEnabled':!0x1}),_0x28bed9=new _0x49cc0b[(_0x14cc62(0x23f))]({'color':x(_0x50deab[_0x14cc62(0x1af)]||_0x50deab['color'],_0x12f7ee[_0x14cc62(0x169)]||_0x14cc62(0x181)),'opacity':Number(_0x50deab[_0x14cc62(0x134)]??_0x12f7ee[_0x14cc62(0x219)]??0x1),'transparent':!0x0,'roughness':0.86,'metalness':0x0,'side':_0x49cc0b['DoubleSide']}),_0x323dd9=new _0x49cc0b[(_0x14cc62(0x204))](_0x44bf97,_0x28bed9);return _0x323dd9['rotation']['x']=-Math['PI']/0x2,_0x323dd9[_0x14cc62(0x257)]=!0x0,_0x323dd9[_0x14cc62(0x149)][_0x14cc62(0x17a)]=_0x4b9482,_0x323dd9;})(_0x56695,_0xedb12b,_0x24a99f)),_0x46e5d1['add'](((_0x36d8e3,_0x444822,_0x5ef9e8={})=>{const _0x175f4e=_0x3a38,_0x3ba0b8=new _0x49cc0b[(_0x175f4e(0x248))](),_0x2df20c=Number(_0x5ef9e8['y']??0.12);return B(_0x36d8e3[_0x175f4e(0x198)])['forEach'](_0x5c7f9c=>{const _0x4e7b76=_0x175f4e,[_0x516232=[]]=_0x5c7f9c;if(_0x516232[_0x4e7b76(0x1b0)]<0x2)return;const _0x596143=_0x516232[_0x4e7b76(0x19f)](_0x198916=>{const [_0xf6e0f5,_0x1cb301]=_0x444822(_0x198916);return new _0x49cc0b['Vector3'](_0xf6e0f5,_0x2df20c,_0x1cb301);}),_0x4d669c=new _0x49cc0b['LineLoop'](new _0x49cc0b['BufferGeometry']()['setFromPoints'](_0x596143),new _0x49cc0b['LineBasicMaterial']({'color':_0x5ef9e8[_0x4e7b76(0x169)]||'#64707a','transparent':!0x0,'opacity':Number(_0x5ef9e8['opacity']??0.72)}));_0x3ba0b8[_0x4e7b76(0x1c3)](_0x4d669c);}),_0x3ba0b8;})(_0x56695,_0xedb12b,{'y':Number(_0x24a99f[_0x32d7c0(0x15b)]??0.08)+0.02,'color':_0x24a99f[_0x32d7c0(0x1d2)]||'#ccc'})),_0x46e5d1['userData']['feature']=_0x56695,_0x46e5d1;},'createBusinessSprite':(_0x39da33,_0x37c38f,_0x2354b3={})=>{const _0x4bcbef=_0x487462;var _0xe7bfd;if(!j(_0x39da33))return null;const _0x1436a9=_0x39da33[_0x4bcbef(0x25a)]||{},_0x52a260=_0x1436a9['layerType']||_0x4bcbef(0x21e),_0x3e0b26=(null==(_0xe7bfd=_0x39da33[_0x4bcbef(0x149)])?void 0x0:_0xe7bfd['runtimeImageResource'])||_0x1436a9['markerUrl'],_0x9e6b9c=T(_0x39da33,_0x2354b3),_0x394ca3={'feature':_0x39da33,'layerType':_0x52a260,'color':_0x1436a9[_0x4bcbef(0x169)],'width':_0x4bcbef(0x13a)===_0x52a260?3.1:2.35,'height':'device'===_0x52a260?3.55:2.35,'depthTest':!0x0},_0x2378bb=_0x3e0b26?$(_0x3e0b26,_0x394ca3):U(_0x9e6b9c,_0x394ca3),[_0x1b6436,_0x3bc8e5]=_0x37c38f(_0x39da33[_0x4bcbef(0x198)][_0x4bcbef(0x193)]),_0x25632e=_0x4bcbef(0x13a)===_0x52a260?3.9:3.4;return _0x2378bb['position'][_0x4bcbef(0x206)](_0x1b6436,Number(_0x2354b3['y']??_0x25632e),_0x3bc8e5),_0x2378bb[_0x4bcbef(0x149)][_0x4bcbef(0x17a)]=_0x39da33,_0x2378bb;},'createCanvasSprite':z,'createMarkerSprite':U,'createPathLine':(_0x2090d8,_0x50ee3a,_0x5b8ba6={})=>{const _0x3d8a23=_0x487462;var _0x5ad911;if(!N(_0x2090d8))return null;const _0x3d9272=_0x2090d8['geometry'][_0x3d8a23(0x193)]||[];if(_0x3d9272['length']<0x2)return null;const _0x3bf992=Number(_0x5b8ba6['y']??0.22),_0x1966db=_0x3d9272[_0x3d8a23(0x19f)](_0x1514fd=>{const [_0x35c56c,_0x33368f]=_0x50ee3a(_0x1514fd);return new _0x49cc0b['Vector3'](_0x35c56c,_0x3bf992,_0x33368f);}),_0x202aed=new _0x49cc0b[(_0x3d8a23(0x170))](new _0x49cc0b['BufferGeometry']()[_0x3d8a23(0x212)](_0x1966db),new _0x49cc0b[(_0x3d8a23(0x262))]({'color':x(null==(_0x5ad911=_0x2090d8[_0x3d8a23(0x25a)])?void 0x0:_0x5ad911[_0x3d8a23(0x169)],'#3388ff'),'transparent':!0x0,'opacity':0.9}));return _0x202aed['userData']['feature']=_0x2090d8,_0x202aed;},'createProjection':(_0x288421=[],_0x3c8000={})=>{const _0x3dc1b5=_0x487462,_0x1675c5=F(_0x288421),_0x34a996=Number(_0x3c8000[_0x3dc1b5(0x250)]||_0x3c8000['mercatorScale']||0x2af8),_0x4a5e0b=E(_0x1675c5['center']),_0x3d4832=(_0x449e48=[])=>{const _0x171694=E(_0x449e48);return[(_0x171694[0x0]-_0x4a5e0b[0x0])*_0x34a996,-(_0x171694[0x1]-_0x4a5e0b[0x1])*_0x34a996];};_0x3d4832['invert']=([_0x3b2aa6,_0x412bbd]=[])=>(([_0x1b49cb,_0x16d6a9]=[])=>[O(_0x1b49cb),O(0x2*Math['atan'](Math['exp'](_0x16d6a9))-Math['PI']/0x2)])([Number(_0x3b2aa6||0x0)/_0x34a996+_0x4a5e0b[0x0],-Number(_0x412bbd||0x0)/_0x34a996+_0x4a5e0b[0x1]]);const _0x38b340=_0x288421[_0x3dc1b5(0x143)](_0x3ccd23=>{var _0x3eb08d;return L(null==(_0x3eb08d=_0x3ccd23['geometry'])?void 0x0:_0x3eb08d['coordinates']);})[_0x3dc1b5(0x19f)](_0x205dfb=>_0x3d4832(_0x205dfb)),_0x222ed6=_0x38b340['map'](_0xe43866=>_0xe43866[0x0]),_0x14bd1e=_0x38b340[_0x3dc1b5(0x19f)](_0x41597c=>_0x41597c[0x1]),_0x3d39f8=_0x222ed6['length']?Math['max'](..._0x222ed6)-Math[_0x3dc1b5(0x22c)](..._0x222ed6):0x2,_0x47513f=_0x14bd1e['length']?Math[_0x3dc1b5(0x178)](..._0x14bd1e)-Math[_0x3dc1b5(0x22c)](..._0x14bd1e):0x2;return _0x3d4832[_0x3dc1b5(0x26e)]=_0x1675c5,_0x3d4832[_0x3dc1b5(0x250)]=_0x34a996,_0x3d4832['worldSize']=Math['max'](_0x3d39f8,_0x47513f,0x2),_0x3d4832;},'createRaycaster':({dom:_0x5cb251,camera:_0x5988f5,objects:_0x4923a1},_0x33644e)=>{const _0xe14d68=_0x487462;let _0x4cb4e2=0x0,_0x370f8e=0x0;const _0xcdf16b=_0x1f7a7e=>{const _0x11fbad=_0x3a38;_0x4cb4e2=_0x1f7a7e['pageX'],_0x370f8e=_0x1f7a7e[_0x11fbad(0x1e4)];},_0x40f119=_0xfea14f=>{const _0x3def6c=_0x3a38;var _0x3b5783;if(Math['abs'](_0xfea14f['pageX']-_0x4cb4e2)>0x6||Math['abs'](_0xfea14f['pageY']-_0x370f8e)>0x6)return;const _0x15b264=_0x5cb251[_0x3def6c(0x222)](),_0x58fcdc=new _0x49cc0b[(_0x3def6c(0x1a1))]((_0xfea14f[_0x3def6c(0x19c)]-_0x15b264[_0x3def6c(0x177)])/_0x15b264[_0x3def6c(0x15f)]*0x2-0x1,-(_0xfea14f['clientY']-_0x15b264[_0x3def6c(0x185)])/_0x15b264['height']*0x2+0x1),_0x2cf10a=new _0x49cc0b[(_0x3def6c(0x1bf))]();_0x2cf10a[_0x3def6c(0x17f)](_0x58fcdc,_0x5988f5);const _0x2801f9=_0x2cf10a[_0x3def6c(0x1f7)](_0x4923a1,!0x0);_0x33644e(null==(_0x3b5783=_0x2801f9[0x0])?void 0x0:_0x3b5783['object']);};return _0x5cb251[_0xe14d68(0x229)]('mousedown',_0xcdf16b),_0x5cb251['addEventListener'](_0xe14d68(0x24e),_0x40f119),()=>{const _0x114144=_0xe14d68;_0x5cb251[_0x114144(0x14b)]('mousedown',_0xcdf16b),_0x5cb251[_0x114144(0x14b)]('mouseup',_0x40f119);};},'createTextCanvas':v,'createTextureSprite':$,'createWallMesh':A,'createWallObject':(_0x2c2d3c,_0x14d88f,_0x5c6bd5={})=>{const _0x18934c=_0x487462,_0x22ca32=new _0x49cc0b[(_0x18934c(0x248))]();return _0x22ca32['add'](A(_0x2c2d3c,_0x14d88f,_0x5c6bd5)),_0x22ca32['userData']['feature']=_0x2c2d3c,_0x22ca32;},'disposeChildren':_0x183954=>{_0x183954&&[..._0x183954['children']]['forEach'](_0x556c96=>{var _0x416c04;V(_0x556c96),null==(_0x416c04=_0x556c96['parent'])||_0x416c04['remove'](_0x556c96);});},'disposeObject':V,'flattenCoordinates':L,'getFeatureBounds':F,'getFeatureCenter':(_0x189920={})=>{const _0x452860=_0x487462;var _0x50df1d;const _0x5c2014=L(null==(_0x50df1d=_0x189920[_0x452860(0x198)])?void 0x0:_0x50df1d['coordinates']);if(!_0x5c2014['length'])return[0x0,0x0];const _0x31107f=_0x5c2014['reduce']((_0x5c8fd9,_0x4bf310)=>[_0x5c8fd9[0x0]+Number(_0x4bf310[0x0]||0x0),_0x5c8fd9[0x1]+Number(_0x4bf310[0x1]||0x0)],[0x0,0x0]);return[_0x31107f[0x0]/_0x5c2014['length'],_0x31107f[0x1]/_0x5c2014['length']];},'isLineFeature':N,'isPointFeature':j,'isPolygonFeature':(_0x1a0b1c={})=>{const _0x14a115=_0x487462;var _0x5a845d;return['Polygon',_0x14a115(0x199)]['includes'](null==(_0x5a845d=_0x1a0b1c[_0x14a115(0x198)])?void 0x0:_0x5a845d[_0x14a115(0x208)]);},'normalizeColor':x,'normalizeEditorData':(_0x3c3653={})=>(null==_0x3c3653?void 0x0:_0x3c3653[_0x487462(0x146)])?{'schemaVersion':_0x3c3653['schemaVersion'],'project':_0x3c3653['project']||{},'coordinateSystem':_0x3c3653['coordinateSystem']||{},'view':_0x3c3653[_0x487462(0x1e2)]||{},'baseMap':P(_0x3c3653['baseMap']),'business':P(_0x3c3653['business'])}:'FeatureCollection'===(null==_0x3c3653?void 0x0:_0x3c3653[_0x487462(0x208)])?{'schemaVersion':'geojson','project':{},'coordinateSystem':{},'view':{},'baseMap':P(_0x3c3653),'business':P()}:{'schemaVersion':'empty','project':{},'coordinateSystem':{},'view':{},'baseMap':P(),'business':P()},'normalizeFeatureCollection':P,'renderDeviceMarkerCanvas':y,'renderIconMarkerCanvas':f,'resolveResourceIconUrl':T},_={'class':_0x487462(0x138),'aria-label':'设备分类'},W=[_0x487462(0x1fd),_0x487462(0x232)],H=[_0x487462(0x213),_0x487462(0x205),_0x487462(0x1b6)],K={'class':_0x487462(0x247)},Y=(_0x16f3d2=>{const _0x492d8a=_0x487462,_0x2bd8bb=_0x16f3d2['__vccOpts']||_0x16f3d2;for(const [_0x4f8de0,_0x535a5f]of[['__scopeId',_0x492d8a(0x145)]])_0x2bd8bb[_0x4f8de0]=_0x535a5f;return _0x2bd8bb;})({'__name':_0x487462(0x231),'props':{'categories':{'type':Array,'default':()=>[]},'activeKey':{'type':String,'default':''}},'emits':['change'],'setup'(_0x59d24c){const _0xfce3f=_0x487462,_0x55b6da=_0x1b03bb({});return(_0x5a4401,_0x75dca6)=>(_0x2dfdab(),_0x6bfd82(_0xfce3f(0x200),_,[(_0x2dfdab(!0x0),_0x6bfd82(_0x2f181e,null,_0x556594(_0x59d24c['categories'],_0x29a122=>(_0x2dfdab(),_0x6bfd82(_0xfce3f(0x1ee),{'key':_0x29a122['key'],'type':'button','class':_0x3d7a94([_0xfce3f(0x171),{'active':_0x29a122[_0xfce3f(0x179)]===_0x59d24c['activeKey']}]),'title':_0x29a122['name'],'onClick':_0x5124c5=>_0x5a4401['$emit'](_0xfce3f(0x1ef),_0x29a122['key'])},[_0x29a122[_0xfce3f(0x1d3)]&&!_0x55b6da[_0x29a122[_0xfce3f(0x179)]]?(_0x2dfdab(),_0x6bfd82(_0xfce3f(0x174),{'key':0x0,'class':'td-device-tabs__icon','src':_0x29a122[_0xfce3f(0x1d3)],'alt':_0x29a122['name'],'onError':_0x1a39e0=>_0x55b6da[_0x29a122[_0xfce3f(0x179)]]=!0x0},null,0x28,H)):(_0x2dfdab(),_0x6bfd82('span',{'key':0x1,'class':'td-device-tabs__dot','style':_0x2c3e2a({'backgroundColor':_0x29a122[_0xfce3f(0x169)]||_0xfce3f(0x211)})},null,0x4)),_0x56c6c9('span',K,_0x421b68(_0x29a122[_0xfce3f(0x227)]),0x1)],0xa,W))),0x80))]));}}),X={'targetSize':0x60,'areaHeight':0.08,'wallHeight':2.5,'showAreaLabels':!0x0,'showIconSprites':!0x0,'showPassageSprites':!0x0,'showDeviceSprites':!0x0,'showPaths':!0x1,'background':0xf7fafc},J=_0x2ed00d=>_0x2ed00d&&'object'==typeof _0x2ed00d&&!Array['isArray'](_0x2ed00d),q=[_0x487462(0x1a4),_0x487462(0x147),'iconUrl','url','icon',_0x487462(0x213),_0x487462(0x1eb)],Q=new Set(['img',_0x487462(0x23e),'video']),Z=_0x297be7=>!(!_0x297be7||_0x487462(0x1a0)!=typeof _0x297be7)&&Boolean(_0x297be7[_0x487462(0x1ba)]||Q[_0x487462(0x1c4)](String(_0x297be7['tagName']||'')[_0x487462(0x186)]())||_0x487462(0x25e)==typeof _0x297be7['getContext']),ee=(_0xef1db7,_0x1ac1e3)=>{const _0x494dee=_0x487462,_0x1d50e5=(_0x29d15f=>{const _0x1ef2c7=_0x3a38;if(!_0x29d15f)return null;if('string'==typeof _0x29d15f)return _0x29d15f['trim']()||null;if(Z(_0x29d15f))return _0x29d15f;if(!J(_0x29d15f))return null;for(const _0x30fce0 of q){const _0x1ce66f=_0x29d15f[_0x30fce0];if('string'==typeof _0x1ce66f&&_0x1ce66f[_0x1ef2c7(0x230)]())return _0x1ce66f[_0x1ef2c7(0x230)]();if(Z(_0x1ce66f))return _0x1ce66f;}return null;})(_0x1ac1e3);return _0x1d50e5?(_0xef1db7[_0x494dee(0x25a)]=_0xef1db7['properties']||{},_0xef1db7['userData']={..._0xef1db7[_0x494dee(0x149)]||{}},_0x494dee(0x22a)==typeof _0x1d50e5?(_0xef1db7[_0x494dee(0x25a)][_0x494dee(0x1a4)]=_0x1d50e5,delete _0xef1db7['userData'][_0x494dee(0x214)]):(delete _0xef1db7[_0x494dee(0x25a)]['markerUrl'],_0xef1db7[_0x494dee(0x149)]['runtimeImageResource']=_0x1d50e5),_0xef1db7):_0xef1db7;},te=(_0x261bef={})=>{const _0x5bea68=_0x487462,{userData:_0x8ad270,..._0x2f5a5f}=_0x261bef||{},_0x296a8c=JSON['parse'](JSON[_0x5bea68(0x1f9)](_0x2f5a5f));return _0x8ad270&&(_0x296a8c['userData']={..._0x8ad270}),_0x296a8c;},re=(_0x394b36=_0x487462(0x21e))=>_0x394b36+'-'+Date[_0x487462(0x140)]()+'-'+Math['random']()[_0x487462(0x1de)](0x24)[_0x487462(0x207)](0x2,0x8),ie=_0x821e41=>_0x821e41<0.5?0x4*_0x821e41*_0x821e41*_0x821e41:0x1-Math['pow'](-0x2*_0x821e41+0x2,0x3)/0x2,oe=_0x3aca4f=>0x1-Math['pow'](0x1-_0x3aca4f,0x3);class TDScene{constructor(_0x1558bc,_0x4b0e7b,_0x50e3da={}){const _0x575b7b=_0x487462;if(!_0x1558bc)throw new Error(_0x575b7b(0x16b));this[_0x575b7b(0x137)]=_0x1558bc,this[_0x575b7b(0x168)]={...X,..._0x50e3da},this['businessObjects']=[],this[_0x575b7b(0x1b4)]=[],this[_0x575b7b(0x1a2)]='',this['cleanups']={},this['positionTweens']=[],this['cameraTweens']=[],this[_0x575b7b(0x1df)](),this[_0x575b7b(0x1b8)](),this[_0x575b7b(0x183)](),this['startRenderLoop'](),_0x4b0e7b&&this['setData'](_0x4b0e7b,_0x50e3da),this['boundResize']=this[_0x575b7b(0x221)][_0x575b7b(0x1e8)](this),window['addEventListener']('resize',this['boundResize']);}['initScene'](){const _0x17c750=_0x487462,_0x21e15a=Math['max'](this['dom']['clientWidth'],0x1),_0x558580=Math[_0x17c750(0x178)](this[_0x17c750(0x137)][_0x17c750(0x14a)],0x1);this['scene']=new _0x49cc0b['Scene'](),this[_0x17c750(0x218)][_0x17c750(0x13e)]=new _0x49cc0b[(_0x17c750(0x161))](this[_0x17c750(0x168)][_0x17c750(0x13e)]),this[_0x17c750(0x1c0)]=new _0x49cc0b[(_0x17c750(0x271))](0x3c,_0x21e15a/_0x558580,0.1,0xbb8),this['camera']['position'][_0x17c750(0x206)](0x0,0x48,0x58),this[_0x17c750(0x18c)]=new _0x49cc0b['WebGLRenderer']({'antialias':!0x0,'logarithmicDepthBuffer':!0x0}),this['renderer'][_0x17c750(0x1f3)](_0x21e15a,_0x558580),this['renderer'][_0x17c750(0x1ac)](Math['min'](window[_0x17c750(0x1ff)]||0x1,0x2)),this[_0x17c750(0x18c)][_0x17c750(0x1e1)]=_0x49cc0b['SRGBColorSpace'],this[_0x17c750(0x137)][_0x17c750(0x1f1)](this[_0x17c750(0x18c)][_0x17c750(0x217)]),this[_0x17c750(0x18b)]=new _0x37b03a(this['camera'],this['renderer'][_0x17c750(0x217)]),this['controls']['enableDamping']=!0x0,this[_0x17c750(0x18b)]['dampingFactor']=0.08,this[_0x17c750(0x18b)][_0x17c750(0x1f6)]=Math['PI']/2.25,this[_0x17c750(0x18b)][_0x17c750(0x236)]=0x8,this[_0x17c750(0x18b)]['maxDistance']=0x1f4;}['initLights'](){const _0x3bd2e3=_0x487462;this['scene'][_0x3bd2e3(0x1c3)](new _0x49cc0b[(_0x3bd2e3(0x14f))](0xffffff,0.48)),this['scene'][_0x3bd2e3(0x1c3)](new _0x49cc0b[(_0x3bd2e3(0x135))](0xeaf5ff,0xc8d3df,1.16));const _0x2eb7cf=new _0x49cc0b['DirectionalLight'](0xffffff,2.2);_0x2eb7cf['position'][_0x3bd2e3(0x206)](0x24,0x40,-0x20),this['scene'][_0x3bd2e3(0x1c3)](_0x2eb7cf);const _0x2f143e=new _0x49cc0b['DirectionalLight'](0xbfdcff,0.62);_0x2f143e[_0x3bd2e3(0x196)][_0x3bd2e3(0x206)](-0x2a,0x24,0x30),this[_0x3bd2e3(0x218)][_0x3bd2e3(0x1c3)](_0x2f143e);}[_0x487462(0x183)](){const _0x3e7c26=_0x487462;this[_0x3e7c26(0x1ce)]=new _0x49cc0b[(_0x3e7c26(0x248))](),this['labelGroup']=new _0x49cc0b[(_0x3e7c26(0x248))](),this['businessGroup']=new _0x49cc0b[(_0x3e7c26(0x248))](),this['pathGroup']=new _0x49cc0b[(_0x3e7c26(0x248))](),this[_0x3e7c26(0x218)]['add'](this[_0x3e7c26(0x1ce)],this[_0x3e7c26(0x1cd)],this[_0x3e7c26(0x1db)],this[_0x3e7c26(0x15c)]);}['startRenderLoop'](){const _0x51e572=_0x487462;var _0x39331b,_0x4756a9;this['updatePositionTweens'](),this['updateCameraTweens'](),null==(_0x4756a9=null==(_0x39331b=this['controls'])?void 0x0:_0x39331b['update'])||_0x4756a9['call'](_0x39331b),this['animationFrameId']=requestAnimationFrame(()=>this[_0x51e572(0x209)]()),this['renderer']['render'](this['scene'],this[_0x51e572(0x1c0)]);}['resize'](){const _0x321691=_0x487462;if(!this[_0x321691(0x18c)]||!this[_0x321691(0x1c0)])return;const _0x135740=Math[_0x321691(0x178)](this['dom']['clientWidth'],0x1),_0xeba7e=Math['max'](this[_0x321691(0x137)][_0x321691(0x14a)],0x1);this['camera']['aspect']=_0x135740/_0xeba7e,this[_0x321691(0x1c0)][_0x321691(0x233)](),this[_0x321691(0x18c)]['setSize'](_0x135740,_0xeba7e);}[_0x487462(0x23a)](_0x145044,_0x2134d3={}){const _0x48dfa7=_0x487462;var _0x1b922a;this['options']={...this[_0x48dfa7(0x168)],..._0x2134d3},this[_0x48dfa7(0x25d)](),this['data']=TDMethods['normalizeEditorData'](_0x145044);const _0x10010f=this[_0x48dfa7(0x1e9)]['baseMap'][_0x48dfa7(0x1e5)],_0x5a9d40=this[_0x48dfa7(0x1e9)]['business']['features'],_0x2b439a=[..._0x10010f,..._0x5a9d40];this[_0x48dfa7(0x220)]=TDMethods[_0x48dfa7(0x151)](_0x2b439a,{'targetSize':this['options']['targetSize'],'metersPerUnit':(null==(_0x1b922a=this[_0x48dfa7(0x1e9)][_0x48dfa7(0x265)])?void 0x0:_0x1b922a[_0x48dfa7(0x195)])||this['options'][_0x48dfa7(0x195)]||0x1,'scale':this['options']['scale'],'mercatorScale':this['options']['mercatorScale']}),this[_0x48dfa7(0x1bb)](_0x10010f),this['renderBusinessLayer'](_0x5a9d40),this['setupDeviceLegend'](_0x5a9d40),this[_0x48dfa7(0x241)]();}[_0x487462(0x1bb)](_0x58a94a=[]){const _0x1bdd82=_0x487462;_0x58a94a['filter'](TDMethods['isPolygonFeature'])[_0x1bdd82(0x188)](_0x4be104=>{const _0x27a7e3=_0x1bdd82,_0x3c9331=_0x4be104[_0x27a7e3(0x25a)]||{},_0x4bd879=_0x3c9331['__previewGeometryVisible']??!0x1!==_0x3c9331['visible'],_0x548327=_0x3c9331[_0x27a7e3(0x237)]??!0x1!==_0x3c9331['labelVisible'];if(_0x4bd879){const _0x370254=Boolean(_0x3c9331[_0x27a7e3(0x208)])?TDMethods['createWallObject'](_0x4be104,this['projection'],{'height':this['options'][_0x27a7e3(0x173)]}):TDMethods[_0x27a7e3(0x245)](_0x4be104,this[_0x27a7e3(0x220)],{'height':this[_0x27a7e3(0x168)]['areaHeight']});this[_0x27a7e3(0x1ce)][_0x27a7e3(0x1c3)](_0x370254);}if(this['options'][_0x27a7e3(0x142)]&&_0x548327){const _0x666484=TDMethods['createAreaLabel'](_0x4be104,this['projection'],{'y':Number(this[_0x27a7e3(0x168)][_0x27a7e3(0x266)]||0x2)});_0x666484&&this['labelGroup'][_0x27a7e3(0x1c3)](_0x666484);}});}['renderBusinessLayer'](_0x911c62=[]){const _0x105b8d=_0x487462;this['businessObjects']=[],_0x911c62[_0x105b8d(0x188)](_0x13a8b6=>{const _0x18069f=_0x105b8d;if(this[_0x18069f(0x168)]['showPaths']&&TDMethods['isLineFeature'](_0x13a8b6)){const _0x2c4e4a=TDMethods['createPathLine'](_0x13a8b6,this[_0x18069f(0x220)],{'y':this['options'][_0x18069f(0x255)]||0.22});return void(_0x2c4e4a&&this[_0x18069f(0x15c)]['add'](_0x2c4e4a));}if(!TDMethods['isPointFeature'](_0x13a8b6)||!this['isPointSpriteVisible'](_0x13a8b6))return;const _0x2cf52a=this['createSceneBusinessSprite'](_0x13a8b6);_0x2cf52a&&(this[_0x18069f(0x1db)]['add'](_0x2cf52a),this[_0x18069f(0x1b9)][_0x18069f(0x1f0)](_0x2cf52a));});}['createSceneBusinessSprite'](_0x36cb28){const _0x5ddddb=_0x487462,_0x38813a=this['options'][_0x5ddddb(0x173)]-0.5;return TDMethods[_0x5ddddb(0x24b)](_0x36cb28,this['projection'],{'y':_0x38813a,'resourceBaseUrl':this[_0x5ddddb(0x168)][_0x5ddddb(0x1be)],'resourceExtension':this['options'][_0x5ddddb(0x17e)],'resourceFolders':this[_0x5ddddb(0x168)]['resourceFolders'],'resolveResourcePath':this['options'][_0x5ddddb(0x133)]})||null;}['isPointSpriteVisible'](_0x3b5702){const _0xa2cb2f=_0x487462,_0x2e5c57=((_0x296a36={})=>{const _0x590f51=_0x3a38;var _0x92303a;const _0x3a598f=(null==(_0x92303a=_0x296a36[_0x590f51(0x25a)])?void 0x0:_0x92303a[_0x590f51(0x1d4)])||_0x590f51(0x21e);return _0x590f51(0x13a)===_0x3a598f?'device':'passage'===_0x3a598f||'facility'===_0x3a598f?'passage':_0x590f51(0x21e);})(_0x3b5702);return!0x1!=={'icon':this[_0xa2cb2f(0x168)]['showIconSprites'],'passage':this['options']['showPassageSprites'],'device':this[_0xa2cb2f(0x168)]['showDeviceSprites']}[_0x2e5c57];}['switchMap'](_0x4ce612,_0x9e046b={}){this['setData'](_0x4ce612,_0x9e046b);}[_0x487462(0x234)](_0x811c3b=[]){const _0x385cae=_0x487462;if(this[_0x385cae(0x1b4)]=this['collectDeviceCategories'](_0x811c3b),!this['options']['showDeviceSprites']||!this[_0x385cae(0x1b4)]['length'])return this[_0x385cae(0x1a2)]='',this[_0x385cae(0x22d)](),void this[_0x385cae(0x1d9)]();const _0x5d7ed2=String(this[_0x385cae(0x168)]['deviceCategoryKey']||'');this['activeDeviceCategoryKey']=this[_0x385cae(0x1b4)]['some'](_0x3c92d3=>_0x3c92d3['key']===_0x5d7ed2)?_0x5d7ed2:this[_0x385cae(0x1b4)][0x0]['key'],this[_0x385cae(0x1c1)](),this[_0x385cae(0x1d9)]();}[_0x487462(0x172)](_0x4aa80e=[]){const _0x5696a7=_0x487462,_0x490e52=new Map();return _0x4aa80e['forEach'](_0x472c89=>{const _0x27a1f6=_0x3a38,_0x5cbd4f=_0x472c89['properties']||{};if('device'!==_0x5cbd4f[_0x27a1f6(0x1d4)])return;const _0x5ed2cf=String(_0x5cbd4f['categoryCode']||'');if(!_0x5ed2cf)return;const _0x5f144b=_0x490e52['get'](_0x5ed2cf);if(_0x5f144b)return _0x5f144b[_0x27a1f6(0x20e)]+=0x1,void(_0x5f144b[_0x27a1f6(0x1d3)]||(_0x5f144b['iconUrl']=this[_0x27a1f6(0x1e3)](_0x472c89)));_0x490e52[_0x27a1f6(0x206)](_0x5ed2cf,{'key':_0x5ed2cf,'name':String(_0x5cbd4f['categoryName']||_0x5cbd4f['name']||'设备'),'iconUrl':this[_0x27a1f6(0x1e3)](_0x472c89),'color':_0x5cbd4f[_0x27a1f6(0x169)]||'#16BCC2','count':0x1});}),[..._0x490e52[_0x5696a7(0x16e)]()];}resolveDeviceCategoryIcon(_0x181cf3={}){const _0x516743=_0x487462,_0x4deca5=_0x181cf3[_0x516743(0x25a)]||{},_0x3dfc7c=_0x4deca5['categoryIconUrl']||_0x4deca5[_0x516743(0x1d3)]||'';return _0x3dfc7c?this['normalizeLegendIconUrl'](_0x3dfc7c):TDMethods[_0x516743(0x1c6)](_0x181cf3,{'resourceBaseUrl':this[_0x516743(0x168)][_0x516743(0x1be)],'resourceExtension':this[_0x516743(0x168)]['resourceExtension'],'resourceFolders':this['options']['resourceFolders'],'resolveResourcePath':this[_0x516743(0x168)]['resolveResourcePath']});}normalizeLegendIconUrl(_0x34bfe8){const _0x573bcc=_0x487462;if(!_0x34bfe8)return'';if(/^(https?:)?\/\//[_0x573bcc(0x1e6)](_0x34bfe8)||/^(data|blob):/i[_0x573bcc(0x1e6)](_0x34bfe8)||_0x34bfe8[_0x573bcc(0x1f5)]('/'))return _0x34bfe8;const _0x105c2f=String(this[_0x573bcc(0x168)][_0x573bcc(0x1be)]||'')[_0x573bcc(0x1fc)](/\/$/,'');return _0x105c2f?_0x105c2f+'/'+_0x34bfe8:_0x34bfe8;}[_0x487462(0x1c1)](){const _0x209dfe=_0x487462;if(this['removeDeviceLegend'](),!this['options']['showDeviceSprites']||!this['deviceCategories']['length'])return;this['ensureDomOverlayContext']();const _0x4608c3=document['createElement'](_0x209dfe(0x1ca));this['dom'][_0x209dfe(0x1f1)](_0x4608c3),this['deviceLegendApp']=_0x1da8e3(Y,{'categories':this[_0x209dfe(0x1b4)],'activeKey':this[_0x209dfe(0x1a2)],'onChange':_0x9a6b1a=>this['setDeviceCategory'](_0x9a6b1a)}),this[_0x209dfe(0x14c)]['mount'](_0x4608c3),this[_0x209dfe(0x1f4)]=_0x4608c3;}ensureDomOverlayContext(){const _0x3f9995=_0x487462,_0x2ce380=window['getComputedStyle'](this[_0x3f9995(0x137)])['position'];_0x2ce380&&_0x3f9995(0x20c)!==_0x2ce380||(this['dom']['style'][_0x3f9995(0x196)]=_0x3f9995(0x25b)),this[_0x3f9995(0x137)][_0x3f9995(0x21c)]['overflow']||(this['dom'][_0x3f9995(0x21c)]['overflow']=_0x3f9995(0x1a5));}['removeDeviceLegend'](){const _0x3ef917=_0x487462;var _0x2fbc96,_0x11accd;null==(_0x2fbc96=this['deviceLegendApp'])||_0x2fbc96['unmount'](),this[_0x3ef917(0x14c)]=null,null==(_0x11accd=this['deviceLegendEl'])||_0x11accd[_0x3ef917(0x21f)](),this[_0x3ef917(0x1f4)]=null;}[_0x487462(0x1d9)](){this['businessObjects']['forEach'](_0x1008a5=>{const _0x29ff98=_0x3a38;var _0x4742df;const _0x417cc1=null==(_0x4742df=_0x1008a5['userData'])?void 0x0:_0x4742df[_0x29ff98(0x17a)],_0x15c871=(null==_0x417cc1?void 0x0:_0x417cc1[_0x29ff98(0x25a)])||{};_0x29ff98(0x13a)===_0x15c871['layerType']?_0x1008a5[_0x29ff98(0x203)]=!0x1!==this[_0x29ff98(0x168)][_0x29ff98(0x25c)]&&(!this[_0x29ff98(0x1a2)]||String(_0x15c871[_0x29ff98(0x226)]||'')===this['activeDeviceCategoryKey']):_0x1008a5['visible']=!0x0;});}[_0x487462(0x23b)](_0x2e8d90){const _0x284c5d=_0x487462,_0x4916a7=String(_0x2e8d90||'');return!!this[_0x284c5d(0x1b4)][_0x284c5d(0x192)](_0x35748b=>_0x35748b[_0x284c5d(0x179)]===_0x4916a7)&&(this['activeDeviceCategoryKey']=_0x4916a7,this[_0x284c5d(0x1d9)](),this[_0x284c5d(0x1c1)](),!0x0);}resolveRuntimePosition(_0x3286af,_0x39eb23=0x0){const _0x64599b=_0x487462;if(!_0x3286af)return null;const _0x484e37=Number(_0x39eb23||this['options']['wallHeight']-0.5);if(_0x3286af['isVector3']){const _0x1d5b46=_0x3286af['clone']();return Number['isFinite'](_0x1d5b46['y'])||(_0x1d5b46['y']=_0x484e37),{'world':_0x1d5b46,'coordinate':this[_0x64599b(0x1fa)](_0x1d5b46['x'],_0x1d5b46['z'])};}if(Array[_0x64599b(0x225)](_0x3286af)){if(_0x3286af[_0x64599b(0x1b0)]>=0x3){const _0x866fd7=new _0x49cc0b['Vector3'](Number(_0x3286af[0x0]||0x0),Number(_0x3286af[0x1]??_0x484e37),Number(_0x3286af[0x2]||0x0));return{'world':_0x866fd7,'coordinate':this['worldToMapCoordinate'](_0x866fd7['x'],_0x866fd7['z'])};}if(_0x3286af[_0x64599b(0x1b0)]>=0x2&&this[_0x64599b(0x220)]){const _0x5ede28=[Number(_0x3286af[0x0]||0x0),Number(_0x3286af[0x1]||0x0)],[_0x3ab5f3,_0x4ac1b6]=this[_0x64599b(0x220)](_0x5ede28);return{'world':new _0x49cc0b['Vector3'](_0x3ab5f3,_0x484e37,_0x4ac1b6),'coordinate':_0x5ede28};}}if(J(_0x3286af)){const _0xdf834b=_0x3286af[_0x64599b(0x16c)]||_0x3286af[_0x64599b(0x193)]||_0x3286af['point']||_0x3286af[_0x64599b(0x252)];if(_0xdf834b)return this[_0x64599b(0x15d)](_0xdf834b,_0x39eb23);if(_0x3286af['position']&&_0x3286af[_0x64599b(0x196)]!==_0x3286af)return this[_0x64599b(0x15d)](_0x3286af[_0x64599b(0x196)],_0x39eb23);if(Number[_0x64599b(0x187)](Number(_0x3286af[_0x64599b(0x162)]))&&Number['isFinite'](Number(_0x3286af[_0x64599b(0x176)]))&&this['projection'])return this[_0x64599b(0x15d)]([_0x3286af['lng'],_0x3286af[_0x64599b(0x176)]],_0x39eb23);if(Number[_0x64599b(0x187)](Number(_0x3286af['x']))&&Number['isFinite'](Number(_0x3286af['z']))){const _0x3c8a9f=new _0x49cc0b[(_0x64599b(0x19b))](Number(_0x3286af['x']),Number(_0x3286af['y']??_0x484e37),Number(_0x3286af['z']));return{'world':_0x3c8a9f,'coordinate':this['worldToMapCoordinate'](_0x3c8a9f['x'],_0x3c8a9f['z'])};}if(Number[_0x64599b(0x187)](Number(_0x3286af['x']))&&Number[_0x64599b(0x187)](Number(_0x3286af['y']))&&this['projection'])return this['resolveRuntimePosition']([_0x3286af['x'],_0x3286af['y']],_0x39eb23);}return null;}createIcon(_0x5be322,_0x560da2,_0x1eb28e={},_0x4e01ec={}){const _0x1dea10=_0x487462,_0x75ead0=this[_0x1dea10(0x15d)](_0x560da2,_0x4e01ec['y']);if(!_0x75ead0)return null;const _0x2b6c8d=J(_0x1eb28e)?_0x1eb28e:{'payload':_0x1eb28e},_0x13b2dc=_0x4e01ec[_0x1dea10(0x1d4)]||_0x2b6c8d[_0x1dea10(0x1d4)]||_0x1dea10(0x21e),_0x2d9703={'layerType':_0x13b2dc,..._0x2b6c8d},_0x422669={'id':_0x4e01ec['id']||_0x2d9703['id']||re(_0x13b2dc),'type':_0x1dea10(0x1d7),'geometry':{'type':'Point','coordinates':_0x75ead0[_0x1dea10(0x16c)]||this[_0x1dea10(0x1fa)](_0x75ead0['world']['x'],_0x75ead0[_0x1dea10(0x1d8)]['z'])||[_0x75ead0['world']['x'],_0x75ead0[_0x1dea10(0x1d8)]['z']]},'properties':_0x2d9703};ee(_0x422669,_0x5be322);const _0x20246d=this['createSceneBusinessSprite'](_0x422669);return _0x20246d?(_0x75ead0['world']&&_0x20246d[_0x1dea10(0x196)]['copy'](_0x75ead0['world']),_0x20246d['userData']['feature']=_0x422669,this[_0x1dea10(0x1db)][_0x1dea10(0x1c3)](_0x20246d),this[_0x1dea10(0x1b9)][_0x1dea10(0x1f0)](_0x20246d),this['applyDeviceCategoryFilter'](),_0x20246d):null;}addIcon(..._0x1025d5){return this['createIcon'](..._0x1025d5);}['findDeviceObjectIndex'](_0x205b33){const _0x2df845=_0x487462,_0x5e814e=String(_0x205b33||'');return _0x5e814e?this[_0x2df845(0x1b9)][_0x2df845(0x1a6)](_0x5a9c73=>{const _0x266d17=_0x2df845;var _0x45e49d;const _0x519d5f=null==(_0x45e49d=_0x5a9c73[_0x266d17(0x149)])?void 0x0:_0x45e49d['feature'],_0x47a0b7=(null==_0x519d5f?void 0x0:_0x519d5f[_0x266d17(0x25a)])||{};return _0x266d17(0x13a)===_0x47a0b7['layerType']&&[_0x47a0b7['deviceCode'],_0x47a0b7['deviceId'],_0x47a0b7['deviceNo'],_0x47a0b7[_0x266d17(0x1b5)],_0x47a0b7['id'],_0x519d5f['id']][_0x266d17(0x235)](Boolean)[_0x266d17(0x19f)](String)[_0x266d17(0x17b)](_0x5e814e);}):-0x1;}['findDeviceObject'](_0x28834e){const _0x266f3a=_0x487462,_0x50d361=this['findDeviceObjectIndex'](_0x28834e);return _0x50d361>=0x0?this[_0x266f3a(0x1b9)][_0x50d361]:null;}createDeviceIconFeature(_0x24835b={},_0x39c10e,_0x35873e={}){const _0x12bbcd=_0x487462,_0x9a55be=te(_0x24835b);return _0x9a55be[_0x12bbcd(0x25a)]={..._0x9a55be['properties']||{},...J(_0x35873e)?_0x35873e:{'payload':_0x35873e},'layerType':_0x12bbcd(0x13a)},ee(_0x9a55be,_0x39c10e),_0x9a55be;}replaceDeviceIcon(_0x5cc616,_0x2423b4,_0x2bc41a={}){const _0x4eae30=_0x487462;var _0x5a67aa;const _0x107e6e=this['findDeviceObjectIndex'](_0x2423b4);if(_0x107e6e<0x0)return!0x1;const _0x113243=this[_0x4eae30(0x1b9)][_0x107e6e],_0x74c479=te(null==(_0x5a67aa=_0x113243[_0x4eae30(0x149)])?void 0x0:_0x5a67aa[_0x4eae30(0x17a)]),_0xef4da1=this['createDeviceIconFeature'](_0x74c479,_0x5cc616,_0x2bc41a),_0x24ed26=this['createSceneBusinessSprite'](_0xef4da1);return!!_0x24ed26&&(_0x24ed26['position'][_0x4eae30(0x26d)](_0x113243[_0x4eae30(0x196)]),this[_0x4eae30(0x1db)]['remove'](_0x113243),TDMethods[_0x4eae30(0x1ec)](_0x113243),this[_0x4eae30(0x1db)]['add'](_0x24ed26),this[_0x4eae30(0x1b9)][_0x107e6e]=_0x24ed26,this['applyDeviceCategoryFilter'](),!0x0);}replaceIcon(_0xbb8059,_0x22cd6f,_0x5bf76a={}){const _0x3ee76b=_0x487462;return this[_0x3ee76b(0x141)](_0xbb8059,_0x22cd6f,_0x5bf76a);}moveDeviceIcon(_0x16a860,_0x2cec3d,_0xa6e91e={}){const _0x885fee=_0x487462,_0x38eeff=this[_0x885fee(0x21b)](_0x16a860);if(!_0x38eeff)return!0x1;const _0xea284=this[_0x885fee(0x15d)](_0x2cec3d,_0x38eeff[_0x885fee(0x196)]['y']);if(!_0xea284)return!0x1;const _0x4ae104=Math[_0x885fee(0x178)](Number(_0xa6e91e[_0x885fee(0x1da)]??0x320),0x0);return!0x0===_0xa6e91e[_0x885fee(0x1ea)]&&this['animateCameraToPosition'](_0xea284['world'],_0xa6e91e[_0x885fee(0x20f)]||{}),this['positionTweens']=this[_0x885fee(0x167)][_0x885fee(0x235)](_0x1a5d68=>_0x1a5d68[_0x885fee(0x1a0)]!==_0x38eeff),_0x4ae104?(this[_0x885fee(0x167)][_0x885fee(0x1f0)]({'object':_0x38eeff,'from':_0x38eeff[_0x885fee(0x196)]['clone'](),'to':_0xea284['world'][_0x885fee(0x15e)](),'coordinate':_0xea284[_0x885fee(0x16c)],'start':this[_0x885fee(0x140)](),'duration':_0x4ae104,'easing':'function'==typeof _0xa6e91e[_0x885fee(0x1d5)]?_0xa6e91e['easing']:ie,'onComplete':_0xa6e91e[_0x885fee(0x1dd)]}),!0x0):(_0x38eeff['position']['copy'](_0xea284['world']),this['updateObjectCoordinate'](_0x38eeff,_0xea284['coordinate']),!0x0);}moveIcon(_0x20f23e,_0x45a221,_0x22bbf2={}){const _0x163d45=_0x487462;return this[_0x163d45(0x1c2)](_0x20f23e,_0x45a221,_0x22bbf2);}['updateObjectCoordinate'](_0x29e8d7,_0x6e4f37){const _0x25fd66=_0x487462;var _0x3fb481;const _0x46337f=_0x6e4f37||this['worldToMapCoordinate'](_0x29e8d7[_0x25fd66(0x196)]['x'],_0x29e8d7['position']['z']);var _0x6c14bf;_0x46337f&&((null==(_0x6c14bf=null==(_0x3fb481=_0x29e8d7['userData'])?void 0x0:_0x3fb481['feature'])?void 0x0:_0x6c14bf[_0x25fd66(0x198)])&&(_0x6c14bf['geometry']['coordinates']=_0x46337f));}['createDeviceStatusFeature'](_0x54d0fa={},_0x13f2fc,_0x94c386){const _0x13846d=_0x487462,_0x1a510b=te(_0x54d0fa);return _0x1a510b[_0x13846d(0x25a)]={..._0x1a510b['properties']||{},'color':_0x13f2fc,'deviceStatus':_0x94c386},_0x1a510b;}setDeviceAlarm(_0x328049){const _0x16286c=_0x487462;return this['replaceDeviceSpriteColor'](_0x328049,'#ff0c00',_0x16286c(0x23d));}setDeviceOffline(_0x40607a){const _0x448841=_0x487462;return this[_0x448841(0x156)](_0x40607a,'#8A96A3','offline');}['replaceDeviceSpriteColor'](_0x1d3b90,_0x1ea017,_0x527383){const _0x5becaf=_0x487462;var _0x21edc8;const _0x3f0c76=this['findDeviceObjectIndex'](_0x1d3b90);if(_0x3f0c76<0x0)return!0x1;const _0x4ede70=this[_0x5becaf(0x1b9)][_0x3f0c76],_0x4d2154=null==(_0x21edc8=_0x4ede70['userData'])?void 0x0:_0x21edc8['feature'],_0x1c8712=this[_0x5becaf(0x210)](_0x4d2154,_0x1ea017,_0x527383),_0x1e7056=this[_0x5becaf(0x24f)](_0x1c8712);return!!_0x1e7056&&(this[_0x5becaf(0x1db)]['remove'](_0x4ede70),TDMethods[_0x5becaf(0x1ec)](_0x4ede70),this['businessGroup'][_0x5becaf(0x1c3)](_0x1e7056),this[_0x5becaf(0x1b9)][_0x3f0c76]=_0x1e7056,this['applyDeviceCategoryFilter'](),!0x0);}followDevice(_0x1d7ae8,_0x3ec072={}){const _0x5ad891=_0x487462,_0xcf2276=this['findDeviceObject'](_0x1d7ae8);return!!_0xcf2276&&this[_0x5ad891(0x180)](_0xcf2276,_0x3ec072);}cameraFollowDevice(_0x31b879,_0x4721d6={}){const _0x504c8b=_0x487462;return this[_0x504c8b(0x260)](_0x31b879,_0x4721d6);}trackDevice(_0x18b55e,_0x447c8={}){const _0x538816=_0x487462;return this[_0x538816(0x260)](_0x18b55e,_0x447c8);}stopFollowDevice(){this['cameraTweens']=[];}['resolveFollowOffset'](_0x2f1cb6={}){const _0x43584f=_0x487462;var _0x20b1b3;const _0x37f9ca=_0x2f1cb6['offset'];if(Array['isArray'](_0x37f9ca)&&_0x37f9ca[_0x43584f(0x1b0)]>=0x3)return new _0x49cc0b[(_0x43584f(0x19b))](Number(_0x37f9ca[0x0]||0x0),Number(_0x37f9ca[0x1]||0x0),Number(_0x37f9ca[0x2]||0x0));if(J(_0x37f9ca))return new _0x49cc0b[(_0x43584f(0x19b))](Number(_0x37f9ca['x']||0x0),Number(_0x37f9ca['y']||0x0),Number(_0x37f9ca['z']||0x0));const _0x33e117=Math[_0x43584f(0x178)]((null==(_0x20b1b3=this[_0x43584f(0x220)])?void 0x0:_0x20b1b3['worldSize'])||this[_0x43584f(0x168)][_0x43584f(0x268)],0xa);if(!0x0===_0x2f1cb6[_0x43584f(0x16a)]){const _0x5891fd=this['camera'][_0x43584f(0x196)]['clone']()[_0x43584f(0x1bc)](this['controls']['target']);if(_0x5891fd[_0x43584f(0x1b0)]()>0.001)return _0x5891fd;}const _0x1b1313=Number(_0x2f1cb6[_0x43584f(0x189)]??_0x2f1cb6['followDistance']??Math[_0x43584f(0x22c)](Math[_0x43584f(0x178)](0.16*_0x33e117,0xc),0x1c));return new _0x49cc0b[(_0x43584f(0x19b))](0x0,0.72*_0x1b1313,_0x1b1313);}['animateCameraToObject'](_0x482ca3,_0x151a72={}){const _0x3a5677=_0x487462;return!!_0x482ca3&&this['animateCameraToPosition'](_0x482ca3[_0x3a5677(0x196)],_0x151a72);}animateCameraToPosition(_0x133249,_0x12b388={}){const _0x377937=_0x487462;var _0x5d80ff;if(!_0x133249||!this['camera']||!this['controls'])return!0x1;const _0x3080af=_0x133249['clone'](),_0x1bb193=(null==(_0x5d80ff=_0x12b388['endPos'])?void 0x0:_0x5d80ff[_0x377937(0x1a7)])?_0x12b388['endPos'][_0x377937(0x15e)]():_0x3080af['clone']()['add'](this['resolveFollowOffset'](_0x12b388));return this[_0x377937(0x24a)](_0x1bb193,_0x3080af,_0x12b388);}[_0x487462(0x24a)](_0x5389a3,_0x34a1bc,_0xb10763={}){const _0x3fe8e6=_0x487462;if(!(_0x5389a3&&_0x34a1bc&&this['camera']&&this[_0x3fe8e6(0x18b)]))return!0x1;const _0x42183a=Math[_0x3fe8e6(0x178)](Number(_0xb10763['duration']??0x3e8),0x0);return this['cameraTweens']=[],_0x42183a?(this[_0x3fe8e6(0x18a)]['push']({'fromPos':this['camera'][_0x3fe8e6(0x196)][_0x3fe8e6(0x15e)](),'fromTarget':this['controls']['target']['clone'](),'toPos':_0x5389a3['clone'](),'toTarget':_0x34a1bc['clone'](),'start':this['now'](),'duration':_0x42183a,'easing':_0x3fe8e6(0x25e)==typeof _0xb10763['easing']?_0xb10763['easing']:oe,'onComplete':_0xb10763['onComplete']}),!0x0):(this['camera'][_0x3fe8e6(0x196)][_0x3fe8e6(0x26d)](_0x5389a3),this[_0x3fe8e6(0x18b)]['target']['copy'](_0x34a1bc),this['controls'][_0x3fe8e6(0x1c7)](),!0x0);}updatePositionTweens(){const _0x11a536=_0x487462;if(!this['positionTweens'][_0x11a536(0x1b0)])return;const _0x477c97=this['now']();this['positionTweens']=this['positionTweens']['filter'](_0x5d3811=>{const _0x81444f=_0x11a536;var _0x20a315,_0x24baf8;if(!(null==(_0x20a315=_0x5d3811[_0x81444f(0x1a0)])?void 0x0:_0x20a315['parent']))return!0x1;const _0x33bf63=Math['min']((_0x477c97-_0x5d3811['start'])/_0x5d3811['duration'],0x1),_0x95e705=_0x5d3811['easing'](_0x33bf63);return _0x5d3811['object']['position']['lerpVectors'](_0x5d3811[_0x81444f(0x139)],_0x5d3811['to'],_0x95e705),_0x33bf63<0x1||(_0x5d3811['object'][_0x81444f(0x196)]['copy'](_0x5d3811['to']),this[_0x81444f(0x166)](_0x5d3811['object'],_0x5d3811[_0x81444f(0x16c)]),null==(_0x24baf8=_0x5d3811['onComplete'])||_0x24baf8['call'](_0x5d3811,_0x5d3811['object']),!0x1);});}[_0x487462(0x20d)](){const _0x48bb65=_0x487462;if(!this[_0x48bb65(0x18a)]['length'])return;const _0x3e2c5b=this[_0x48bb65(0x140)]();this['cameraTweens']=this['cameraTweens']['filter'](_0x20d88f=>{const _0x980eec=_0x48bb65;var _0x28dd2c;const _0x51a46e=Math[_0x980eec(0x22c)]((_0x3e2c5b-_0x20d88f['start'])/_0x20d88f[_0x980eec(0x1da)],0x1),_0x5e79ac=_0x20d88f[_0x980eec(0x1d5)](_0x51a46e);return this[_0x980eec(0x1c0)]['position']['lerpVectors'](_0x20d88f['fromPos'],_0x20d88f[_0x980eec(0x148)],_0x5e79ac),this[_0x980eec(0x18b)]['target'][_0x980eec(0x202)](_0x20d88f[_0x980eec(0x1a9)],_0x20d88f['toTarget'],_0x5e79ac),this['controls']['update'](),_0x51a46e<0x1||(this[_0x980eec(0x1c0)][_0x980eec(0x196)]['copy'](_0x20d88f['toPos']),this['controls'][_0x980eec(0x23c)][_0x980eec(0x26d)](_0x20d88f[_0x980eec(0x1c9)]),this[_0x980eec(0x18b)]['update'](),null==(_0x28dd2c=_0x20d88f[_0x980eec(0x1dd)])||_0x28dd2c[_0x980eec(0x256)](_0x20d88f),!0x1);});}[_0x487462(0x140)](){const _0x268816=_0x487462;return _0x268816(0x1cf)!=typeof performance?performance['now']():Date['now']();}['fitCamera'](){const _0x489b4f=_0x487462;var _0x5bae86;const _0x416103=Math['max']((null==(_0x5bae86=this[_0x489b4f(0x220)])?void 0x0:_0x5bae86[_0x489b4f(0x1f2)])||this[_0x489b4f(0x168)]['targetSize'],0xa);this['camera'][_0x489b4f(0x196)][_0x489b4f(0x206)](0x0,0.68*_0x416103,0.76*_0x416103),this['controls'][_0x489b4f(0x23c)]['set'](0x0,0x0,0x0),this[_0x489b4f(0x18b)]['minDistance']=Math['max'](0.08*_0x416103,0x4),this[_0x489b4f(0x18b)][_0x489b4f(0x1fe)]=Math['max'](0x5*_0x416103,0x78),this['controls']['update']();}on(_0x5caec4,_0x2caea8){const _0x5811c2=_0x487462;return'click'!==_0x5caec4?null:(this[_0x5811c2(0x238)](_0x5caec4),this[_0x5811c2(0x194)][_0x5caec4]=TDMethods['createRaycaster']({'dom':this['renderer']['domElement'],'camera':this['camera'],'objects':this['businessObjects']},_0x2ec6d4=>{const _0xab49d6=_0x5811c2;var _0x4ff3e4;const _0x23b792=this['resolveBusinessObject'](_0x2ec6d4);null==_0x2caea8||_0x2caea8(_0x23b792,null==(_0x4ff3e4=null==_0x23b792?void 0x0:_0x23b792[_0xab49d6(0x149)])?void 0x0:_0x4ff3e4['feature']);}),this[_0x5811c2(0x194)][_0x5caec4]);}off(_0x5cbc84){const _0x2e72d0=_0x487462;var _0x269445,_0x4c80ad;null==(_0x4c80ad=(_0x269445=this['cleanups'])[_0x5cbc84])||_0x4c80ad['call'](_0x269445),delete this[_0x2e72d0(0x194)][_0x5cbc84];}[_0x487462(0x152)](_0x20261e){const _0xd25b26=_0x487462;var _0x25d1ba;let _0x1cd8a4=_0x20261e;for(;_0x1cd8a4&&!(null==(_0x25d1ba=_0x1cd8a4['userData'])?void 0x0:_0x25d1ba['feature']);)_0x1cd8a4=_0x1cd8a4[_0xd25b26(0x16d)];return _0x1cd8a4||void 0x0;}['mapCoordinateToWorld'](_0x108d6a=[]){const _0x4cae65=_0x487462;if(!this[_0x4cae65(0x220)])return null;const [_0x3acbc5,_0x2ab8ab]=this['projection'](_0x108d6a);return{'x':_0x3acbc5,'y':0x0,'z':_0x2ab8ab};}['worldToMapCoordinate'](_0x204466,_0x3b0303){const _0x4ca21c=_0x487462;return this[_0x4ca21c(0x220)]?this[_0x4ca21c(0x220)]['invert']([_0x204466,_0x3b0303]):null;}[_0x487462(0x25d)](){const _0x1a3fba=_0x487462;TDMethods[_0x1a3fba(0x1d6)](this['mapGroup']),TDMethods[_0x1a3fba(0x1d6)](this[_0x1a3fba(0x1cd)]),TDMethods['disposeChildren'](this[_0x1a3fba(0x1db)]),TDMethods[_0x1a3fba(0x1d6)](this[_0x1a3fba(0x15c)]),this['businessObjects']=[],this['deviceCategories']=[],this['activeDeviceCategoryKey']='',this[_0x1a3fba(0x167)]=[],this['stopFollowDevice'](),this[_0x1a3fba(0x22d)]();}dispose(){const _0x5702e8=_0x487462;var _0x14badb,_0x195864,_0x52bc43,_0x3f8203;Object[_0x5702e8(0x270)](this[_0x5702e8(0x194)])['forEach'](_0xc7165f=>this['off'](_0xc7165f)),this[_0x5702e8(0x25d)](),cancelAnimationFrame(this['animationFrameId']),window['removeEventListener']('resize',this['boundResize']),null==(_0x195864=null==(_0x14badb=this['renderer'])?void 0x0:_0x14badb[_0x5702e8(0x217)])||_0x195864[_0x5702e8(0x21f)](),null==(_0x52bc43=this['renderer'])||_0x52bc43['dispose'](),null==(_0x3f8203=this['scene'])||_0x3f8203[_0x5702e8(0x25d)](),this['scene']=null,this['camera']=null,this['controls']=null,this['renderer']=null;}}const createScene3D=(_0x3c63e5,_0x525717,_0x389695)=>new TDScene(_0x3c63e5,_0x525717,_0x389695),se={'TDScene':TDScene,'TDMethods':TDMethods,'createScene3D':createScene3D};function _0x3a38(_0x17585b,_0x314343){_0x17585b=_0x17585b-0x131;const _0x4e94d2=_0x4e94();let _0x3a383a=_0x4e94d2[_0x17585b];return _0x3a383a;}export{TDMethods,TDScene,createScene3D,se as default};
package/dist/style.css ADDED
@@ -0,0 +1,66 @@
1
+
2
+ .td-device-tabs[data-v-897b5843] {
3
+ position: absolute;
4
+ left: 50%;
5
+ bottom: 24px;
6
+ z-index: 5;
7
+ display: flex;
8
+ align-items: center;
9
+ max-width: min(82%, 960px);
10
+ min-height: 38px;
11
+ overflow-x: auto;
12
+ transform: translateX(-50%);
13
+ border-radius: 8px;
14
+ background: rgba(255, 255, 255, 0.94);
15
+ box-shadow: 0 10px 28px rgba(42, 75, 103, 0.54);
16
+ backdrop-filter: blur(8px);
17
+ pointer-events: auto;
18
+ user-select: none;
19
+ scrollbar-width: none;
20
+ -ms-overflow-style: none;
21
+ }
22
+ .td-device-tabs[data-v-897b5843]::-webkit-scrollbar {
23
+ display: none;
24
+ }
25
+ .td-device-tabs__item[data-v-897b5843] {
26
+ width: 100px;
27
+ position: relative;
28
+ height: 38px;
29
+ min-width: 0;
30
+ padding: 0 12px;
31
+ display: inline-flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ gap: 4px;
35
+ border: none;
36
+ border-radius: 0;
37
+ background: transparent;
38
+ color: #4a5f72;
39
+ font-family: Arial, "Microsoft YaHei", sans-serif;
40
+ font-size: 14px;
41
+ font-weight: 500;
42
+ line-height: 44px;
43
+ white-space: nowrap;
44
+ cursor: pointer;
45
+ transition: background 0.16s ease, color 0.16s ease;
46
+ }
47
+ .td-device-tabs__item.active[data-v-897b5843] {
48
+ background: rgba(232, 250, 251, 1);
49
+ color: #008688;
50
+ }
51
+ .td-device-tabs__icon[data-v-897b5843] {
52
+ width: 22px;
53
+ height: 22px;
54
+ object-fit: contain;
55
+ flex: 0 0 auto;
56
+ }
57
+ .td-device-tabs__dot[data-v-897b5843] {
58
+ width: 14px;
59
+ height: 14px;
60
+ border-radius: 50%;
61
+ flex: 0 0 auto;
62
+ }
63
+ .td-device-tabs__text[data-v-897b5843] {
64
+ display: inline-flex;
65
+ align-items: center;
66
+ }
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "xinrui-3d",
3
+ "version": "1.0.0",
4
+ "description": "3D scene renderer for floor resources",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.js",
8
+ "style": "./dist/style.css",
9
+ "exports": {
10
+ ".": "./dist/index.js",
11
+ "./style.css": "./dist/style.css"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "README.md",
16
+ "package.json"
17
+ ],
18
+ "scripts": {
19
+ "build": "node ../../scripts/build-npm.mjs",
20
+ "test": "echo \"Error: no test specified\" && exit 1"
21
+ },
22
+ "keywords": [
23
+ "scene",
24
+ "3d",
25
+ "three"
26
+ ],
27
+ "author": "wzp",
28
+ "license": "ISC",
29
+ "dependencies": {
30
+ "three": "^0.160.1",
31
+ "vue": "^3.5.13"
32
+ }
33
+ }