bruce-cesium 0.4.6 → 0.4.8

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,5 +1,5 @@
1
1
  import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, TilesetExtMapTiles, Camera, MathUtils } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Entity, Primitive, Cesium3DTileFeature, Color, Cartesian3, HeightReference, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, HeadingPitchRange, OrthographicFrustum, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, createOsmBuildings, Cesium3DTileStyle, Rectangle } from 'cesium';
2
+ import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, createOsmBuildings, Cesium3DTileStyle, Rectangle } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -445,59 +445,62 @@ var EntityUtils;
445
445
  * @returns
446
446
  */
447
447
  function GetPos(viewer, entity) {
448
- if (entity.location && Carto.ValidateCarto(entity.location)) {
449
- var location_1 = entity.location;
450
- return Cartesian3.fromDegrees(location_1.longitude, location_1.latitude, location_1.altitude);
451
- }
452
- if (entity.geometry && typeof entity.geometry == "object") {
453
- var pointStr = entity.geometry.Point;
454
- if (pointStr && typeof pointStr == "string") {
455
- var points = Geometry.ParsePoints(pointStr);
456
- var point = points.length > 0 ? points[0] : null;
457
- if (point && Carto.ValidateCarto(point)) {
458
- return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
448
+ function evaluate() {
449
+ if (entity.location && Carto.ValidateCarto(entity.location)) {
450
+ var location_1 = entity.location;
451
+ return Cartesian3.fromDegrees(Number(location_1.longitude), Number(location_1.latitude), Number(location_1.altitude));
452
+ }
453
+ if (entity.geometry && typeof entity.geometry == "object") {
454
+ var pointStr = entity.geometry.Point;
455
+ if (pointStr && typeof pointStr == "string") {
456
+ var points = Geometry.ParsePoints(pointStr);
457
+ var point = points.length > 0 ? points[0] : null;
458
+ if (point && Carto.ValidateCarto(point)) {
459
+ return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
460
+ }
459
461
  }
460
- }
461
- var lineStr = entity.geometry.LineString;
462
- if (lineStr && typeof lineStr == "string") {
463
- var points = Geometry.ParsePoints(lineStr);
464
- if (points.length > 0) {
465
- var posses = points.map(function (x) { return Cartesian3.fromDegrees(x.longitude, x.latitude, x.altitude); });
466
- var length_1 = MeasureUtils.MeasurePolyline(posses);
467
- if (length_1 > 0) {
468
- var point = DrawingUtils.PointAcrossPolyline(viewer, posses, length_1 / 2);
469
- if (point && Cartes.ValidateCartes3(point)) {
470
- return point;
462
+ var lineStr = entity.geometry.LineString;
463
+ if (lineStr && typeof lineStr == "string") {
464
+ var points = Geometry.ParsePoints(lineStr);
465
+ if (points.length > 0) {
466
+ var posses = points.map(function (x) { return Cartesian3.fromDegrees(x.longitude, x.latitude, x.altitude); });
467
+ var length_1 = MeasureUtils.MeasurePolyline(posses);
468
+ if (length_1 > 0) {
469
+ var point = DrawingUtils.PointAcrossPolyline(viewer, posses, length_1 / 2);
470
+ if (point && Cartes.ValidateCartes3(point)) {
471
+ return point;
472
+ }
473
+ }
474
+ else {
475
+ return posses[0];
471
476
  }
472
- }
473
- else {
474
- return posses[0];
475
477
  }
476
478
  }
477
- }
478
- var pRings = entity.geometry.Polygon;
479
- if (pRings && typeof pRings == "object") {
480
- var boundary = pRings.find(function (x) { return x.Facing == Geometry.EPolygonRingType.Boundaries; });
481
- if (boundary === null || boundary === void 0 ? void 0 : boundary.LinearRing) {
482
- var points = Geometry.ParsePoints(boundary.LinearRing);
483
- var point = Carto.GetCenter(points);
484
- if (point && Carto.ValidateCarto(point)) {
485
- return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
479
+ var pRings = entity.geometry.Polygon;
480
+ if (pRings && typeof pRings == "object") {
481
+ var boundary = pRings.find(function (x) { return x.Facing == Geometry.EPolygonRingType.Boundaries; });
482
+ if (boundary === null || boundary === void 0 ? void 0 : boundary.LinearRing) {
483
+ var points = Geometry.ParsePoints(boundary.LinearRing);
484
+ var point = Carto.GetCenter(points);
485
+ if (point && Carto.ValidateCarto(point)) {
486
+ return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
487
+ }
486
488
  }
487
489
  }
488
490
  }
489
- }
490
- if (entity.boundaries) {
491
- var point = {
492
- latitude: (entity.boundaries.minLatitude + entity.boundaries.maxLatitude) / 2,
493
- longitude: (entity.boundaries.minLongitude + entity.boundaries.maxLongitude) / 2,
494
- altitude: 0
495
- };
496
- if (point && Carto.ValidateCarto(point)) {
497
- return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
491
+ if (entity.boundaries) {
492
+ var point = {
493
+ latitude: (Number(entity.boundaries.minLatitude) + Number(entity.boundaries.maxLatitude)) / 2,
494
+ longitude: (Number(entity.boundaries.minLongitude) + Number(entity.boundaries.maxLongitude)) / 2,
495
+ altitude: 0
496
+ };
497
+ if (point && Carto.ValidateCarto(point)) {
498
+ return Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
499
+ }
498
500
  }
499
501
  }
500
- return null;
502
+ var pos3d = evaluate();
503
+ return Cartes.ValidateCartes3(pos3d) ? pos3d : null;
501
504
  }
502
505
  EntityUtils.GetPos = GetPos;
503
506
  /**
@@ -526,14 +529,17 @@ var RenderManager;
526
529
  return null;
527
530
  }
528
531
  var cameraPos = viewer.camera.position;
532
+ if (!Cartes.ValidateCartes3(cameraPos)) {
533
+ return null;
534
+ }
529
535
  var distance = Cartesian3.distance(pos, cameraPos);
530
- return GetZoomControlFromDistance(zoomControl, distance);
536
+ return (!distance && distance != 0) ? null : GetZoomControlFromDistance(zoomControl, distance);
531
537
  }
532
538
  Utils.DetermineZoomItem = DetermineZoomItem;
533
539
  function GetZoomControlFromDistance(zoomControl, distance) {
534
540
  for (var i = 0; i < zoomControl.length; i++) {
535
541
  var zoomItem = zoomControl[i];
536
- if ((distance >= zoomItem.MinZoom) && (distance <= zoomItem.MaxZoom)) {
542
+ if ((distance >= Number(zoomItem.MinZoom)) && (distance <= Number(zoomItem.MaxZoom))) {
537
543
  return zoomItem;
538
544
  }
539
545
  }
@@ -545,6 +551,8 @@ var RenderManager;
545
551
  var max = 100;
546
552
  for (var i = 0; i < zoomControl.length; i++) {
547
553
  var zoomItem = zoomControl[i];
554
+ zoomItem.MinZoom = Number(zoomItem.MinZoom);
555
+ zoomItem.MaxZoom = Number(zoomItem.MaxZoom);
548
556
  if (zoomItem.MinZoom != null) {
549
557
  if (zoomItem.MinZoom < min) {
550
558
  min = zoomItem.MinZoom;
@@ -2291,7 +2299,7 @@ var TilesetRenderEngine;
2291
2299
  root.updateTransform();
2292
2300
  }
2293
2301
  else {
2294
- throw ("Not implemented.");
2302
+ console.warn("Not implemented.");
2295
2303
  }
2296
2304
  }
2297
2305
  TilesetRenderEngine.ApplyPosition = ApplyPosition;
@@ -2304,7 +2312,7 @@ var TilesetRenderEngine;
2304
2312
  }
2305
2313
  }
2306
2314
  else {
2307
- throw ("Not implemented.");
2315
+ console.warn("Not implemented.");
2308
2316
  }
2309
2317
  }
2310
2318
  TilesetRenderEngine.ApplySettings = ApplySettings;
@@ -2321,6 +2329,13 @@ var TilesetRenderEngine;
2321
2329
  });
2322
2330
  return cTileset_1;
2323
2331
  }
2332
+ else if (params.tileset.type === Tileset.EType.EntitiesSet) {
2333
+ var cTileset = new Cesium3DTileset({
2334
+ url: Tileset.GetPublicFileUrl(api, params.tileset.id, "tileset.json") + "?generation=" + params.tileset.generateVersion
2335
+ });
2336
+ params.viewer.scene.primitives.add(cTileset);
2337
+ return cTileset;
2338
+ }
2324
2339
  else {
2325
2340
  throw ("Not implemented.");
2326
2341
  }
@@ -2755,21 +2770,21 @@ var TilesetCadRenderManager;
2755
2770
  coords: coords
2756
2771
  });
2757
2772
  cTileset.readyPromise.then(function () {
2773
+ if (_this.disposed) {
2774
+ return;
2775
+ }
2758
2776
  _this.onCTilesetLoad();
2777
+ _this.styler = new TilesetRenderEngine.CadStyler(api, _this.cTileset, _this.item.styleId, _this.item.StyleMapping);
2759
2778
  });
2760
2779
  cTileset.tileLoad.addEventListener(function (tile) {
2761
2780
  _this.mapCTile(tile);
2762
2781
  });
2763
- this.styler = new TilesetRenderEngine.CadStyler(api, this.cTileset, this.item.styleId, this.item.StyleMapping);
2764
2782
  return [2 /*return*/];
2765
2783
  }
2766
2784
  });
2767
2785
  });
2768
2786
  };
2769
2787
  Manager.prototype.onCTilesetLoad = function () {
2770
- if (this.disposed) {
2771
- return;
2772
- }
2773
2788
  if (this.item.FlyTo) {
2774
2789
  this.viewer.zoomTo(this.cTileset, new HeadingPitchRange(0.0, -0.5, this.cTileset.boundingSphere.radius / 4.0));
2775
2790
  }
@@ -2881,6 +2896,7 @@ var TilesetCadRenderManager;
2881
2896
  return null;
2882
2897
  };
2883
2898
  Manager.prototype.Dispose = function () {
2899
+ var _a;
2884
2900
  if (this.disposed) {
2885
2901
  return;
2886
2902
  }
@@ -2888,7 +2904,7 @@ var TilesetCadRenderManager;
2888
2904
  if (this.cTileset) {
2889
2905
  this.cTileset.show = false;
2890
2906
  }
2891
- this.styler.Dispose();
2907
+ (_a = this.styler) === null || _a === void 0 ? void 0 : _a.Dispose();
2892
2908
  this.visualsManager.RemoveByMenuItemId(this.item.id);
2893
2909
  };
2894
2910
  return Manager;
@@ -3204,6 +3220,103 @@ var TilesetOsmRenderManager;
3204
3220
  TilesetOsmRenderManager.Manager = Manager;
3205
3221
  })(TilesetOsmRenderManager || (TilesetOsmRenderManager = {}));
