bruce-cesium 2.1.3 → 2.1.4

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,6 +1,6 @@
1
1
  import { BruceEvent, Cartes, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, DelayQueue, BatchedDataGetter, EntityRelationType, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ENVIRONMENT, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartesian2, Cartographic, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, SceneMode, Entity, Primitive, Cesium3DTileFeature, HeightReference, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, OrthographicFrustum, JulianDate, NearFarScalar, Cesium3DTileset, Matrix4, Matrix3, IonResource, CesiumInspector, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, ColorMaterialProperty, EasingFunction, GeometryInstance } from 'cesium';
3
+ import { Cartesian2, Cartographic, CallbackProperty, Cartesian3, Color, Rectangle, Math as Math$1, SceneMode, HeightReference, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, createOsmBuildings, Cesium3DTileStyle, KmlDataSource, OrthographicFrustum, JulianDate, NearFarScalar, Cesium3DTileset, Matrix4, Matrix3, IonResource, CesiumInspector, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, PolygonPipeline, ColorMaterialProperty, EasingFunction, GeometryInstance, EllipsoidGeodesic, sampleTerrainMostDetailed } from 'cesium';
4
4
 
5
5
  var TIME_LAG = 300;
6
6
  var POSITION_CHECK_TIMER = 950;
@@ -4924,6 +4924,11 @@ var TilesetRenderEngine;
4924
4924
  switch (_a.label) {
4925
4925
  case 0:
4926
4926
  api = params.apiGetter.getApi(params.apiGetter.accountId);
4927
+ // Ensure regional url is loaded.
4928
+ return [4 /*yield*/, api.Loading];
4929
+ case 1:
4930
+ // Ensure regional url is loaded.
4931
+ _a.sent();
4927
4932
  loadUrl = params.tileset.loadUrl;
4928
4933
  // CDN url must match the api getter account id.
4929
4934
  if (!params.accountId || params.accountId == params.apiGetter.accountId) {
@@ -4934,13 +4939,13 @@ var TilesetRenderEngine;
4934
4939
  loadUrl += "&generation=" + params.tileset.generateVersion;
4935
4940
  }
4936
4941
  }
4937
- if (!(params.tileset.type == Tileset.EType.Cad)) return [3 /*break*/, 2];
4942
+ if (!(params.tileset.type == Tileset.EType.Cad)) return [3 /*break*/, 3];
4938
4943
  return [4 /*yield*/, createTileset(loadUrl ? loadUrl : Tileset.GetPublicFileUrl({
4939
4944
  api: api,
4940
4945
  tilesetId: params.tileset.id,
4941
4946
  file: "tileset.json"
4942
4947
  }) + "?generation=" + params.tileset.generateVersion, null)];
4943
- case 1:
4948
+ case 2:
4944
4949
  cTileset_1 = _a.sent();
4945
4950
  params.viewer.scene.primitives.add(cTileset_1);
4946
4951
  cTileset_1.readyPromise.then(function () {
@@ -4970,25 +4975,25 @@ var TilesetRenderEngine;
4970
4975
  }
4971
4976
  });
4972
4977
  return [2 /*return*/, cTileset_1];
4973
- case 2:
4974
- if (!(params.tileset.type === Tileset.EType.EntitiesSet)) return [3 /*break*/, 4];
4978
+ case 3:
4979
+ if (!(params.tileset.type === Tileset.EType.EntitiesSet)) return [3 /*break*/, 5];
4975
4980
  return [4 /*yield*/, createTileset(loadUrl ? loadUrl : Tileset.GetPublicFileUrl({
4976
4981
  api: api,
4977
4982
  tilesetId: params.tileset.id,
4978
4983
  file: "tileset.json"
4979
4984
  }) + "?generation=" + params.tileset.generateVersion, null)];
4980
- case 3:
4985
+ case 4:
4981
4986
  cTileset = _a.sent();
4982
4987
  params.viewer.scene.primitives.add(cTileset);
4983
4988
  return [2 /*return*/, cTileset];
