hn-map 1.1.11 → 1.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -461,6 +461,43 @@
461
461
  }
462
462
  });
463
463
  }
464
+ // mars3d 地图重写瓦片加载失败的回调,使控制台过滤掉瓦片加载失败的报错
465
+ function mars3dTileErrorHandler() {
466
+ // 确保 Cesium 已加载
467
+ if (typeof Cesium !== 'undefined' && Cesium.TileProviderError) {
468
+ var originalReportError = Cesium.TileProviderError.reportError;
469
+ Cesium.TileProviderError.reportError = function (existingError, provider, errorEvent, message, x, y, level, error) {
470
+ // 可选:判断是否为“瓦片不存在”类错误(如 404、fetch 失败等)
471
+ var shouldIgnore = (message === null || message === void 0 ? void 0 : message.includes('Failed to obtain image')) || (message === null || message === void 0 ? void 0 : message.includes('无法获得图块')) || (message === null || message === void 0 ? void 0 : message.includes('404')) || error && error.status === 404 || (message === null || message === void 0 ? void 0 : message.includes('NetworkError')) || (message === null || message === void 0 ? void 0 : message.includes('not found'));
472
+ if (shouldIgnore) {
473
+ // 静默处理:不打印日志,但仍可触发 errorEvent(供自定义监听)
474
+ // 注意:仍需调用 raiseEvent(如果有人监听),但跳过 console.log
475
+ if (Cesium.defined(errorEvent) && errorEvent.numberOfListeners > 0) {
476
+ var tileError = existingError;
477
+ if (Cesium.defined(existingError)) {
478
+ tileError.provider = provider;
479
+ tileError.message = message;
480
+ tileError.x = x;
481
+ tileError.y = y;
482
+ tileError.level = level;
483
+ tileError.retry = false;
484
+ tileError.error = error;
485
+ tileError.timesRetried = Cesium.defaultValue(tileError.timesRetried, 0) + 1;
486
+ } else {
487
+ tileError = new Cesium.TileProviderError(provider, message, x, y, level, 0, error);
488
+ }
489
+ errorEvent.raiseEvent(tileError);
490
+ return tileError;
491
+ } else {
492
+ // 没人监听,且我们不想打印 → 直接返回一个空错误对象(或 null)
493
+ return existingError || new Cesium.TileProviderError(provider, message, x, y, level, 0, error);
494
+ }
495
+ }
496
+ // 非忽略错误:走原始逻辑
497
+ return originalReportError.apply(this, arguments);
498
+ };
499
+ }
500
+ }
464
501
 
