@aibee/crc-bmap 0.0.94 → 0.0.95

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.
@@ -1,7 +1,14 @@
1
- import { BMap, Graphic, GraphicInfo, Overlay, SelectBox } from '../../src'
2
- import Stats from 'three/examples/jsm/libs/stats.module.js'
3
- import * as THREE from 'three'
4
- import { Navigation } from '../../src/plugins/navigation/navigation'
1
+ import {
2
+ BMap,
3
+ Graphic,
4
+ GraphicInfo,
5
+ Overlay,
6
+ SelectBox,
7
+ SplitLoad,
8
+ } from "../../src";
9
+ import Stats from "three/examples/jsm/libs/stats.module.js";
10
+ import * as THREE from "three";
11
+ import { Navigation } from "../../src/plugins/navigation/navigation";
5
12
  // import data from './a.json'
6
13
  // data.data.forEach(item => {
7
14
  // item.info = JSON.parse(item.info)
@@ -9,24 +16,24 @@ import { Navigation } from '../../src/plugins/navigation/navigation'
9
16
  // })
10
17
 
11
18
  // 创建性能监视器
12
- let stats = new Stats()
19
+ let stats = new Stats();
13
20
 
14
21
  // 设置监视器面板,传入面板id(0: fps, 1: ms, 2: mb)
15
- stats.showPanel(0)
22
+ stats.showPanel(0);
16
23
 
17
24
  // 设置监视器位置
18
- stats.dom.style.position = 'absolute'
19
- stats.dom.style.left = '10vh'
20
- stats.dom.style.top = '10vh'
21
- stats.dom.style.zIndex = "100"
25
+ stats.dom.style.position = "absolute";
26
+ stats.dom.style.left = "10vh";
27
+ stats.dom.style.top = "10vh";
28
+ stats.dom.style.zIndex = "100";
22
29
 
23
30
  // 将监视器添加到页面中
24
- document.body.appendChild(stats.dom)
31
+ document.body.appendChild(stats.dom);
25
32
 
26
33
  // var geometry = new THREE.BoxGeometry(1, 1, 1);
27
34
  // var material = new THREE.MeshBasicMaterial();
28
35
  // var cube = new THREE.Mesh(geometry, material);
29
- const scene = new THREE.Scene()
36
+ const scene = new THREE.Scene();
30
37
 
31
38
  // scene.add(cube);
32
39
  // geometry.attributes.verticesNeedUpdate = true;
@@ -38,38 +45,47 @@ const scene = new THREE.Scene()
38
45
  // geometry.colors[0] = color1; // 设置第一个顶点的颜色
39
46
  // geometry.colors[1] = color2; // 设置第二个顶点的颜色
40
47
 
41
-
42
48
  function render() {
43
49
  // 更新帧数
44
- stats.update()
45
- requestAnimationFrame(render)
50
+ stats.update();
51
+ requestAnimationFrame(render);
46
52
  }
47
53
 
48
- render()
54
+ render();
49
55
 