4984
- case 4:
4985
- if (!(params.tileset.type == Tileset.EType.PointCloud)) return [3 /*break*/, 6];
4989
+ case 5:
4990
+ if (!(params.tileset.type == Tileset.EType.PointCloud)) return [3 /*break*/, 7];
4986
4991
  return [4 /*yield*/, createTileset(loadUrl ? loadUrl : Tileset.GetPublicFileUrl({
4987
4992
  api: api,
4988
4993
  tilesetId: params.tileset.id,
4989
4994
  file: "tileset.json"
4990
4995
  }) + "?generation=" + params.tileset.generateVersion, null)];
4991
- case 5:
4996
+ case 6:
4992
4997
  cTileset_2 = _a.sent();
4993
4998
  params.viewer.scene.primitives.add(cTileset_2);
4994
4999
  cTileset_2.readyPromise.then(function () {
@@ -5018,7 +5023,7 @@ var TilesetRenderEngine;
5018
5023
  }
5019
5024
  });
5020
5025
  return [2 /*return*/, cTileset_2];
5021
- case 6: throw ("Not implemented.");
5026
+ case 7: throw ("Not implemented.");
5022
5027
  }
5023
5028
  });
5024
5029
  });
@@ -8693,7 +8698,7 @@ var TileRenderEngine;
8693
8698
  (function (Navigator) {
8694
8699
  function GetOrCreateLayer(params) {
8695
8700
  return __awaiter(this, void 0, void 0, function () {
8696
- var viewer, apiGetter, meta, enabled, i, layer, layerMeta, defaultImg, provider, api, tileset, settings, _a, _b, _c, mapboxKey, _d, layer;
8701
+ var viewer, apiGetter, meta, enabled, i, layer, layerMeta, defaultImg, provider, api, tileset, boundaries, settings, minLat, maxLat, minLon, maxLon, minLevel, maxLevel, hasLevels, settings_1, _a, _b, _c, mapboxKey, _d, layer;
8697
8702
  var _e;
8698
8703
  return __generator(this, function (_f) {
8699
8704
  switch (_f.label) {
@@ -8716,90 +8721,131 @@ var TileRenderEngine;
8716
8721
  return [4 /*yield*/, renderDefaultMapTile(apiGetter, defaultImg.id)];
8717
8722
  case 1:
8718
8723
  provider = _f.sent();
8719
- return [3 /*break*/, 15];
8724
+ return [3 /*break*/, 16];
8720
8725
  case 2:
8721
8726
  api = apiGetter.getApi(meta.accountId);
8727
+ // Ensure regional url is loaded.
8728
+ // When loading stuff in the same account as the default it's likely already loaded,
8729
+ // but if we just made an API instance for some external account then it won't be loaded yet.
8730
+ return [4 /*yield*/, api.Loading];
8731
+ case 3:
8732
+ // Ensure regional url is loaded.
8733
+ // When loading stuff in the same account as the default it's likely already loaded,
8734
+ // but if we just made an API instance for some external account then it won't be loaded yet.
8735
+ _f.sent();
8722
8736
  return [4 /*yield*/, Tileset.Get({
8723
8737
  api: api,
8724
8738
  tilesetId: meta.tilesetId
8725
8739
  })];
8726
- case 3:
8740
+ case 4:
8727
8741
  tileset = (_f.sent()).tileset;
8728
- if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 4];
8742
+ boundaries = undefined;
8743
+ settings = tileset === null || tileset === void 0 ? void 0 : tileset.settings;
8744
+ if (settings && settings.boundaries) {
8745
+ minLat = settings.boundaries.minLatitude;
8746
+ maxLat = settings.boundaries.maxLatitude;
8747
+ minLon = settings.boundaries.minLongitude;
8748
+ maxLon = settings.boundaries.maxLongitude;
8749
+ boundaries = Rectangle.fromDegrees(minLon, minLat, maxLon, maxLat);
8750
+ }
8751
+ minLevel = settings === null || settings === void 0 ? void 0 : settings.levelMin;
8752
+ maxLevel = settings === null || settings === void 0 ? void 0 : settings.levelMax;
8753
+ hasLevels = !isNaN(minLevel) && !isNaN(maxLevel);
8754
+ if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 5];
8729
8755
  provider = new TileMapServiceImageryProvider({
8730
8756
  url: Tileset.GetPublicFileUrl({
8731
8757
  api: api,
8732
8758
  tilesetId: meta.tilesetId,
8733
- file: ""
8759
+ file: "",
8760
+ viaCdn: true,
8761
+ viaCdnCacheToken: tileset.generateVersion
8734
8762
  }),
8735
- fileExtension: "png"
8763
+ fileExtension: "png",
8764
+ // Tested to not cause increased lag.
8765
+ rectangle: boundaries,
8766
+ maximumLevel: hasLevels ? maxLevel : undefined,
8767
+ minimumLevel: hasLevels ? minLevel : undefined,
8736
8768
  });
8737
- return [3 /*break*/, 15];
8738
- case 4:
8739
- if (!(tileset.type === Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 14];
8740
- settings = tileset.settings;
8741
- _a = settings.mapType;
8769
+ return [3 /*break*/, 16];
8770
+ case 5:
8771
+ if (!(tileset.type === Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 15];
8772
+ settings_1 = tileset.settings;
8773
+ _a = settings_1.mapType;
8742
8774
  switch (_a) {
8743
- case Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 5];
8744
- case Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 7];
8745
- case Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 11];
8746
- case Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 12];
8775
+ case Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 6];
8776
+ case Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 8];
8777
+ case Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 12];
8778
+ case Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 13];
8747
8779
  }