465
502
  var map = (function (hnMap) {
466
503
  var defaultOption = {
@@ -1719,6 +1756,7 @@
1719
1756
  this.option = null;
1720
1757
  this.type = null;
1721
1758
  this.show = false;
1759
+ this.id = null;
1722
1760
  this.hnMap = hnMap;
1723
1761
  this.event = {};
1724
1762
  this.show = false;
@@ -1813,9 +1851,9 @@
1813
1851
  }
1814
1852
  }, {
1815
1853
  key: "on",
1816
- value: function on(eventType, eventId, callback) {
1854
+ value: function on(eventType, callback) {
1817
1855
  var _this3 = this;
1818
- this.off(eventType, eventId);
1856
+ this.off(eventType);
1819
1857
  switch (eventType) {
1820
1858
  case "click":
1821
1859
  this.event[eventType] = function () {
@@ -1823,13 +1861,13 @@
1823
1861
  };
1824
1862
  break;
1825
1863
  }
1826
- this.hnMap.map.map.on(eventType, eventId, this.event[eventType]);
1864
+ this.hnMap.map.map.on(eventType, this.id, this.event[eventType]);
1827
1865
  } // 监听事件
1828
1866
  }, {
1829
1867
  key: "off",
1830
- value: function off(eventType, eventId) {
1868
+ value: function off(eventType) {
1831
1869
  if (this.event[eventType]) {
1832
- this.hnMap.map.map.off(eventType, eventId, this.event[eventType]);
1870
+ this.hnMap.map.map.off(eventType, this.id, this.event[eventType]);
1833
1871
  delete this.event[eventType];
1834
1872
  }
1835
1873
  }
@@ -5698,6 +5736,7 @@
5698
5736
  _context2.n = 7;
5699
5737
  return loadResource(basePath + "lib/mars3d/plugins/heatmap/mars3d-heatmap.js", "js");
5700
5738
  case 7:
5739
+ mars3dTileErrorHandler();
5701
5740
  return _context2.a(3, 18);
5702
5741
  case 8:
5703
5742
  _context2.n = 9;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hn-map",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "hn-map集成mars3d、高德、思极",
5
5
  "main": "dist/index.js",
6
6
  "author": "庞大仙",
@@ -8,6 +8,7 @@ export default class siji_entity {
8
8
  option: any = null;
9
9
  type: any = null;
10
10
  show: boolean = false;
11
+ id:any = null
11
12
 
12
13
  constructor(hnMap: any) {
13
14
  this.hnMap = hnMap;
@@ -104,8 +105,8 @@ export default class siji_entity {
104
105
  this.hnMap.map.map.removeSource(this.config.id);
105
106
  }
106
107
 
107
- on(eventType: any, eventId: any, callback: any) {
108
- this.off(eventType, eventId);
108
+ on(eventType: any, callback: any) {
109
+ this.off(eventType);
109
110
  switch (eventType) {
110
111
  case "click":
111
112
  this.event[eventType] = () => {
@@ -113,12 +114,12 @@ export default class siji_entity {
113
114
  };
114
115
  break;
115
116
  }
116
- this.hnMap.map.map.on(eventType, eventId, this.event[eventType]);
117
+ this.hnMap.map.map.on(eventType, this.id, this.event[eventType]);
117
118
  } // 监听事件
118
119
 
119
- off(eventType: any, eventId: any) {
120
+ off(eventType: any) {
120
121
  if (this.event[eventType]) {
121
- this.hnMap.map.map.off(eventType, eventId, this.event[eventType]);
122
+ this.hnMap.map.map.off(eventType, this.id, this.event[eventType]);
122
123
  delete this.event[eventType];
123
124
  }
124
125
  }
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@ import heatMap from "./layer/heatMap";
14
14
  import cluster from "./layer/cluster";
15
15
  import pointCloud from "./layer/pointCloud";
16
16
  import geoJson from "./layer/geoJson";
17
+ import {mars3dTileErrorHandler} from "./util";
17
18
 
18
19
  /**
19
20
  * HnMap类是一个地图工具类,用于创建和管理地图对象及其相关元素
@@ -142,6 +143,8 @@ export default class HnMap {
142
143
  basePath + "lib/mars3d/plugins/heatmap/mars3d-heatmap.js",
143
144
  "js"
144
145
  );
146
+
147
+ mars3dTileErrorHandler()
145
148
  break;
146
149
  case "gaode":
147
150
  await loadResource(
package/src/util.ts CHANGED
@@ -232,3 +232,67 @@ export function convertPosition(
232
232
  }
233
233
  }) as number[] | number[][] | number[][][];
234
234
  }
235
+
236
+ // mars3d 地图重写瓦片加载失败的回调,使控制台过滤掉瓦片加载失败的报错
237
+ export function mars3dTileErrorHandler() {
238
+ // 确保 Cesium 已加载
239
+ if (typeof Cesium !== 'undefined' && Cesium.TileProviderError) {
240
+ const originalReportError = Cesium.TileProviderError.reportError;
241
+
242
+ Cesium.TileProviderError.reportError = function (
243
+ existingError:any,
244
+ provider:any,
245
+ errorEvent:any,
246
+ message:any,
247
+ x:any,
248
+ y:any,
249
+ level:any,
250
+ error:any
251
+ ) {
252
+ // 可选:判断是否为“瓦片不存在”类错误(如 404、fetch 失败等)
253
+ const shouldIgnore =
254
+ message?.includes('Failed to obtain image') ||
255
+ message?.includes('无法获得图块') ||
256
+ message?.includes('404') ||
257
+ (error && error.status === 404) ||
258
+ message?.includes('NetworkError') ||
259
+ message?.includes('not found');
260
+
261
+ if (shouldIgnore) {
262
+ // 静默处理:不打印日志,但仍可触发 errorEvent(供自定义监听)
263
+ // 注意:仍需调用 raiseEvent(如果有人监听),但跳过 console.log
264
+ if (Cesium.defined(errorEvent) && errorEvent.numberOfListeners > 0) {
265
+ let tileError = existingError;
266
+ if (Cesium.defined(existingError)) {
267
+ tileError.provider = provider;
268
+ tileError.message = message;
269
+ tileError.x = x;
270
+ tileError.y = y;
271
+ tileError.level = level;
272
+ tileError.retry = false;
273
+ tileError.error = error;
274
+ tileError.timesRetried = Cesium.defaultValue(tileError.timesRetried, 0) + 1;
275
+ } else {
276
+ tileError = new Cesium.TileProviderError(
277
+ provider,
278
+ message,
279
+ x,
280
+ y,
281
+ level,
282
+ 0,
283
+ error
284
+ );
285
+ }
286
+ errorEvent.raiseEvent(tileError);
287
+ return tileError;
288
+ } else {
289
+ // 没人监听,且我们不想打印 → 直接返回一个空错误对象(或 null)
290
+ return existingError || new Cesium.TileProviderError(provider, message, x, y, level, 0, error);
291
+ }
292
+ }
293
+
294
+ // 非忽略错误:走原始逻辑
295
+ return originalReportError.apply(this, arguments);
296
+ };
297
+ }
298
+ }