cesium-xs-sdk 1.0.6 → 1.0.7

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.
@@ -2,6 +2,36 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ /**
6
+ * Cesium 实例提供者
7
+ * 用于解耦 Config 与 getCesium 之间的循环依赖。
8
+ */
9
+ let cesiumInstance = null;
10
+
11
+ /**
12
+ * 设置当前 SDK 使用的 Cesium 实例
13
+ * @param {object} cesium Cesium 库实例
14
+ */
15
+ function setCesiumInstance(cesium) {
16
+ cesiumInstance = cesium;
17
+ }
18
+
19
+ /**
20
+ * 获取当前 SDK 使用的 Cesium 实例
21
+ * @returns {object}
22
+ * @throws {Error} 若未设置 Cesium 实例
23
+ */
24
+ function getCesiumInstance() {
25
+ if (!cesiumInstance) {
26
+ throw new Error(
27
+ 'Cesium 未提供。请在 xs3d.init 时传入 cesium 实例:\n' +
28
+ ' import * as Cesium from "cesium";\n' +
29
+ ' xs3d.init("container", { cesium: Cesium, ... });'
30
+ );
31
+ }
32
+ return cesiumInstance;
33
+ }
34
+
5
35
  /**
6
36
  * 获取通过 xs3d.init({ cesium }) 传入的 Cesium 实例。
7
37
  *
@@ -9,34 +39,22 @@ Object.defineProperty(exports, '__esModule', { value: true });
9
39
  * 避免模块加载时 config 尚未初始化的问题。
10
40
  */
11
41
 
12
- function resolveCesium() {
13
- const cfg = Config.getInstance().config;
14
- if (cfg.cesium) {
15
- return cfg.cesium;
16
- }
17
- throw new Error(
18
- 'Cesium 未提供。请在 xs3d.init 时传入 cesium 实例:\n' +
19
- ' import * as Cesium from "cesium";\n' +
20
- ' xs3d.init("container", { cesium: Cesium, ... });'
21
- );
22
- }
23
-
24
42
  function getCesium() {
25
43
  return new Proxy(function () {}, {
26
44
  apply(_target, _thisArg, args) {
27
- const Cesium = resolveCesium();
45
+ const Cesium = getCesiumInstance();
28
46
  return Cesium(...args);
29
47
  },
30
48
  construct(_target, args) {
31
- const Cesium = resolveCesium();
49
+ const Cesium = getCesiumInstance();
32
50
  return new Cesium(...args);
33
51
  },
34
52
  get(_target, prop) {
35
- const Cesium = resolveCesium();
53
+ const Cesium = getCesiumInstance();
36
54
  return Cesium[prop];
37
55
  },
38
56
  set(_target, prop, value) {
39
- const Cesium = resolveCesium();
57
+ const Cesium = getCesiumInstance();
40
58
  Cesium[prop] = value;
41
59
  return true;
42
60
  }
@@ -150,6 +168,10 @@ class Config {
150
168
 
151
169
  console.log('config', this.config);
152
170
 
171
+ // 将 Cesium 实例同步到 Provider,避免 Config 与 getCesium 循环依赖
172
+ if (options.cesium) {
173
+ setCesiumInstance(options.cesium);
174
+ }
153
175
 
154
176
  // Token 同步到 Cesium
155
177
  if (options.cesiumToken && this.config.cesium) {