8748
- return [3 /*break*/, 13];
8749
- case 5:
8780
+ return [3 /*break*/, 14];
8781
+ case 6:
8750
8782
  _c = (_b = IonImageryProvider).bind;
8751
8783
  _e = {
8752
- assetId: settings.ionId
8784
+ assetId: settings_1.ionId
8753
8785
  };
8754
8786
  return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.CesiumIon, null)];
8755
- case 6:
8787
+ case 7:
8756
8788
  provider = new (_c.apply(_b, [void 0, (_e.accessToken = _f.sent(),
8757
8789
  _e)]))();
8758
- return [3 /*break*/, 13];
8759
- case 7:
8760
- if (!settings.mapBoxKey) return [3 /*break*/, 8];
8761
- _d = settings.mapBoxKey;
8762
- return [3 /*break*/, 10];
8763
- case 8: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, null)];
8764
- case 9:
8765
- _d = _f.sent();
8766
- _f.label = 10;
8790
+ return [3 /*break*/, 14];
8791
+ case 8:
8792
+ if (!settings_1.mapBoxKey) return [3 /*break*/, 9];
8793
+ _d = settings_1.mapBoxKey;
8794
+ return [3 /*break*/, 11];
8795
+ case 9: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, null)];
8767
8796
  case 10:
8797
+ _d = _f.sent();
8798
+ _f.label = 11;
8799
+ case 11:
8768
8800
  mapboxKey = _d;
8769
8801
  provider = new UrlTemplateImageryProvider({
8770
8802
  url: "https://api.mapbox.com/styles/v1/"
8771
- + settings.mapBoxAccount + "/" + settings.mapBoxStyleId +
8803
+ + settings_1.mapBoxAccount + "/" + settings_1.mapBoxStyleId +
8772
8804
  "/tiles/256/{z}/{x}/{y}?access_token="
8773
8805
  + mapboxKey
8774
8806
  });
8775
- return [3 /*break*/, 13];
8776
- case 11:
8807
+ return [3 /*break*/, 14];
8808
+ case 12:
8777
8809
  provider = new OpenStreetMapImageryProvider({
8778
- url: settings.url,
8779
- fileExtension: prepareFileExt(settings.sourceExt)
8810
+ url: settings_1.url,
8811
+ fileExtension: prepareFileExt(settings_1.sourceExt),
8812
+ // Unused until tested properly. In the past these settings caused large lag.
8813
+ // rectangle: boundaries,
8814
+ // maximumLevel: hasLevels ? maxLevel : undefined,
8815
+ // minimumLevel: hasLevels ? minLevel : undefined,
8780
8816
  });