3206
3222
 
3223
+ var TilesetEntitiesRenderManager;
3224
+ (function (TilesetEntitiesRenderManager) {
3225
+ var Manager = /** @class */ (function () {
3226
+ function Manager(viewer, visualsManager, apiGetter, item) {
3227
+ this.disposed = false;
3228
+ this.cTileset = null;
3229
+ this.viewer = viewer;
3230
+ this.apiGetter = apiGetter;
3231
+ this.item = item;
3232
+ this.visualsManager = visualsManager;
3233
+ }
3234
+ Object.defineProperty(Manager.prototype, "Disposed", {
3235
+ get: function () {
3236
+ return this.disposed;
3237
+ },
3238
+ enumerable: false,
3239
+ configurable: true
3240
+ });
3241
+ Manager.prototype.Init = function () {
3242
+ var _a;
3243
+ return __awaiter(this, void 0, void 0, function () {
3244
+ var tilesetId, api, tileset, cTileset;
3245
+ var _this = this;
3246
+ return __generator(this, function (_b) {
3247
+ switch (_b.label) {
3248
+ case 0:
3249
+ tilesetId = (_a = this.item.tileset) === null || _a === void 0 ? void 0 : _a.TilesetID;
3250
+ if (!tilesetId) {
3251
+ return [2 /*return*/];
3252
+ }
3253
+ api = this.apiGetter.getApi();
3254
+ return [4 /*yield*/, Tileset.Get(api, tilesetId)];
3255
+ case 1:
3256
+ tileset = _b.sent();
3257
+ if (!tileset) {
3258
+ return [2 /*return*/];
3259
+ }
3260
+ this.typeId = tileset.settings.entityTypeId;
3261
+ cTileset = this.cTileset = TilesetRenderEngine.Render({
3262
+ apiGetter: this.apiGetter,
3263
+ tileset: tileset,
3264
+ viewer: this.viewer
3265
+ });
3266
+ cTileset.readyPromise.then(function () {
3267
+ if (_this.disposed) {
3268
+ return;
3269
+ }
3270
+ _this.onCTilesetLoad();
3271
+ });
3272
+ cTileset.tileLoad.addEventListener(function (tile) {
3273
+ _this.mapCTile(tile);
3274
+ });
3275
+ return [2 /*return*/];
3276
+ }
3277
+ });
3278
+ });
3279
+ };
3280
+ Manager.prototype.Dispose = function () {
3281
+ if (this.disposed) {
3282
+ return;
3283
+ }
3284
+ this.disposed = true;
3285
+ if (this.cTileset) {
3286
+ this.cTileset.show = false;
3287
+ }
3288
+ this.visualsManager.RemoveByMenuItemId(this.item.id);
3289
+ };
3290
+ Manager.prototype.onCTilesetLoad = function () {
3291
+ if (this.item.FlyTo) {
3292
+ this.viewer.zoomTo(this.cTileset, new HeadingPitchRange(0.0, -0.5, this.cTileset.boundingSphere.radius / 4.0));
3293
+ }
3294
+ };
3295
+ Manager.prototype.mapCTile = function (tile) {
3296
+ var content = tile.content;
3297
+ for (var i = 0; i < content.featuresLength; i++) {
3298
+ var feature = content.getFeature(i);
3299
+ this.mapTilesetFeature(feature);
3300
+ }
3301
+ };
3302
+ Manager.prototype.mapTilesetFeature = function (feature) {
3303
+ var id = feature.getProperty("BruceId");
3304
+ if (id) {
3305
+ var rego = {
3306
+ entityId: id,
3307
+ entityTypeId: this.typeId,
3308
+ menuItemId: this.item.id,
3309
+ priority: 0,
3310
+ visual: feature
3311
+ };
3312
+ this.visualsManager.Add(rego);
3313
+ }
3314
+ };
3315
+ return Manager;
3316
+ }());
3317
+ TilesetEntitiesRenderManager.Manager = Manager;
3318
+ })(TilesetEntitiesRenderManager || (TilesetEntitiesRenderManager = {}));
3319
+
3207
3320
  /**
3208
3321
  * Utility to keep track of enabled menu items within a Cesium viewer.
3209
3322
  */
@@ -3293,7 +3406,7 @@ var MenuItemManager;
3293
3406
  // TODO;
3294
3407
  break;
3295
3408
  case MenuItem.EType.EntityTileset:
3296
- // TODO;
3409
+ rItem.renderManager = new TilesetEntitiesRenderManager.Manager(this.viewer, this.visualsRegister, params.apiGetter, params.item);
3297
3410
  break;
3298
3411
  case MenuItem.EType.Kml:
3299
3412
  // TODO;