maplibre-gl-3d-tiles 0.2.0 → 0.2.1

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.
@@ -36747,6 +36747,20 @@ function parseColorSpace(container) {
36747
36747
  return NoColorSpace;
36748
36748
  }
36749
36749
  }
36750
+ const MAX_METADATA_RETRIES = 120;
36751
+ function requestMetadataFrame(callback) {
36752
+ if (typeof globalThis.requestAnimationFrame === "function") {
36753
+ return globalThis.requestAnimationFrame(callback);
36754
+ }
36755
+ return globalThis.setTimeout(() => callback(Date.now()), 16);
36756
+ }
36757
+ function cancelMetadataFrame(handle) {
36758
+ if (typeof globalThis.cancelAnimationFrame === "function") {
36759
+ globalThis.cancelAnimationFrame(handle);
36760
+ return;
36761
+ }
36762
+ globalThis.clearTimeout(handle);
36763
+ }
36750
36764
  function ecefToLngLatAlt(x3, y3, z2) {
36751
36765
  const a2 = 6378137;
36752
36766
  const e2 = 0.00669437999014;
@@ -36786,6 +36800,8 @@ class ThreeDTilesLayer {
36786
36800
  __publicField(this, "_visible");
36787
36801
  __publicField(this, "_loadTilesetHandler");
36788
36802
  __publicField(this, "_loadErrorHandler");
36803
+ __publicField(this, "_metadataRetryFrame", null);
36804
+ __publicField(this, "_metadataRetryCount", 0);
36789
36805
  this.id = options.id;
36790
36806
  this._options = options;
36791
36807
  this._opacity = options.opacity;
@@ -36829,6 +36845,9 @@ class ThreeDTilesLayer {
36829
36845
  }
36830
36846
  onRemove() {
36831
36847
  var _a, _b, _c;
36848
+ if (this._metadataRetryFrame !== null) {
36849
+ cancelMetadataFrame(this._metadataRetryFrame);
36850
+ }
36832
36851
  if (this._tiles && this._loadTilesetHandler) {
36833
36852
  this._tiles.removeEventListener("load-tileset", this._loadTilesetHandler);
36834
36853
  }
@@ -36847,6 +36866,8 @@ class ThreeDTilesLayer {
36847
36866
  this._localTransform = void 0;
36848
36867
  this._loadTilesetHandler = void 0;
36849
36868
  this._loadErrorHandler = void 0;
36869
+ this._metadataRetryFrame = null;
36870
+ this._metadataRetryCount = 0;
36850
36871
  }
36851
36872
  setVisible(visible) {
36852
36873
  var _a;
@@ -36904,12 +36925,20 @@ class ThreeDTilesLayer {
36904
36925
  }
36905
36926
  _handleTilesetLoaded() {
36906
36927
  var _a, _b, _c;
36907
- if (!this._tiles) return;
36928
+ if (!this._tiles || this._metadata) return;
36929
+ const sphere = new Sphere();
36930
+ if (!this._tiles.getBoundingSphere(sphere)) {
36931
+ this._retryTilesetMetadata();
36932
+ return;
36933
+ }
36934
+ if (this._metadataRetryFrame !== null) {
36935
+ cancelMetadataFrame(this._metadataRetryFrame);
36936
+ this._metadataRetryFrame = null;
36937
+ }
36938
+ this._metadataRetryCount = 0;
36908
36939
  if (this._loadTilesetHandler) {
36909
36940
  this._tiles.removeEventListener("load-tileset", this._loadTilesetHandler);
36910
36941
  }
36911
- const sphere = new Sphere();
36912
- if (!this._tiles.getBoundingSphere(sphere)) return;
36913
36942
  const center = sphere.center.clone();
36914
36943
  const rootTransform = ((_a = this._tiles.root) == null ? void 0 : _a.transform) ?? [
36915
36944
  1,
@@ -36957,6 +36986,19 @@ class ThreeDTilesLayer {
36957
36986
  };
36958
36987
  (_c = (_b = this._options).onLoad) == null ? void 0 : _c.call(_b, this._metadata);
36959
36988
  }
36989
+ _retryTilesetMetadata() {
36990
+ var _a, _b;
36991
+ if (this._metadataRetryFrame !== null) return;
36992
+ if (this._metadataRetryCount >= MAX_METADATA_RETRIES) {
36993
+ (_b = (_a = this._options).onError) == null ? void 0 : _b.call(_a, new Error("Unable to read 3D Tiles bounds."));
36994
+ return;
36995
+ }
36996
+ this._metadataRetryCount += 1;
36997
+ this._metadataRetryFrame = requestMetadataFrame(() => {
36998
+ this._metadataRetryFrame = null;
36999
+ this._handleTilesetLoaded();
37000
+ });
37001
+ }
36960
37002
  _updateLocalTransform(modelOrigin, rotate = [Math.PI / 2, 0, 0]) {
36961
37003
  const modelAsMercatorCoordinate = maplibregl.MercatorCoordinate.fromLngLat(
36962
37004
  [modelOrigin[0], modelOrigin[1]],
@@ -37656,4 +37698,4 @@ export {
37656
37698
  ThreeDTilesLayer as a,
37657
37699
  ecefToLngLatAlt as e
37658
37700
  };
37659
- //# sourceMappingURL=ThreeDTilesControl-BSPHd6OI.js.map
37701
+ //# sourceMappingURL=ThreeDTilesControl-CBRKc0pL.js.map