8781
- return [3 /*break*/, 13];
8782
- case 12:
8817
+ return [3 /*break*/, 14];
8818
+ case 13:
8783
8819
  provider = new TileMapServiceImageryProvider({
8784
- url: settings.url,
8785
- fileExtension: prepareFileExt(settings.sourceExt)
8820
+ url: settings_1.url,
8821
+ fileExtension: prepareFileExt(settings_1.sourceExt),
8822
+ // Unused until tested properly. In the past these settings caused large lag.
8823
+ // rectangle: boundaries,
8824
+ // maximumLevel: hasLevels ? maxLevel : undefined,
8825
+ // minimumLevel: hasLevels ? minLevel : undefined,
8786
8826
  });
8787
- return [3 /*break*/, 13];
8788
- case 13: return [3 /*break*/, 15];
8789
- case 14:
8827
+ return [3 /*break*/, 14];
8828
+ case 14: return [3 /*break*/, 16];
8829
+ case 15:
8790
8830
  if (tileset.type === Tileset.EType.EntitiesMap) {
8791
8831
  provider = new UrlTemplateImageryProvider({
8792
8832
  url: Tileset.GetPublicFileUrl({
8793
8833
  api: api,
8794
8834
  tilesetId: meta.tilesetId,
8795
- file: "{z}/{x}/{y}.png"
8835
+ file: "{z}/{x}/{y}.png",
8836
+ viaCdn: true,
8837
+ viaCdnCacheToken: tileset.generateVersion
8796
8838
  }),
8797
8839
  tileHeight: 256,
8798
8840
  tileWidth: 256
8841
+ // Unused until tested properly. In the past these settings caused large lag.
8842
+ // rectangle: boundaries,
8843
+ // minimumLevel: hasLevels ? minLevel : undefined,
8844
+ // maximumLevel: hasLevels ? maxLevel : undefined,
8799
8845
  });
8800
8846
  }
8801
- _f.label = 15;
8802
- case 15:
8847
+ _f.label = 16;
8848
+ case 16:
8803
8849
  if (provider) {
8804
8850
  layer = viewer.imageryLayers.addImageryProvider(provider);
8805
8851
  layer._bMeta = meta;
@@ -9037,14 +9083,23 @@ var TileRenderEngine;
9037
9083
  return [4 /*yield*/, renderDefaultTerrTile(defaultTerr.id)];
9038
9084
  case 1:
9039
9085
  provider = (_b.sent());
9040
- return [3 /*break*/, 4];
9086
+ return [3 /*break*/, 5];
9041
9087
  case 2:
9042
9088
  api = params.apiGetter.getApi(params.tile.accountId);
9089
+ // Ensure regional url is loaded.
9090
+ // When loading stuff in the same account as the default it's likely already loaded,
9091
+ // but if we just made an API instance for some external account then it won't be loaded yet.
9092
+ return [4 /*yield*/, api.Loading];
9093
+ case 3:
9094
+ // Ensure regional url is loaded.
9095
+ // When loading stuff in the same account as the default it's likely already loaded,
9096
+ // but if we just made an API instance for some external account then it won't be loaded yet.
9097
+ _b.sent();
9043
9098
  return [4 /*yield*/, Tileset.Get({
9044
9099
  api: api,
9045
9100
  tilesetId: params.tile.tilesetId
9046
9101
  })];
9047
- case 3:
9102
+ case 4:
9048
9103
  tileset = (_b.sent()).tileset;
9049
9104
  url = void 0;
9050
9105
  vertexes = true;
@@ -9052,7 +9107,9 @@ var TileRenderEngine;
9052
9107
  url = Tileset.GetPublicFileUrl({
9053
9108
  api: api,
9054
9109
  tilesetId: tileset.id,
9055
- file: ""
9110
+ file: "",
9111
+ viaCdn: true,
9112
+ viaCdnCacheToken: tileset.generateVersion
9056
9113
  });
9057
9114
  }
9058
9115
  else if (tileset.type === Tileset.EType.ExternalTerrain) {
@@ -9069,8 +9126,8 @@ var TileRenderEngine;
9069
9126
  requestVertexNormals: vertexes
9070
9127
  });
9071
9128
  }
9072
- _b.label = 4;
9073
- case 4:
9129
+ _b.label = 5;
9130
+ case 5:
9074
9131
  if (provider) {
9075
9132
  provider._bMeta = {
9076
9133
  accountId: params.tile.accountId,