@kimap/indoor-positioning-sdk-vue2 5.2.2 → 5.2.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kimap/indoor-positioning-sdk-vue2",
3
- "version": "5.2.2",
3
+ "version": "5.2.3",
4
4
  "description": "Vue2自包含室内定位SDK - 完全兼容Webpack3+Babel6 | Vue2 Self-Contained Indoor Positioning SDK",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -660,9 +660,6 @@ KimapSDK.prototype.autoAdjustCamera = function(options) {
660
660
  KimapSDK.prototype.getConfig = function() {
661
661
  var config = {};
662
662
 
663
- console.log('[getConfig] _mapConfig:', this._mapConfig);
664
- console.log('[getConfig] _borderInfo:', this._borderInfo);
665
-
666
663
  // 从coordinateSystem获取scale
667
664
  if (this.core && this.core.coordinateSystem) {
668
665
  var coordSys = this.core.coordinateSystem;
@@ -692,16 +689,13 @@ KimapSDK.prototype.getConfig = function() {
692
689
  // modelToRealScale: 模型尺寸与真实尺寸的比例
693
690
  if (this._mapConfig.modelToRealScale) {
694
691
  config.modelToRealScale = this._mapConfig.modelToRealScale;
695
- console.log('[getConfig] 使用_mapConfig中的modelToRealScale:', config.modelToRealScale);
696
692
  } else if (config.mapX && this._mapConfig.realWidth) {
697
693
  // 如果没有直接提供modelToRealScale,根据模型尺寸和真实尺寸计算
698
694
  // modelToRealScale = 模型宽度(米) / 真实宽度(米)
699
695
  config.modelToRealScale = config.mapX / (this._mapConfig.realWidth / 100);
700
- console.log('[getConfig] 计算modelToRealScale:', config.modelToRealScale, '= mapX:', config.mapX, '/ realWidth:', this._mapConfig.realWidth / 100);
701
696
  } else {
702
697
  // 默认值
703
698
  config.modelToRealScale = 1.0;
704
- console.log('[getConfig] 使用默认modelToRealScale: 1.0');
705
699
  }
706
700
 
707
701
  // 添加完整的mapConfig数据
@@ -712,7 +706,6 @@ KimapSDK.prototype.getConfig = function() {
712
706
  config.isCalibrated = false;
713
707
  // 默认modelToRealScale为1.0(模型单位=真实单位)
714
708
  config.modelToRealScale = 1.0;
715
- console.log('[getConfig] 没有校准数据,使用默认modelToRealScale: 1.0');
716
709
  }
717
710
 
718
711
  return config;
@@ -267,30 +267,17 @@ SceneCore.prototype.loadMap = function(OBJLoader, MTLLoader) {
267
267
  SceneCore.prototype._loadKimapFile = function(kimapUrl, themeUrl, objLoader, mtlLoader, resolve, reject) {
268
268
  var self = this;
269
269
 
270
- console.log('[SceneCore] 开始加载Kimap加密文件');
271
- console.log('[SceneCore] Kimap URL:', kimapUrl);
272
- console.log('[SceneCore] Theme URL:', themeUrl);
273
-
274
- // 先尝试加载theme材质文件
275
270
  var loadTheme = function(callback) {
276
271
  if (!mtlLoader) {
277
- console.log('[SceneCore] ⚠️ MTLLoader未加载,跳过材质文件');
278
272
  callback(null);
279
273
  return;
280
274
  }
281
275
 
282
- console.log('[SceneCore] 开始加载Theme材质文件...');
283
276
  var themeLoader = new THREE.FileLoader();
284
- themeLoader.setResponseType('text');
285
- console.log('[SceneCore] FileLoader配置: responseType=text');
286
277
 
287
278
  themeLoader.load(
288
279
  themeUrl,
289
280
  function(themeContent) {
290
- console.log('[SceneCore] ✓ Theme文件下载完成');
291
- console.log('[SceneCore] 内容类型:', typeof themeContent);
292
- console.log('[SceneCore] 内容长度:', themeContent ? themeContent.length : 0);
293
-
294
281
  try {
295
282
  // 验证内容类型
296
283
  if (typeof themeContent !== 'string') {
@@ -300,7 +287,6 @@ SceneCore.prototype._loadKimapFile = function(kimapUrl, themeUrl, objLoader, mtl
300
287
  var mtlContent = decryptTheme(themeContent);
301
288
  var materials = mtlLoader.parse(mtlContent);
302
289
  materials.preload();
303
- console.log('[SceneCore] ✅ 材质文件加载成功');
304
290
  callback(materials);
305
291
  } catch (error) {
306
292
  console.warn('[SceneCore] Theme材质解析失败:', error.message);
@@ -309,14 +295,9 @@ SceneCore.prototype._loadKimapFile = function(kimapUrl, themeUrl, objLoader, mtl
309
295
  }
310
296
  },
311
297
  function(progress) {
312
- if (progress.lengthComputable) {
313
- var percent = (progress.loaded / progress.total * 100).toFixed(2);
314
- console.log('[SceneCore] Theme下载进度:', percent + '%');
315
- }
298
+ // 加载进度
316
299
  },
317
300
  function(error) {
318
- console.log('[SceneCore] ℹ️ 未找到材质文件,使用默认材质');
319
- console.log('[SceneCore] Theme加载错误:', error);
320
301
  callback(null);
321
302
  }
322
303
  );
@@ -328,75 +309,56 @@ SceneCore.prototype._loadKimapFile = function(kimapUrl, themeUrl, objLoader, mtl
328
309
  }
329
310
 
330
311
  // 使用FileLoader加载Kimap文本内容
331
- console.log('[SceneCore] 开始加载Kimap文件...');
332
312
  var fileLoader = new THREE.FileLoader();
333
313
  fileLoader.setResponseType('text');
334
- console.log('[SceneCore] FileLoader配置: responseType=text');
335
314
 
336
315
  fileLoader.load(
337
316
  kimapUrl,
338
317
  function(kimapContent) {
339
- console.log('[SceneCore] ✓ Kimap文件下载完成');
340
- console.log('[SceneCore] 内容类型:', typeof kimapContent);
341
- console.log('[SceneCore] 内容长度:', kimapContent ? kimapContent.length : 0);
342
-
343
318
  try {
344
319
  // 验证内容类型
345
320
  if (typeof kimapContent !== 'string') {
346
321
  throw new Error('Kimap文件内容不是字符串类型: ' + typeof kimapContent);
347
322
  }
348
323
 
349
- console.log('[SceneCore] 开始解密Kimap内容...');
350
-
351
324
  // 解密Kimap内容为OBJ
352
325
  var objContent = decryptKimap(kimapContent);
353
326
 
354
- console.log('[SceneCore] ✓ 解密成功,开始解析OBJ模型...');
355
-
356
327
  // 提取边界信息
357
328
  var borderInfo = extractBorderFromOBJ(objContent);
358
329
  if (borderInfo) {
359
- console.log('[SceneCore] ✅ 提取到边界信息:', borderInfo);
360
330
  self._borderInfo = borderInfo;
361
331
  }
362
332
 
363
333
  // 提取地图配置信息(校准数据)
364
334
  var mapConfig = extractMapConfigFromOBJ(objContent);
365
335
  if (mapConfig && mapConfig.isCalibrated) {
366
- console.log('[SceneCore] ✅ 提取到校准数据:', mapConfig);
367
336
  self._mapConfig = mapConfig;
368
337
  }
369
338
 
370
339
  // 提取颜色信息(作为备用)
371
340
  var colorMap = materials ? {} : extractColorsFromOBJ(objContent);
372
- if (!materials) {
373
- console.log('[SceneCore] 提取到颜色信息:', colorMap);
374
- }
375
341
 
376
342
  // 提取文本元素
377
343
  var textElements = extractTextElementsFromOBJ(objContent);
378
344
  if (textElements && textElements.length > 0) {
379
- console.log('[SceneCore] ✅ 从OBJ提取到文本元素:', textElements.length, '个');
380
345
  self._textElements = textElements;
381
346
  }
382
347
 
383
348
  // 提取墙体透明度信息
384
349
  var wallOpacity = extractWallOpacityFromOBJ(objContent);
385
350
  if (wallOpacity && Object.keys(wallOpacity).length > 0) {
386
- console.log('[SceneCore] ✅ 从OBJ提取到墙体透明度:', Object.keys(wallOpacity).length, '个墙体');
387
351
  self._wallOpacity = wallOpacity;
388
352
  }
389
353
 
390
354
  // 提取形状透明度信息(矩形、圆形、多边形)
391
355
  var shapeOpacity = extractShapeOpacityFromOBJ(objContent);
392
356
  if (shapeOpacity && Object.keys(shapeOpacity).length > 0) {
393
- console.log('[SceneCore] ✅ 从OBJ提取到形状透明度:', Object.keys(shapeOpacity).length, '个形状');
394
357
  self._shapeOpacity = shapeOpacity;
395
358
  }
396
359
 
397
360
  // 解析OBJ内容
398
361
  var object = objLoader.parse(objContent);
399
- console.log('[SceneCore] ✓ OBJ解析完成,处理模型...');
400
362
 
401
363
  self._processLoadedModel(object, materials, colorMap);
402
364
 
@@ -413,15 +375,9 @@ SceneCore.prototype._loadKimapFile = function(kimapUrl, themeUrl, objLoader, mtl
413
375
  }
414
376
  },
415
377
  function(progress) {
416
- if (progress.lengthComputable) {
417
- var percent = (progress.loaded / progress.total * 100).toFixed(2);
418
- console.log('[SceneCore] Kimap下载进度:', percent + '%');
419
- }
378
+ // 加载进度
420
379
  },
421
380
  function(error) {
422
- console.error('[SceneCore] ✗ Kimap文件加载失败');
423
- console.error('[SceneCore] URL:', kimapUrl);
424
- console.error('[SceneCore] 错误详情:', error);
425
381
  reject(error);
426
382
  }
427
383
  );
@@ -550,8 +506,6 @@ SceneCore.prototype._processLoadedModel = function(object, materials, colorMap)
550
506
  // - ID哈希偏移: 0~0.0005m
551
507
  // =====================================================
552
508
 
553
- console.log('[SceneCore] 🏁 开始处理区域层级,数量:', areaMeshes.length);
554
-
555
509
  areaMeshes.forEach(function(areaMesh, index) {
556
510
  // 计算层级偏移:每个区域增加 0.001m(1mm)
557
511
  var levelYOffset = areaLevel * 0.001;
@@ -571,20 +525,9 @@ SceneCore.prototype._processLoadedModel = function(object, materials, colorMap)
571
525
  // 设置渲染层级(层级越高越晚渲染,在上面)
572
526
  areaMesh.renderOrder = areaLevel * 1000;
573
527
 
574
- console.log('[SceneCore] ✅ 区域层级设置:', {
575
- name: areaMesh.material.name,
576
- areaLevel: areaLevel,
577
- renderOrder: areaMesh.renderOrder,
578
- yOffset: totalYOffset.toFixed(6) + 'm'
579
- });
580
-
581
528
  areaLevel++;
582
529
  });
583
530
 
584
- console.log('=== 模型加载成功 ===');
585
- console.log('网格数量:', meshCount);
586
- console.log('总顶点数:', vertexCount);
587
-
588
531
  // 自动调整相机位置
589
532
  self._adjustCameraToModel();
590
533
  };
@@ -629,7 +572,6 @@ SceneCore.prototype._processMaterial = function(child, materials, colorMap) {
629
572
  transparent = opacity < 1.0;
630
573
  // 高透明度时关闭depthWrite
631
574
  depthWrite = opacity >= 0.8;
632
- console.log('[SceneCore] 应用墙体透明度:', wallId, '=', opacity);
633
575
  }
634
576
  }
635
577
  } else if (child.material.name.startsWith('Shape_') || child.material.name.startsWith('Stair_')) {
@@ -643,7 +585,6 @@ SceneCore.prototype._processMaterial = function(child, materials, colorMap) {
643
585
  transparent = opacity < 1.0;
644
586
  // 高透明度时关闭depthWrite
645
587
  depthWrite = opacity >= 0.8;
646
- console.log('[SceneCore] 应用形状透明度:', shapeId, '=', opacity);
647
588
  }
648
589
  }
649
590
  // 混合10%白色,让颜色更浅一点
@@ -880,13 +821,6 @@ SceneCore.prototype.renderTextElements = function(textElements) {
880
821
  var elevationMm = textEl.elevation || 8500; // 默认8500mm(850cm)
881
822
  var y = (elevationMm / LOGICAL_WALL_HEIGHT) * RENDER_WALL_HEIGHT;
882
823
 
883
- console.log('[SceneCore] 文本元素属性:', {
884
- content: textEl.content,
885
- backgroundColor: textEl.backgroundColor,
886
- borderColor: textEl.borderColor,
887
- color: textEl.color
888
- });
889
-
890
824
  // 文本缩放因子:3D场景中需要放大字体才能看清
891
825
  var TEXT_SCALE_FACTOR = 2.52;
892
826
 
@@ -907,8 +841,6 @@ SceneCore.prototype.renderTextElements = function(textElements) {
907
841
  sprite.userData = { type: 'text', elementId: textEl.id };
908
842
  self.textGroup.add(sprite);
909
843
  });
910
-
911
- console.log('[SceneCore] ✅ 文本元素渲染完成:', textElements.length, '个');
912
844
  };
913
845
 
914
846
  /**
@@ -49,20 +49,11 @@ function base64Decode(base64) {
49
49
  */
50
50
  function decryptKimap(kimapContent) {
51
51
  try {
52
- // 诊断日志
53
- console.log('[Crypto] 开始解密Kimap文件');
54
- console.log('[Crypto] 内容类型:', typeof kimapContent);
55
- console.log('[Crypto] 内容长度:', kimapContent ? kimapContent.length : 0);
56
-
57
52
  // 验证内容不为空
58
53
  if (!kimapContent) {
59
54
  throw new Error('文件内容为空');
60
55
  }
61
56
 
62
- // 显示前50个字符用于调试
63
- var preview = kimapContent.substring(0, Math.min(50, kimapContent.length));
64
- console.log('[Crypto] 内容预览:', preview);
65
-
66
57
  // 1. 检查文件头 - 支持新旧两种格式
67
58
  var newHeader = 'KIMAP_ENCRYPTED_V1';
68
59
  var oldHeader = 'KIMAP_V1';
@@ -80,25 +71,20 @@ function decryptKimap(kimapContent) {
80
71
  }
81
72
 
82
73
  var headerUsed = isNewFormat ? newHeader : oldHeader;
83
- console.log('[Crypto] ✓ 文件头验证通过 (格式: ' + headerUsed + ')');
84
74
 
85
75
  // 2. 提取加密内容(去掉文件头)
86
76
  var headerLength = headerUsed.length + 1; // +1 for newline
87
77
  var encryptedBase64 = kimapContent.substring(headerLength);
88
- console.log('[Crypto] Base64内容长度:', encryptedBase64.length);
89
78
 
90
79
  // 3. Base64解码
91
80
  var encryptedBytes = base64Decode(encryptedBase64);
92
- console.log('[Crypto] ✓ Base64解码完成, 字节数:', encryptedBytes.length);
93
81
 
94
82
  // 4. XOR解密
95
83
  var ENCRYPTION_KEY = 'KIMAP_3D_MODEL_2024';
96
84
  var decryptedBytes = xorCipher(encryptedBytes, ENCRYPTION_KEY);
97
- console.log('[Crypto] ✓ XOR解密完成');
98
85
 
99
86
  // 5. 转换为字符串
100
87
  var objContent = bytesToString(decryptedBytes);
101
- console.log('[Crypto] ✓ 解密成功, OBJ内容长度:', objContent.length);
102
88
 
103
89
  return objContent;
104
90
  } catch (error) {
@@ -122,20 +108,11 @@ function decryptTheme(themeContent) {
122
108
  var ENCRYPTION_KEY = 'KIMAP_3D_MODEL_2024';
123
109
 
124
110
  try {
125
- // 诊断日志
126
- console.log('[Crypto] 开始解密Theme文件');
127
- console.log('[Crypto] 内容类型:', typeof themeContent);
128
- console.log('[Crypto] 内容长度:', themeContent ? themeContent.length : 0);
129
-
130
111
  // 验证内容不为空
131
112
  if (!themeContent) {
132
113
  throw new Error('文件内容为空');
133
114
  }
134
115
 
135
- // 显示前50个字符用于调试
136
- var preview = themeContent.substring(0, Math.min(50, themeContent.length));
137
- console.log('[Crypto] 内容预览:', preview);
138
-
139
116
  // 1. 检查文件头 - 支持新旧两种格式
140
117
  var newHeader = 'KITHEME_ENCRYPTED_V1';
141
118
  var oldHeader = 'THEME_V1';
@@ -153,29 +130,22 @@ function decryptTheme(themeContent) {
153
130
  }
154
131
 
155
132
  var headerUsed = isNewFormat ? newHeader : oldHeader;
156
- console.log('[Crypto] ✓ 文件头验证通过 (格式: ' + headerUsed + ')');
157
133
 
158
134
  // 2. 提取加密内容
159
135
  var headerLength = headerUsed.length + 1; // +1 for newline
160
136
  var encryptedBase64 = themeContent.substring(headerLength);
161
- console.log('[Crypto] Base64内容长度:', encryptedBase64.length);
162
137
 
163
138
  // 3. Base64解码
164
139
  var encryptedBytes = base64Decode(encryptedBase64);
165
- console.log('[Crypto] ✓ Base64解码完成, 字节数:', encryptedBytes.length);
166
140
 
167
141
  // 4. XOR解密
168
142
  var decryptedBytes = xorCipher(encryptedBytes, ENCRYPTION_KEY);
169
- console.log('[Crypto] ✓ XOR解密完成');
170
143
 
171
144
  // 5. 转换为字符串
172
145
  var mtlContent = bytesToString(decryptedBytes);
173
- console.log('[Crypto] ✓ 解密成功, MTL内容长度:', mtlContent.length);
174
146
 
175
147
  return mtlContent;
176
148
  } catch (error) {
177
- console.error('[Crypto] ✗ Theme解密失败:', error.message);
178
- console.error('[Crypto] 错误堆栈:', error.stack);
179
149
  throw new Error('Theme解密失败: ' + (error.message || '未知错误'));
180
150
  }
181
151
  }
@@ -13,7 +13,6 @@ function setThreeInstance(threeInstance) {
13
13
  throw new Error('Three.js instance is required');
14
14
  }
15
15
  THREE = threeInstance;
16
- console.log('[Loaders] Three.js实例已设置');
17
16
  }
18
17
 
19
18
  /**
@@ -24,7 +23,6 @@ function loadThree() {
24
23
  // 尝试从require加载(用于npm环境)
25
24
  try {
26
25
  THREE = require('three');
27
- console.log('[Loaders] Three.js从require加载');
28
26
  } catch (error) {
29
27
  throw new Error('Three.js未设置且无法加载。请确保Three.js已安装: npm install three');
30
28
  }
@@ -80,8 +80,6 @@ function extractMapConfigFromOBJ(objContent) {
80
80
  }
81
81
  }
82
82
 
83
- console.log('[Parsers] 提取到的地图配置:', config);
84
-
85
83
  return foundConfig ? config : null;
86
84
  }
87
85
 
@@ -169,7 +167,6 @@ function extractTextElementsFromOBJ(objContent) {
169
167
  }
170
168
  }
171
169
 
172
- console.log('[Parsers] 提取到的文本元素:', textElements.length, '个');
173
170
  return textElements;
174
171
  }
175
172
 
@@ -209,7 +206,6 @@ function extractWallOpacityFromOBJ(objContent) {
209
206
  }
210
207
  }
211
208
 
212
- console.log('[Parsers] 提取到的墙体透明度:', Object.keys(wallOpacity).length, '个墙体');
213
209
  return wallOpacity;
214
210
  }
215
211
 
@@ -243,7 +239,6 @@ function extractShapeOpacityFromOBJ(objContent) {
243
239
  }
244
240
  }
245
241
 
246
- console.log('[Parsers] 提取到的形状透明度:', Object.keys(shapeOpacity).length, '个形状');
247
242
  return shapeOpacity;
248
243
  }
249
244