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