50
- const bmap = new BMap(document.getElementById('app')!, {
56
+ const bmap = new BMap(document.getElementById("app")!, {
51
57
  apiInfo: {
52
58
  headers: {
53
- "Authorization": localStorage.getItem("Authorization_token") || "Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIzNzIwYjNhOGU3MGM0NGU3YTdkYzdiMTE4NDNhZjFhMyIsInN1YiI6IllVV0VJWEkiLCJpc3MiOiJtaXhjIiwiaWF0IjoxNzAwNzI2NTA4fQ.su7smca9cVeMQ9u-NyT_3NKa6kYfoLIGsOtNZLOnXXI"
54
- }
59
+ Authorization:
60
+ localStorage.getItem("Authorization_token") ||
61
+ "Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIzNzIwYjNhOGU3MGM0NGU3YTdkYzdiMTE4NDNhZjFhMyIsInN1YiI6IllVV0VJWEkiLCJpc3MiOiJtaXhjIiwiaWF0IjoxNzAwNzI2NTA4fQ.su7smca9cVeMQ9u-NyT_3NKa6kYfoLIGsOtNZLOnXXI",
62
+ },
55
63
  },
56
- resizeObserver: true
64
+ resizeObserver: true,
57
65
  });
58
66
 
59
67
  (async () => {
60
- bmap.loadEquipment()
61
- const navigation = new Navigation(bmap)
62
- bmap.use(navigation)
63
- // 加载图元数据
64
- await bmap.load({
68
+ bmap.loadEquipment();
69
+ const navigation = new Navigation(bmap);
70
+ bmap.use(navigation);
71
+ const splitLoad = new SplitLoad(bmap);
72
+ bmap.use(splitLoad);
73
+ splitLoad.changeFloor({
65
74
  brand: "crc",
66
75
  project: "0202A501",
67
- phase: "themixctd01",
68
- building: "A",
69
- floor: "LG",
76
+ floor: "B1",
70
77
  ts: "2024-04-09",
71
- resource_type_list: [1, 2, 3, 4, 6].join(",")
72
78
  });
79
+ // 加载图元数据
80
+ // await bmap.load({
81
+ // brand: "crc",
82
+ // project: "0202A501",
83
+ // phase: "themixctd01",
84
+ // building: "A",
85
+ // floor: "LG",
86
+ // ts: "2024-04-09",
87
+ // resource_type_list: [1, 2, 3, 4, 6].join(",")
88
+ // });
73
89
  // const floorKey = bmap.getFloorKey({
74
90
  // brand: "crc",
75
91
  // project: "0202A501",
@@ -81,16 +97,16 @@ const bmap = new BMap(document.getElementById('app')!, {
81
97
  // });
82
98
  // const curFloorData = bmap.floorDataMap.set(floorKey, data.data as any);
83
99
  // 切换楼层
84
- bmap.switchFloor({
85
- brand: "crc",
86
- project: "0202A501",
87
- phase: "themixctd01",
88
- building: "A",
89
- floor: "LG",
90
- ts: "2024-04-09",
91
- resource_type_list: [1, 2, 3, 4, 6].join(",")
92
- })
93
- bmap.changeMapType("3d")
100
+ // bmap.switchFloor({
101
+ // brand: "crc",
102
+ // project: "0202A501",
103
+ // phase: "themixctd01",
104
+ // building: "A",
105
+ // floor: "LG",
106
+ // ts: "2024-04-09",
107
+ // resource_type_list: [1, 2, 3, 4, 6].join(",")
108
+ // })
109
+ bmap.changeMapType("3d");
94
110
  // const poi = bmap.createGraphicPoi(bmap.getGraphicByNodeId("3e72f56e")!, {
95
111
  // texts: [{ text: "文字" }],
96
112
  // icon: "https://robot-vr-public.cdn.bcebos.com/navigation_images/614c4cb0a949526cf91aa42f5e6cb2c9.svg",
@@ -99,9 +115,9 @@ const bmap = new BMap(document.getElementById('app')!, {
99
115
  // icon_border: { width: 2, color: "#000000" }
100
116
  // })
101
117
  // poi!.options.background = "#000000"
102
- bmap.context.addEventListener("select-graphic", (...args) => {
103
- console.log(args)
104
- })
118
+ bmap.context.addEventListener("select-graphic", (...args) => {
119
+ console.log(args);
120
+ });
105
121
  // bmap.getGraphicByNodeId("700fae09")!.options.strokeWidth = 2;
106
122
  // bmap.getGraphicByNodeId("b0846107")!.options.strokeWidth = 0.5;
107
123
  // bmap.getGraphicByNodeId("654cf0a2")!.options.fillColor = '#45E583';
@@ -113,87 +129,88 @@ const bmap = new BMap(document.getElementById('app')!, {
113
129
  // graphic.options.height = 0.1
114
130
  // }
115
131
  // })
116
-
132
+
117
133
  // bmap.getGraphicByNodeId("996d97a6")!.options.stroke = false;
118
134
  // bmap.getGraphicByNodeId("996d97a6")!.options.height = 0.001;
119
135
  // bmap.getGraphicByNodeId("996d97a6")!.options.strokeColor = "#000000";
120
136
  // bmap.getGraphicByNodeId("996d97a6")!.options.strokeOpacity = 1;
121
-
122
- })();
137
+ })();
123
138
 
124
- const graphicId = "9338ca4b"
139
+ const graphicId = "9338ca4b";
125
140
 
126
141
  // 图元点击
127
- bmap.context.addEventListener('graphic-click', (data) => {
128
- console.log('graphic-click', data.graphics)
142
+ bmap.context.addEventListener("graphic-click", (data) => {
143
+ console.log("graphic-click", data.graphics);
129
144
  // const div = document.createElement("div")
130
145
  // div.style.cssText = "position: fixed; top: 25%; left: 25%; bottom: 25%; right: 25%; background: red; z-index: 99;"
131
146
  // div.addEventListener("click", () => {
132
147
  // document.body.removeChild(div)
133
148
  // })
134
149
  // document.body.appendChild(div)
135
- data.graphics[0] && bmap.translateElementToCenter(data.graphics[0], 200)
150
+ data.graphics[0] && bmap.translateElementToCenter(data.graphics[0], 200);
136
151
  });
137
152
 
138
153
  // 图元选中
139
- bmap.context.addEventListener('select-graphic', (data) => {
140
- console.log('select-graphic', data.graphics)
141
- data.graphics.forEach(item => item.options.fillColor = '#ff0000')
154
+ bmap.context.addEventListener("select-graphic", (data) => {
155
+ console.log("select-graphic", data.graphics);
156
+ data.graphics.forEach((item) => (item.options.fillColor = "#ff0000"));
142
157
  });
143
158
 
144
159
  // poi点击
145
- bmap.context.addEventListener('poi-click', (data) => {
146
- console.log('poi-click', data.pois)
147
- bmap.translateElementToCenter(data.pois[0], 500)
160
+ bmap.context.addEventListener("poi-click", (data) => {
161
+ console.log("poi-click", data.pois);
162
+ bmap.translateElementToCenter(data.pois[0], 500);
148
163
  });
149
164
 
150
165
  (window as any).bmap = bmap;
151
166
 
152
-
153
167
  /**
154
168
  * 显示比例尺
155
169
  */
156
- const ratioDiv = document.createElement("div")
157
- ratioDiv.style.cssText = "position: absolute; bottom: 10vh; left: 10vw; z-index: 2; background: blue; color: red;"
170
+ const ratioDiv = document.createElement("div");
171
+ ratioDiv.style.cssText =
172
+ "position: absolute; bottom: 10vh; left: 10vw; z-index: 2; background: blue; color: red;";
158
173
  ratioDiv.textContent = "100M";
159
- document.body.appendChild(ratioDiv)
160
- bmap.context.addEventListener('change-ratio', ({ px }) => {
174
+ document.body.appendChild(ratioDiv);
175
+ bmap.context.addEventListener("change-ratio", ({ px }) => {
161
176
  // px 一百米对应的像素点
162
177
  let m = 100;
163
- let scale = 1
178
+ let scale = 1;
164
179
  // 让px保持在50-100中间的一个米的整数
165
- if (px < 50) {
166
- scale = Math.ceil(100 / px)
167
- px *= scale
168
- m *= scale
180
+ if (px < 50) {
181
+ scale = Math.ceil(100 / px);
182
+ px *= scale;
183
+ m *= scale;
169
184
  } else if (px > 100) {
170
- scale = Math.floor(px / 100)
185
+ scale = Math.floor(px / 100);
171
186
  while (m % scale != 0) {
172
187
  scale--;
173
188
  }
174
- px /= scale
175
- m /= scale
189
+ px /= scale;
190
+ m /= scale;
176
191
  }
177
192
  ratioDiv.style.width = `${px}px`;
178
- ratioDiv.textContent = `${m}米`
179
- })
193
+ ratioDiv.textContent = `${m}米`;
194
+ });
180
195
 
181
196
  /**
182
197
  * 按钮操作
183
198
  */
184
199
  // 修改容器大小
185
- document.getElementById("changeContainerSize")?.addEventListener('click', () => {
186
- // 获取legacyId 和 图元 的map
187
- // const graphic = bmap.getGraphicByNodeId("45f9ff75")!
188
- // const poi = bmap.createGraphicPoi(graphic, {
189
- // texts: [
190
- // { text: "店铺名称" }
191
- // ]
192
- // })
193
- document.getElementById("app1")!.style.width = "500px"
194
- })
200
+ document
201
+ .getElementById("changeContainerSize")
202
+ ?.addEventListener("click", () => {
203
+ // 获取legacyId 图元 的map
204
+ // const graphic = bmap.getGraphicByNodeId("45f9ff75")!
205
+ // const poi = bmap.createGraphicPoi(graphic, {
206
+ // texts: [
207
+ // { text: "店铺名称" }
208
+ // ]
209
+ // })
210
+ document.getElementById("app1")!.style.width = "500px";
211
+ });
195
212
  // 添加poi
196
- document.getElementById("createPoi")?.addEventListener('click', () => {
213
+ document.getElementById("createPoi")?.addEventListener("click", () => {
197
214
  // 获取legacyId 和 图元 的map
198
215
  // const graphic = bmap.getGraphicByNodeId("45f9ff75")!
199
216
  // const poi = bmap.createGraphicPoi(graphic, {
@@ -201,74 +218,71 @@ document.getElementById("createPoi")?.addEventListener('click', () => {
201
218
  // { text: "店铺名称" }
202
219
  // ]
203
220
  // })
204
- const graphics: Graphic[] = bmap.getFloorAllGraphics()
221
+ const graphics: Graphic[] = bmap.getFloorAllGraphics();
205
222
  // bmap.context.control.zoomSpeed = 2
206
- graphics.forEach(graphic => {
223
+ graphics.forEach((graphic) => {
207
224
  // 在图元上添加poi
208
225
  const poi = bmap.createGraphicPoi(graphic, {
209
- texts: [{ text: "店铺名称", styles: { fontWeight: "bold" } }]
210
- })
211
- })
226
+ texts: [{ text: "店铺名称", styles: { fontWeight: "bold" } }],
227
+ });
228
+ });
212
229
  // return
213
230
  // 监听放大缩小的变化
214
- bmap.addEventListener("zoom-change", ({ basicZoom, cameraZoom }) => {
215
- const zoomScale = cameraZoom / basicZoom
231
+ bmap.addEventListener("zoom-change", ({ basicZoom, cameraZoom }) => {
232
+ const zoomScale = cameraZoom / basicZoom;
216
233
  // console.log(zoomScale, basicZoom, cameraZoom)
217
- bmap.getPois().forEach(poi => {
234
+ bmap.getPois().forEach((poi) => {
218
235
  if (zoomScale > 2) {
219
236
  poi!.options.texts = [
220
237
  { text: "店铺名称" },
221
238
  { text: "店铺名称" },
222
239
  { text: "店铺名称" },
223
240
  { text: "店铺名称" },
224
- ]
241
+ ];
225
242
  } else if (zoomScale > 1.6) {
226
243
  poi!.options.texts = [
227
244
  { text: "店铺名称" },
228
245
  { text: "店铺名称" },
229
246
  { text: "店铺名称" },
230
- ]
231
- } else if (zoomScale > 1.3) {
232
- poi!.options.texts = [
233
- { text: "店铺名称" },
234
- { text: "店铺名称" },
235
- ]
247
+ ];
248
+ } else if (zoomScale > 1.3) {
249
+ poi!.options.texts = [{ text: "店铺名称" }, { text: "店铺名称" }];
236
250
  } else {
237
- poi!.options.texts = [
238
- { text: "店铺名称" },
239
- ]
251
+ poi!.options.texts = [{ text: "店铺名称" }];
240
252
  }
241
- })
242
- })
243
- })
253
+ });
254
+ });
255
+ });
244
256
  // 删除poi
245
- document.getElementById("removePoi")?.addEventListener('click', () => {
246
- bmap.removePoiById(graphicId)
247
- })
257
+ document.getElementById("removePoi")?.addEventListener("click", () => {
258
+ bmap.removePoiById(graphicId);
259
+ });
248
260
  // 删除在创建
249
- document.getElementById("deleteAnCreateGraphic")?.addEventListener('click', () => {
250
- const graphic = bmap.getGraphicByNodeId(graphicId)!
251
- console.log(graphic)
252
- const options = graphic.options
253
- bmap.deleteGraphic(graphic)
254
- setTimeout(() => {
255
- bmap.createGraphicByOptions(options)
256
- }, 1000)
257
- })
261
+ document
262
+ .getElementById("deleteAnCreateGraphic")
263
+ ?.addEventListener("click", () => {
264
+ const graphic = bmap.getGraphicByNodeId(graphicId)!;
265
+ console.log(graphic);
266
+ const options = graphic.options;
267
+ bmap.deleteGraphic(graphic);
268
+ setTimeout(() => {
269
+ bmap.createGraphicByOptions(options);
270
+ }, 1000);
271
+ });
258
272
  // 获取全部图元
259
- document.getElementById("getAllGraphics")?.addEventListener('click', () => {
260
- console.log(bmap.getFloorAllGraphics())
261
- })
273
+ document.getElementById("getAllGraphics")?.addEventListener("click", () => {
274
+ console.log(bmap.getFloorAllGraphics());
275
+ });
262
276
  // 添加选中块儿
263
- document.getElementById("addSelectBox")?.addEventListener('click', () => {
264
- const selectBox = new SelectBox(bmap.context)
265
- selectBox.selectGraphic(bmap.getGraphicByNodeId(graphicId)!)
277
+ document.getElementById("addSelectBox")?.addEventListener("click", () => {
278
+ const selectBox = new SelectBox(bmap.context);
279
+ selectBox.selectGraphic(bmap.getGraphicByNodeId(graphicId)!);
266
280
  setTimeout(() => {
267
- selectBox.setEnable(false)
268
- }, 1000)
269
- })
281
+ selectBox.setEnable(false);
282
+ }, 1000);
283
+ });
270
284
  // 切换楼层
271
- document.getElementById("switchFloor")?.addEventListener('click', async () => {
285
+ document.getElementById("switchFloor")?.addEventListener("click", async () => {
272
286
  await bmap.load({
273
287
  brand: "crc",
274
288
  project: "0202A501",
@@ -276,8 +290,7 @@ document.getElementById("switchFloor")?.addEventListener('click', async () => {
276
290
  building: "A",
277
291
  floor: "L1",
278
292
  ts: "2024-01-12",
279
- resource_type_list: [1, 2, 3, 4, 6].join(",")
280
-
293
+ resource_type_list: [1, 2, 3, 4, 6].join(","),
281
294
  });
282
295
  // 切换楼层
283
296
  bmap.switchFloor({
@@ -287,200 +300,226 @@ document.getElementById("switchFloor")?.addEventListener('click', async () => {
287
300
  building: "A",
288
301
  floor: "L1",
289
302
  ts: "2024-01-12",
290
- resource_type_list: [1, 2, 3, 4, 6].join(",")
291
- })
292
- })
303
+ resource_type_list: [1, 2, 3, 4, 6].join(","),
304
+ });
305
+ });
293
306
  // hover显示覆盖物
294
- document.getElementById("hoverShowOverlay")?.addEventListener('click', async () => {
295
- const overlaysMap = new Map<Graphic, Overlay>()
296
- const overlayState = new Map<Overlay, { graphicHover: boolean, divHover: boolean }>()
297
- bmap.context.addEventListener("hover", ({ graphics }) => {
298
- // console.log("hover", graphics)
299
- // overlaysMap.forEach(item => item.dispose())
300
- // graphics.forEach(graphic => {
301
- // const overlay = new Overlay(bmap.context)
302
- // overlay.bindElement(graphic)
303
- // const div = document.createElement("div")
304
- // div.style.cssText = "width: 100px; height: 100px; background: red;transform: translate(-50%, -100%);"
305
- // div.textContent = "显示一段文本"
306
- // })
307
- // 没有hover的元素要删除
308
- overlaysMap.forEach((overlay, graphic) => {
309
- if (!graphics.includes(graphic)) {
310
- // overlay.dispose();
311
- // overlaysMap.delete(graphic)
312
- overlayState.get(overlay)!.graphicHover = false
313
- window.requestAnimationFrame(() => {
314
- // 鼠标即不在div上也不再graphic上就销毁这个overlay
315
- if (!overlayState.get(overlay)!.divHover) {
316
- overlay.dispose();
317
- overlaysMap.delete(graphic)
318
- }
319
- })
320
- }
321
- })
322
- graphics.forEach(graphic => {
323
- if (overlaysMap.has(graphic)) {
324
- return
325
- }
326
- const overlay = new Overlay(bmap.context, { autoUpdate: false });
327
- overlay.addEventListener(
328
- "update-position",
329
- ({ x, y, height }: { x: number; y: number; height: number }) => {
330
- overlay.div.style.transform = `translate3d(calc(${x}px - 50%), calc(${
331
- -height + y - 20
332
- }px - 100%), 0)`;
307
+ document
308
+ .getElementById("hoverShowOverlay")
309
+ ?.addEventListener("click", async () => {
310
+ const overlaysMap = new Map<Graphic, Overlay>();
311
+ const overlayState = new Map<
312
+ Overlay,
313
+ { graphicHover: boolean; divHover: boolean }
314
+ >();
315
+ bmap.context.addEventListener("hover", ({ graphics }) => {
316
+ // console.log("hover", graphics)
317
+ // overlaysMap.forEach(item => item.dispose())
318
+ // graphics.forEach(graphic => {
319
+ // const overlay = new Overlay(bmap.context)
320
+ // overlay.bindElement(graphic)
321
+ // const div = document.createElement("div")
322
+ // div.style.cssText = "width: 100px; height: 100px; background: red;transform: translate(-50%, -100%);"
323
+ // div.textContent = "显示一段文本"
324
+ // })
325
+ // 没有hover的元素要删除
326
+ overlaysMap.forEach((overlay, graphic) => {
327
+ if (!graphics.includes(graphic)) {
328
+ // overlay.dispose();
329
+ // overlaysMap.delete(graphic)
330
+ overlayState.get(overlay)!.graphicHover = false;
331
+ window.requestAnimationFrame(() => {
332
+ // 鼠标即不在div上也不再graphic上就销毁这个overlay
333
+ if (!overlayState.get(overlay)!.divHover) {
334
+ overlay.dispose();
335
+ overlaysMap.delete(graphic);
336
+ }
337
+ });
333
338
  }
334
- );
335
- overlay.bindElement(graphic)
336
- const div = document.createElement("div")
337
- // console.log(overlay)
338
- div.style.cssText = "width: 100px; height: 100px; background: red;point-event: none; "
339
- div.textContent = "显示一段文本"
340
- overlay.div.addEventListener("mouseover", () => {
341
- console.log("进入额")
342
- overlayState.get(overlay)!.divHover = true
343
- console.log(overlayState.get(overlay))
344
- })
345
- overlay.div.addEventListener("mouseout", () => {
346
- console.log("移除了")
347
- overlayState.get(overlay)!.divHover = false
348
- if (!overlayState.get(overlay)!.graphicHover) {
349
- overlay.dispose();
350
- overlaysMap.delete(graphic)
339
+ });
340
+ graphics.forEach((graphic) => {
341
+ if (overlaysMap.has(graphic)) {
342
+ return;
351
343
  }
352
- })
353
- overlay.div.appendChild(div)
354
- overlaysMap.set(graphic, overlay)
355
- overlayState.set(overlay, {graphicHover: true, divHover: false})
356
- })
357
- })
358
- })
359
- document.getElementById("changeGraphicColor")?.addEventListener('click', () => {
344
+ const overlay = new Overlay(bmap.context, { autoUpdate: false });
345
+ overlay.addEventListener(
346
+ "update-position",
347
+ ({ x, y, height }: { x: number; y: number; height: number }) => {
348
+ overlay.div.style.transform = `translate3d(calc(${x}px - 50%), calc(${
349
+ -height + y - 20
350
+ }px - 100%), 0)`;
351
+ }
352
+ );
353
+ overlay.bindElement(graphic);
354
+ const div = document.createElement("div");
355
+ // console.log(overlay)
356
+ div.style.cssText =
357
+ "width: 100px; height: 100px; background: red;point-event: none; ";
358
+ div.textContent = "显示一段文本";
359
+ overlay.div.addEventListener("mouseover", () => {
360
+ console.log("进入额");
361
+ overlayState.get(overlay)!.divHover = true;
362
+ console.log(overlayState.get(overlay));
363
+ });
364
+ overlay.div.addEventListener("mouseout", () => {
365
+ console.log("移除了");
366
+ overlayState.get(overlay)!.divHover = false;
367
+ if (!overlayState.get(overlay)!.graphicHover) {
368
+ overlay.dispose();
369
+ overlaysMap.delete(graphic);
370
+ }
371
+ });
372
+ overlay.div.appendChild(div);
373
+ overlaysMap.set(graphic, overlay);
374
+ overlayState.set(overlay, { graphicHover: true, divHover: false });
375
+ });
376
+ });
377
+ });
378
+ document.getElementById("changeGraphicColor")?.addEventListener("click", () => {
360
379
  graphic.options.fillColor = "#000fff";
361
- })
362
- document.getElementById("changeGraphicOpacity")?.addEventListener('click', () => {
363
- graphic.options.fillOpacity = 0.5;
364
- })
365
- document.getElementById("changeGraphicBorder")?.addEventListener('click', () => {
366
- graphic.options.strokeColor = "#00ff00";
367
- })
368
- document.getElementById("changeGraphicBorderOpacity")?.addEventListener('click', () => {
369
- graphic.options.strokeOpacity = 0.5;
370
- })
371
- document.getElementById("changeGraphicHighlight")?.addEventListener('click', () => {
372
- // TODO 获取图源的资源id 在graphicLayer 和 poiLayer 中判断不是这些资源id的都改小透明度,是的透明度都设置成1
373
- })
374
- document.getElementById("changeGraphicAirHeight")?.addEventListener('click', () => {
375
- graphic.options.airHeight = 10
376
- // TODO 获取图源的资源id 然后获取poi 还需要修改对应poi的高度 airHeight + height
377
- })
378
- document.getElementById("changeGraphicHeight")?.addEventListener('click', () => {
379
- graphic.options.height = 20
380
- // TODO 获取图源的资源id 然后获取poi 还需要修改对应poi的高度 airHeight + height
381
- })
382
- document.getElementById("changeGraphicVisible")?.addEventListener('click', () => {
383
- graphic.options.visible = false
384
- })
385
- document.getElementById("changePoiIcon")?.addEventListener('click', () => {
386
- poi.options.icon = 'https://prod-deployment.oss-cn-hangzhou.aliyuncs.com/dd932d4d105e453ea93dd1787dcae6eb_icon-%E5%A4%A7%E5%B1%8F.svg'
387
- })
388
- document.getElementById("changePoiText")?.addEventListener('click', () => {
389
- poi.options.text = '修改后文本'
390
- })
391
- document.getElementById("changePoiVisible")?.addEventListener('click', () => {
392
- bmap.context.currentFloor?.poiLayer.removePoi(poi)
393
- })
394
- document.getElementById("changeLightColor")?.addEventListener('click', () => {
395
- bmap.context.changeAmbientLightColor(0xcccccc)
396
- })
380
+ });
381
+ document
382
+ .getElementById("changeGraphicOpacity")
383
+ ?.addEventListener("click", () => {
384
+ graphic.options.fillOpacity = 0.5;
385
+ });
386
+ document
387
+ .getElementById("changeGraphicBorder")
388
+ ?.addEventListener("click", () => {
389
+ graphic.options.strokeColor = "#00ff00";
390
+ });
391
+ document
392
+ .getElementById("changeGraphicBorderOpacity")
393
+ ?.addEventListener("click", () => {
394
+ graphic.options.strokeOpacity = 0.5;
395
+ });
396
+ document
397
+ .getElementById("changeGraphicHighlight")
398
+ ?.addEventListener("click", () => {
399
+ // TODO 获取图源的资源id 在graphicLayer poiLayer 中判断不是这些资源id的都改小透明度,是的透明度都设置成1
400
+ });
401
+ document
402
+ .getElementById("changeGraphicAirHeight")
403
+ ?.addEventListener("click", () => {
404
+ graphic.options.airHeight = 10;
405
+ // TODO 获取图源的资源id 然后获取poi 还需要修改对应poi的高度 airHeight + height
406
+ });
407
+ document
408
+ .getElementById("changeGraphicHeight")
409
+ ?.addEventListener("click", () => {
410
+ graphic.options.height = 20;
411
+ // TODO 获取图源的资源id 然后获取poi 还需要修改对应poi的高度 airHeight + height
412
+ });
413
+ document
414
+ .getElementById("changeGraphicVisible")
415
+ ?.addEventListener("click", () => {
416
+ graphic.options.visible = false;
417
+ });
418
+ document.getElementById("changePoiIcon")?.addEventListener("click", () => {
419
+ poi.options.icon =
420
+ "https://prod-deployment.oss-cn-hangzhou.aliyuncs.com/dd932d4d105e453ea93dd1787dcae6eb_icon-%E5%A4%A7%E5%B1%8F.svg";
421
+ });
422
+ document.getElementById("changePoiText")?.addEventListener("click", () => {
423
+ poi.options.text = "修改后文本";
424
+ });
425
+ document.getElementById("changePoiVisible")?.addEventListener("click", () => {
426
+ bmap.context.currentFloor?.poiLayer.removePoi(poi);
427
+ });
428
+ document.getElementById("changeLightColor")?.addEventListener("click", () => {
429
+ bmap.context.changeAmbientLightColor(0xcccccc);
430
+ });
397
431
  // document.getElementById("changeShadowLightColor")?.addEventListener('click', () => {
398
432
  // bmap.context.shadow.changeLightColor(0x111000)
399
433
  // })
400
- document.getElementById("openMouseDrag")?.addEventListener('click', () => {
401
- bmap.context.control.enablePan = true
402
- })
403
- document.getElementById("closeMouseDrag")?.addEventListener('click', () => {
404
- bmap.context.control.enablePan = false
405
- })
406
- document.getElementById("openMouseZoom")?.addEventListener('click', () => {
407
- bmap.context.control.enableZoom = true
408
- })
409
- document.getElementById("closeMouseZoom")?.addEventListener('click', () => {
410
- bmap.context.control.enableZoom = false
411
- })
412
- document.getElementById("reduceMap")?.addEventListener('click', () => {
413
- bmap.reduceMap(0.5, 100)
414
- })
415
- document.getElementById("enlargeMap")?.addEventListener('click', () => {
416
- bmap.enlargeMap(0.3, 0)
417
- })
418
- document.getElementById("centerView")?.addEventListener('click', () => {
419
- bmap.resize()
420
- bmap.resetView()
421
- })
422
- document.getElementById("centerGraphic")?.addEventListener('click', () => {
423
- bmap.context.fitCameraToObject(graphic)
424
- })
425
- document.getElementById("change2d")?.addEventListener('click', () => {
426
- bmap.changeMapType('2d')
427
- })
428
- document.getElementById("change3d")?.addEventListener('click', () => {
429
- bmap.changeMapType('3d')
430
- })
431
- document.getElementById("configurePolarShortcutKeys")?.addEventListener('click', () => {
432
- bmap.configurePolarShortcutKeys(['ControlLeft', 'MetaLeft', 'KeyC'])
433
- })
434
- document.getElementById("configureAzimuthShortcutKeys")?.addEventListener('click', () => {
435
- bmap.configureAzimuthalShortcutKeys(['KeyV'])
436
- })
437
- document.getElementById("changeAzimuth")?.addEventListener('click', () => {
438
- bmap.rotateMap()
439
- })
440
- const fn = (data) => {
441
- console.log(data.graphics, data.pois)
442
- }
443
- document.getElementById("openHover")?.addEventListener('click', () => {
444
- bmap.context.addEventListener("pointer-over", fn)
445
- bmap.context.addEventListener("pointer-move", fn)
446
- })
447
- document.getElementById("closeHover")?.addEventListener('click', () => {
448
- bmap.context.removeEventListener("pointer-over", fn)
449
- bmap.context.removeEventListener("pointer-move", fn)
450
- })
451
- document.getElementById("mousePickup")?.addEventListener('click', () => {
434
+ document.getElementById("openMouseDrag")?.addEventListener("click", () => {
435
+ bmap.context.control.enablePan = true;
436
+ });
437
+ document.getElementById("closeMouseDrag")?.addEventListener("click", () => {
438
+ bmap.context.control.enablePan = false;
439
+ });
440
+ document.getElementById("openMouseZoom")?.addEventListener("click", () => {
441
+ bmap.context.control.enableZoom = true;
442
+ });
443
+ document.getElementById("closeMouseZoom")?.addEventListener("click", () => {
444
+ bmap.context.control.enableZoom = false;
445
+ });
446
+ document.getElementById("reduceMap")?.addEventListener("click", () => {
447
+ bmap.reduceMap(0.5, 100);
448
+ });
449
+ document.getElementById("enlargeMap")?.addEventListener("click", () => {
450
+ bmap.enlargeMap(0.3, 0);
451
+ });
452
+ document.getElementById("centerView")?.addEventListener("click", () => {
453
+ bmap.resize();
454
+ bmap.resetView();
455
+ });
456
+ document.getElementById("centerGraphic")?.addEventListener("click", () => {
457
+ bmap.context.fitCameraToObject(graphic);
458
+ });
459
+ document.getElementById("change2d")?.addEventListener("click", () => {
460
+ bmap.changeMapType("2d");
461
+ });
462
+ document.getElementById("change3d")?.addEventListener("click", () => {
463
+ bmap.changeMapType("3d");
464
+ });
465
+ document
466
+ .getElementById("configurePolarShortcutKeys")
467
+ ?.addEventListener("click", () => {
468
+ bmap.configurePolarShortcutKeys(["ControlLeft", "MetaLeft", "KeyC"]);
469
+ });
470
+ document
471
+ .getElementById("configureAzimuthShortcutKeys")
472
+ ?.addEventListener("click", () => {
473
+ bmap.configureAzimuthalShortcutKeys(["KeyV"]);
474
+ });
475
+ document.getElementById("changeAzimuth")?.addEventListener("click", () => {
476
+ bmap.rotateMap();
477
+ });
478
+ const fn = (data) => {
479
+ console.log(data.graphics, data.pois);
480
+ };
481
+ document.getElementById("openHover")?.addEventListener("click", () => {
482
+ bmap.context.addEventListener("pointer-over", fn);
483
+ bmap.context.addEventListener("pointer-move", fn);
484
+ });
485
+ document.getElementById("closeHover")?.addEventListener("click", () => {
486
+ bmap.context.removeEventListener("pointer-over", fn);
487
+ bmap.context.removeEventListener("pointer-move", fn);
488
+ });
489
+ document.getElementById("mousePickup")?.addEventListener("click", () => {
452
490
  // TODO
453
- })
454
- document.getElementById("mouseMulPickup")?.addEventListener('click', () => {
491
+ });
492
+ document.getElementById("mouseMulPickup")?.addEventListener("click", () => {
455
493
  // TODO
456
- })
457
- document.getElementById("overlayText")?.addEventListener('click', () => {
458
- const overlay = new Overlay(bmap.context)
459
- overlay.bindElement(graphic)
460
- overlay.div.textContent = "显示覆盖物文本"
494
+ });
495
+ document.getElementById("overlayText")?.addEventListener("click", () => {
496
+ const overlay = new Overlay(bmap.context);
497
+ overlay.bindElement(graphic);
498
+ overlay.div.textContent = "显示覆盖物文本";
461
499
  document.getElementById("hideOverlayText")?.addEventListener("click", () => {
462
- overlay.dispose()
463
- })
464
- })
465
- document.getElementById("clickOverlayText")?.addEventListener('click', () => {
466
- bmap.context.addEventListener('graphic-click', ({ graphics, position }) => {
467
- console.log(graphics, position)
500
+ overlay.dispose();
501
+ });
502
+ });
503
+ document.getElementById("clickOverlayText")?.addEventListener("click", () => {
504
+ bmap.context.addEventListener("graphic-click", ({ graphics, position }) => {
505
+ console.log(graphics, position);
468
506
  if (position) {
469
- const overlay = new Overlay(bmap.context)
470
- overlay.position.copy(position)
471
- overlay.div.textContent = "点击显示覆盖物文本"
507
+ const overlay = new Overlay(bmap.context);
508
+ overlay.position.copy(position);
509
+ overlay.div.textContent = "点击显示覆盖物文本";
472
510
  }
473
- })
474
- })
475
- document.getElementById("overlayImage")?.addEventListener('click', () => {
476
- const overlay = new Overlay(bmap.context)
477
- overlay.bindElement(graphic)
478
- const img = document.createElement("img")
479
- img.src = "https://robot-vr-public.cdn.bcebos.com/navigation_images/8c591818844be70fd93bd5817c7d3d50.png"
480
- overlay.div.style.transform = 'translate3d(-50%, -50%, 0)'
481
- overlay.div.appendChild(img)
482
- })
483
- document.getElementById("heatmap")?.addEventListener('click', () => {
511
+ });
512
+ });
513
+ document.getElementById("overlayImage")?.addEventListener("click", () => {
514
+ const overlay = new Overlay(bmap.context);
515
+ overlay.bindElement(graphic);
516
+ const img = document.createElement("img");
517
+ img.src =
518
+ "https://robot-vr-public.cdn.bcebos.com/navigation_images/8c591818844be70fd93bd5817c7d3d50.png";
519
+ overlay.div.style.transform = "translate3d(-50%, -50%, 0)";
520
+ overlay.div.appendChild(img);
521
+ });
522
+ document.getElementById("heatmap")?.addEventListener("click", () => {
484
523
  bmap.addHeatmap({
485
524
  data: [
486
525
  { x: -100, y: 100, value: 1 },
@@ -489,25 +528,31 @@ document.getElementById("heatmap")?.addEventListener('click', () => {
489
528
  { x: -100, y: -100, value: 25 },
490
529
  ],
491
530
  max: 100,
492
- min: 1
493
- })
494
- })
495
- document.getElementById("measureDistance")?.addEventListener('click', async () => {
496
- bmap.context.currentFloor?.addGround(graphic)
497
- const distance = await bmap.measureDistance()
498
- console.log("测量距离是" + distance + "米")
499
- })
500
- document.getElementById("cancelMeasureDistance")?.addEventListener('click', async () => {
501
- bmap.cancelDistance()
502
- })
503
- document.getElementById("measureArea")?.addEventListener('click', async () => {
504
- bmap.context.currentFloor?.addGround(graphic)
505
- const distance = await bmap.measureArea()
506
- console.log("测量面积是" + distance + "平方米")
507
- })
508
- document.getElementById("cancelMeasureArea")?.addEventListener('click', async () => {
509
- bmap.cancelArea()
510
- })
531
+ min: 1,
532
+ });
533
+ });
534
+ document
535
+ .getElementById("measureDistance")
536
+ ?.addEventListener("click", async () => {
537
+ bmap.context.currentFloor?.addGround(graphic);
538
+ const distance = await bmap.measureDistance();
539
+ console.log("测量距离是" + distance + "米");
540
+ });
541
+ document
542
+ .getElementById("cancelMeasureDistance")
543
+ ?.addEventListener("click", async () => {
544
+ bmap.cancelDistance();
545
+ });
546
+ document.getElementById("measureArea")?.addEventListener("click", async () => {
547
+ bmap.context.currentFloor?.addGround(graphic);
548
+ const distance = await bmap.measureArea();
549
+ console.log("测量面积是" + distance + "平方米");
550
+ });
551
+ document
552
+ .getElementById("cancelMeasureArea")
553
+ ?.addEventListener("click", async () => {
554
+ bmap.cancelArea();
555
+ });
511
556
 
512
557
  // TODO - 「<键」顺时针旋转,「>键」逆时针旋转
513
558
  // TODO - 配置坐标定点旋转快捷键的接口
@@ -523,11 +568,11 @@ document.getElementById("cancelMeasureArea")?.addEventListener('click', async ()
523
568
  // TODO 可以设置字体背景颜色、字体背景描边颜色
524
569
  // poi.options.textBackgroundColor = "#000fff"
525
570
  // poi.options.textBackgroundStrokeColor = "#000fff"
526
-
571
+
527
572
  // TODO 连线覆盖物
528
573
  // const overlay = new LinkOverlay(bmap.context)
529
- // overlay.position.copy(position)
530
- // overlay.div.appendChild()
574
+ // overlay.position.copy(position)
575
+ // overlay.div.appendChild()
531
576
  // TODO 弹窗覆盖物
532
577
  // const overlay = new ModalOverlay(bmap.context)
533
578
  // overlay.position.copy(position)
@@ -549,7 +594,7 @@ document.getElementById("cancelMeasureArea")?.addEventListener('click', async ()
549
594
  // bmap.switchFloor("B1")
550
595
  // TODO 加载地图
551
596
  // await bmap.load({ project, phase, building, floor });
552
- // TODO 资源数据渲染地图的调用
597
+ // TODO 资源数据渲染地图的调用
553
598
  // 传入资源图层类型ID,向后台请求数据,铺位:10001, 库房:10002,广告位:10003
554
599
  // showResourceLayerByLayerType
555
600
  // TODO 加载主题