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.
- package/dist/bruce-cesium.es5.js +168 -55
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +167 -54
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/rendering/menu-item-manager.js +2 -1
- package/dist/lib/rendering/menu-item-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/render-manager.js +8 -2
- package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +6 -5
- package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +139 -0
- package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -0
- package/dist/lib/rendering/tileset-render-engine.js +9 -2
- package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
- package/dist/lib/utils/entity-utils.js +47 -44
- package/dist/lib/utils/entity-utils.js.map +1 -1
- package/dist/types/rendering/render-managers/render-manager.d.ts +2 -1
- package/dist/types/rendering/render-managers/tilesets/tileset-entities-render-manager.d.ts +22 -0
- package/package.json +2 -2
package/dist/bruce-cesium.es5.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
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
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
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
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
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
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|