bruce-cesium 1.0.6 → 1.0.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 +472 -268
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +470 -266
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/rendering/menu-item-creator.js +8 -0
- package/dist/lib/rendering/menu-item-creator.js.map +1 -1
- package/dist/lib/rendering/menu-item-manager.js +17 -13
- package/dist/lib/rendering/menu-item-manager.js.map +1 -1
- package/dist/lib/rendering/relation-render-engine.js +34 -15
- package/dist/lib/rendering/relation-render-engine.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/cesium-parabola.js +170 -109
- package/dist/lib/rendering/render-managers/common/cesium-parabola.js.map +1 -1
- package/dist/lib/rendering/render-managers/common/shared-getters.js +2 -1
- package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -1
- package/dist/lib/rendering/view-render-engine.js +96 -32
- package/dist/lib/rendering/view-render-engine.js.map +1 -1
- package/dist/lib/utils/drawing-utils.js +18 -13
- package/dist/lib/utils/drawing-utils.js.map +1 -1
- package/dist/lib/utils/entity-utils.js +71 -4
- package/dist/lib/utils/entity-utils.js.map +1 -1
- package/dist/lib/utils/view-utils.js +13 -5
- package/dist/lib/utils/view-utils.js.map +1 -1
- package/dist/lib/viewer/viewer-utils.js +12 -8
- package/dist/lib/viewer/viewer-utils.js.map +1 -1
- package/dist/types/rendering/menu-item-creator.d.ts +5 -0
- package/dist/types/rendering/menu-item-manager.d.ts +18 -11
- package/dist/types/rendering/view-render-engine.d.ts +1 -1
- package/dist/types/utils/entity-utils.d.ts +1 -0
- package/dist/types/utils/view-utils.d.ts +10 -2
- package/dist/types/viewer/viewer-utils.d.ts +2 -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, EntityRelationType, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, EntityRelation, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } 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, Cesium3DTileColorBlendMode, HeadingPitchRange, OrthographicFrustum, JulianDate, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileStyle, Cesium3DTileset, IonResource, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, CallbackProperty, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, createOsmBuildings, KmlDataSource } from 'cesium';
|
|
3
3
|
|
|
4
4
|
var TIME_LAG = 300;
|
|
5
5
|
var POSITION_CHECK_TIMER = 950;
|
|
@@ -234,14 +234,18 @@ var ViewerUtils;
|
|
|
234
234
|
* @param viewer
|
|
235
235
|
*/
|
|
236
236
|
function InitViewer(params) {
|
|
237
|
-
var viewer = params.viewer;
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
237
|
+
var viewer = params.viewer, destroyWidgets = params.destroyWidgets, styleContainer = params.styleContainer;
|
|
238
|
+
if (destroyWidgets != false) {
|
|
239
|
+
ViewerUtils.DestroyWidget(viewer.timeline);
|
|
240
|
+
ViewerUtils.DestroyWidget(viewer.vrButton);
|
|
241
|
+
ViewerUtils.DestroyWidget(viewer.sceneModePicker);
|
|
242
|
+
ViewerUtils.DestroyWidget(viewer.homeButton);
|
|
243
|
+
ViewerUtils.DestroyWidget(viewer.fullscreenButton);
|
|
244
|
+
ViewerUtils.DestroyWidget(viewer.baseLayerPicker);
|
|
245
|
+
}
|
|
246
|
+
if (styleContainer != false) {
|
|
247
|
+
ViewerUtils.StyleContainer({ viewer: viewer });
|
|
248
|
+
}
|
|
245
249
|
}
|
|
246
250
|
ViewerUtils.InitViewer = InitViewer;
|
|
247
251
|
function DestroyWidget(widget) {
|
|
@@ -355,6 +359,74 @@ function __generator(thisArg, body) {
|
|
|
355
359
|
}
|
|
356
360
|
}
|
|
357
361
|
|
|
362
|
+
var MeasureUtils;
|
|
363
|
+
(function (MeasureUtils) {
|
|
364
|
+
/**
|
|
365
|
+
* Returns the total distance in meters between an array of points.
|
|
366
|
+
* This distance is NOT following the terrain.
|
|
367
|
+
* @param posses
|
|
368
|
+
* @returns
|
|
369
|
+
*/
|
|
370
|
+
function MeasurePolyline(params) {
|
|
371
|
+
var posses = params.posses;
|
|
372
|
+
if (posses.length < 2) {
|
|
373
|
+
return {
|
|
374
|
+
totalLength: 0
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
var totalLength = 0;
|
|
378
|
+
var pos1 = null;
|
|
379
|
+
var pos2 = null;
|
|
380
|
+
for (var i = 0; i < posses.length; i++) {
|
|
381
|
+
if (pos1 == null) {
|
|
382
|
+
pos1 = posses[i];
|
|
383
|
+
}
|
|
384
|
+
else if (pos2 == null) {
|
|
385
|
+
pos2 = posses[i];
|
|
386
|
+
totalLength += Cartesian3.distance(pos1, pos2);
|
|
387
|
+
pos1 = pos2;
|
|
388
|
+
pos2 = null;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return {
|
|
392
|
+
totalLength: totalLength
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
MeasureUtils.MeasurePolyline = MeasurePolyline;
|
|
396
|
+
function MeasurePolygon(params) {
|
|
397
|
+
var posses = params.posses;
|
|
398
|
+
posses = [].concat(posses);
|
|
399
|
+
if (!Cartes.IsRing3Closed(posses)) {
|
|
400
|
+
posses.push(posses[0].clone());
|
|
401
|
+
}
|
|
402
|
+
if (posses.length < 3) {
|
|
403
|
+
return {
|
|
404
|
+
area: 0,
|
|
405
|
+
perimeter: 0
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
var area = 0;
|
|
409
|
+
var indices = PolygonPipeline.triangulate(posses, []);
|
|
410
|
+
for (var i = 0; i < indices.length; i += 3) {
|
|
411
|
+
var vector1 = posses[indices[i]];
|
|
412
|
+
var vector2 = posses[indices[i + 1]];
|
|
413
|
+
var vector3 = posses[indices[i + 2]];
|
|
414
|
+
var vectorC = Cartesian3.subtract(vector2, vector1, new Cartesian3());
|
|
415
|
+
var vectorD = Cartesian3.subtract(vector3, vector1, new Cartesian3());
|
|
416
|
+
var areaVector = Cartesian3.cross(vectorC, vectorD, new Cartesian3());
|
|
417
|
+
area += Cartesian3.magnitude(areaVector) / 2.0;
|
|
418
|
+
}
|
|
419
|
+
var perimeter = MeasurePolyline({
|
|
420
|
+
posses: posses
|
|
421
|
+
}).totalLength;
|
|
422
|
+
return {
|
|
423
|
+
area: area,
|
|
424
|
+
perimeter: perimeter
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
MeasureUtils.MeasurePolygon = MeasurePolygon;
|
|
428
|
+
})(MeasureUtils || (MeasureUtils = {}));
|
|
429
|
+
|
|
358
430
|
var DrawingUtils;
|
|
359
431
|
(function (DrawingUtils) {
|
|
360
432
|
/**
|
|
@@ -367,15 +439,29 @@ var DrawingUtils;
|
|
|
367
439
|
*/
|
|
368
440
|
function PointAcrossPolyline(params) {
|
|
369
441
|
var viewer = params.viewer, positions = params.posses, distance = params.distance;
|
|
370
|
-
if (positions.length >
|
|
442
|
+
if (distance <= 0 && positions.length > 0) {
|
|
443
|
+
return {
|
|
444
|
+
point: positions[0]
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
else if (positions.length > 1) {
|
|
371
448
|
var currentDistance = 0;
|
|
449
|
+
var totalLength = MeasureUtils.MeasurePolyline({
|
|
450
|
+
posses: positions,
|
|
451
|
+
}).totalLength;
|
|
452
|
+
if (distance > totalLength) {
|
|
453
|
+
return {
|
|
454
|
+
point: positions[positions.length - 1]
|
|
455
|
+
};
|
|
456
|
+
}
|
|
372
457
|
for (var i = 0; i < positions.length - 1; i++) {
|
|
373
458
|
var length_1 = Cartesian3.distance(positions[i], positions[i + 1]);
|
|
374
459
|
if (length_1 + currentDistance >= distance) {
|
|
375
460
|
var carto1 = Cartographic.fromCartesian(positions[i]);
|
|
376
461
|
var carto2 = Cartographic.fromCartesian(positions[i + 1]);
|
|
377
462
|
var geodesic = new EllipsoidGeodesic(carto1, carto2, viewer.scene.globe.ellipsoid);
|
|
378
|
-
|
|
463
|
+
//const position = geodesic.interpolateUsingSurfaceDistance(distance - currentDistance);
|
|
464
|
+
var position = geodesic.interpolateUsingFraction((distance - currentDistance) / length_1);
|
|
379
465
|
var height = (carto1.height + carto2.height) / 2;
|
|
380
466
|
return {
|
|
381
467
|
point: Cartesian3.fromRadians(position.longitude, position.latitude, height)
|
|
@@ -386,18 +472,8 @@ var DrawingUtils;
|
|
|
386
472
|
}
|
|
387
473
|
}
|
|
388
474
|
}
|
|
389
|
-
else if (positions.length > 0) {
|
|
390
|
-
return {
|
|
391
|
-
point: positions[0]
|
|
392
|
-
};
|
|
393
|
-
}
|
|
394
|
-
else {
|
|
395
|
-
return {
|
|
396
|
-
point: null
|
|
397
|
-
};
|
|
398
|
-
}
|
|
399
475
|
return {
|
|
400
|
-
point: positions[positions.length - 1]
|
|
476
|
+
point: positions.length ? positions[positions.length - 1] : null
|
|
401
477
|
};
|
|
402
478
|
}
|
|
403
479
|
DrawingUtils.PointAcrossPolyline = PointAcrossPolyline;
|
|
@@ -451,74 +527,6 @@ var DrawingUtils;
|
|
|
451
527
|
DrawingUtils.GetTerrainHeight = GetTerrainHeight;
|
|
452
528
|
})(DrawingUtils || (DrawingUtils = {}));
|
|
453
529
|
|
|
454
|
-
var MeasureUtils;
|
|
455
|
-
(function (MeasureUtils) {
|
|
456
|
-
/**
|
|
457
|
-
* Returns the total distance in meters between an array of points.
|
|
458
|
-
* This distance is NOT following the terrain.
|
|
459
|
-
* @param posses
|
|
460
|
-
* @returns
|
|
461
|
-
*/
|
|
462
|
-
function MeasurePolyline(params) {
|
|
463
|
-
var posses = params.posses;
|
|
464
|
-
if (posses.length < 2) {
|
|
465
|
-
return {
|
|
466
|
-
totalLength: 0
|
|
467
|
-
};
|
|
468
|
-
}
|
|
469
|
-
var totalLength = 0;
|
|
470
|
-
var pos1 = null;
|
|
471
|
-
var pos2 = null;
|
|
472
|
-
for (var i = 0; i < posses.length; i++) {
|
|
473
|
-
if (pos1 == null) {
|
|
474
|
-
pos1 = posses[i];
|
|
475
|
-
}
|
|
476
|
-
else if (pos2 == null) {
|
|
477
|
-
pos2 = posses[i];
|
|
478
|
-
totalLength += Cartesian3.distance(pos1, pos2);
|
|
479
|
-
pos1 = pos2;
|
|
480
|
-
pos2 = null;
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
return {
|
|
484
|
-
totalLength: totalLength
|
|
485
|
-
};
|
|
486
|
-
}
|
|
487
|
-
MeasureUtils.MeasurePolyline = MeasurePolyline;
|
|
488
|
-
function MeasurePolygon(params) {
|
|
489
|
-
var posses = params.posses;
|
|
490
|
-
posses = [].concat(posses);
|
|
491
|
-
if (!Cartes.IsRing3Closed(posses)) {
|
|
492
|
-
posses.push(posses[0].clone());
|
|
493
|
-
}
|
|
494
|
-
if (posses.length < 3) {
|
|
495
|
-
return {
|
|
496
|
-
area: 0,
|
|
497
|
-
perimeter: 0
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
var area = 0;
|
|
501
|
-
var indices = PolygonPipeline.triangulate(posses, []);
|
|
502
|
-
for (var i = 0; i < indices.length; i += 3) {
|
|
503
|
-
var vector1 = posses[indices[i]];
|
|
504
|
-
var vector2 = posses[indices[i + 1]];
|
|
505
|
-
var vector3 = posses[indices[i + 2]];
|
|
506
|
-
var vectorC = Cartesian3.subtract(vector2, vector1, new Cartesian3());
|
|
507
|
-
var vectorD = Cartesian3.subtract(vector3, vector1, new Cartesian3());
|
|
508
|
-
var areaVector = Cartesian3.cross(vectorC, vectorD, new Cartesian3());
|
|
509
|
-
area += Cartesian3.magnitude(areaVector) / 2.0;
|
|
510
|
-
}
|
|
511
|
-
var perimeter = MeasurePolyline({
|
|
512
|
-
posses: posses
|
|
513
|
-
}).totalLength;
|
|
514
|
-
return {
|
|
515
|
-
area: area,
|
|
516
|
-
perimeter: perimeter
|
|
517
|
-
};
|
|
518
|
-
}
|
|
519
|
-
MeasureUtils.MeasurePolygon = MeasurePolygon;
|
|
520
|
-
})(MeasureUtils || (MeasureUtils = {}));
|
|
521
|
-
|
|
522
530
|
/**
|
|
523
531
|
* Ensures a number is returned from a given value.
|
|
524
532
|
* If given value cannot be parsed it will return defaultNum.
|
|
@@ -656,6 +664,13 @@ function applyOpacityToEntity(viewer, opacity, entity) {
|
|
|
656
664
|
function findOpacity(entity) {
|
|
657
665
|
return entity[NEW_OPACITY_KEY];
|
|
658
666
|
}
|
|
667
|
+
function GetValue(viewer, obj) {
|
|
668
|
+
var _a;
|
|
669
|
+
if ((_a = obj) === null || _a === void 0 ? void 0 : _a.getValue) {
|
|
670
|
+
return obj.getValue(viewer.scene.lastRenderTime);
|
|
671
|
+
}
|
|
672
|
+
return obj;
|
|
673
|
+
}
|
|
659
674
|
var EntityUtils;
|
|
660
675
|
(function (EntityUtils) {
|
|
661
676
|
/**
|
|
@@ -666,6 +681,8 @@ var EntityUtils;
|
|
|
666
681
|
*/
|
|
667
682
|
function GetPos(params) {
|
|
668
683
|
var viewer = params.viewer, entity = params.entity, visualRegister = params.visualRegister;
|
|
684
|
+
// TODO: Tidy this up, move to a separate function.
|
|
685
|
+
// We need a generic "get pos AS blah height reference" function.
|
|
669
686
|
function evaluateRendered() {
|
|
670
687
|
var rego = visualRegister ? visualRegister.GetRego({
|
|
671
688
|
entityId: entity.Bruce.ID,
|
|
@@ -673,10 +690,61 @@ var EntityUtils;
|
|
|
673
690
|
if ((rego === null || rego === void 0 ? void 0 : rego.visual) instanceof Entity) {
|
|
674
691
|
var visual = rego.visual;
|
|
675
692
|
if (visual.position) {
|
|
676
|
-
|
|
677
|
-
|
|
693
|
+
var pos3d_1 = GetValue(viewer, visual.position);
|
|
694
|
+
// Fix height reference.
|
|
695
|
+
if (pos3d_1 === null || pos3d_1 === void 0 ? void 0 : pos3d_1.x) {
|
|
696
|
+
var visualHeightRef = HeightReference.RELATIVE_TO_GROUND;
|
|
697
|
+
if (visual.model) {
|
|
698
|
+
visualHeightRef = GetValue(viewer, visual.model.heightReference);
|
|
699
|
+
}
|
|
700
|
+
else if (visual.polygon) {
|
|
701
|
+
visualHeightRef = GetValue(viewer, visual.polygon.heightReference);
|
|
702
|
+
}
|
|
703
|
+
else if (visual.polyline) {
|
|
704
|
+
visualHeightRef = GetValue(viewer, visual.polyline.clampToGround) ?
|
|
705
|
+
HeightReference.RELATIVE_TO_GROUND : HeightReference.NONE;
|
|
706
|
+
}
|
|
707
|
+
else if (visual.billboard) {
|
|
708
|
+
visualHeightRef = GetValue(viewer, visual.billboard.heightReference);
|
|
709
|
+
}
|
|
710
|
+
else if (visual.ellipse) {
|
|
711
|
+
visualHeightRef = GetValue(viewer, visual.ellipse.heightReference);
|
|
712
|
+
}
|
|
713
|
+
else if (visual.point) {
|
|
714
|
+
visualHeightRef = GetValue(viewer, visual.point.heightReference);
|
|
715
|
+
}
|
|
716
|
+
if (visualHeightRef == params.heightReference) {
|
|
717
|
+
return pos3d_1;
|
|
718
|
+
}
|
|
719
|
+
var carto_1 = Cartographic.fromCartesian(pos3d_1);
|
|
720
|
+
if (visualHeightRef == HeightReference.NONE) {
|
|
721
|
+
// Turn absolute into clamped.
|
|
722
|
+
if (params.heightReference == HeightReference.CLAMP_TO_GROUND) {
|
|
723
|
+
return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, 0);
|
|
724
|
+
}
|
|
725
|
+
// Turn absolute into relative (remove terrain height).
|
|
726
|
+
else if (params.heightReference == HeightReference.RELATIVE_TO_GROUND) {
|
|
727
|
+
var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto_1), 0);
|
|
728
|
+
return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, carto_1.height - terrainHeight);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
else if (visualHeightRef == HeightReference.CLAMP_TO_GROUND) {
|
|
732
|
+
var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto_1), 0);
|
|
733
|
+
return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, terrainHeight);
|
|
734
|
+
}
|
|
735
|
+
else if (visualHeightRef == HeightReference.RELATIVE_TO_GROUND) {
|
|
736
|
+
// Turn relative into absolute (add terrain height).
|
|
737
|
+
if (params.heightReference == HeightReference.NONE) {
|
|
738
|
+
var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto_1), 0);
|
|
739
|
+
return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, carto_1.height + terrainHeight);
|
|
740
|
+
}
|
|
741
|
+
// Turn relative into clamped.
|
|
742
|
+
else if (params.heightReference == HeightReference.CLAMP_TO_GROUND) {
|
|
743
|
+
return Cartesian3.fromRadians(carto_1.longitude, carto_1.latitude, 0);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
return pos3d_1;
|
|
678
747
|
}
|
|
679
|
-
return visual.position;
|
|
680
748
|
}
|
|
681
749
|
}
|
|
682
750
|
return null;
|
|
@@ -746,7 +814,14 @@ var EntityUtils;
|
|
|
746
814
|
return pos3d;
|
|
747
815
|
}
|
|
748
816
|
pos3d = evaluateRecord();
|
|
749
|
-
|
|
817
|
+
var carto = Cartes.ValidateCartes3(pos3d) ? Cartographic.fromCartesian(pos3d) : null;
|
|
818
|
+
if (carto) {
|
|
819
|
+
// Since we don't know height reference, we can't convert it.
|
|
820
|
+
// We will just clamp it to ground.
|
|
821
|
+
var terrainHeight = EnsureNumber(viewer.scene.globe.getHeight(carto), 0);
|
|
822
|
+
pos3d = Cartesian3.fromRadians(carto.longitude, carto.latitude, terrainHeight);
|
|
823
|
+
}
|
|
824
|
+
return pos3d;
|
|
750
825
|
}
|
|
751
826
|
EntityUtils.GetPos = GetPos;
|
|
752
827
|
/**
|
|
@@ -2311,13 +2386,11 @@ var CesiumParabola = /** @class */ (function () {
|
|
|
2311
2386
|
CesiumParabola.prototype.Animate = function () {
|
|
2312
2387
|
var _this = this;
|
|
2313
2388
|
this.Dispose();
|
|
2314
|
-
var p1 = this.curPos1;
|
|
2315
|
-
var p2 = this.curPos2;
|
|
2316
2389
|
var retry = false;
|
|
2317
|
-
if (!
|
|
2390
|
+
if (!this.curPos1 || !this.curPos2 || !Cartes.ValidateCartes3(this.curPos1) || !Cartes.ValidateCartes3(this.curPos2)) {
|
|
2318
2391
|
retry = true;
|
|
2319
2392
|
}
|
|
2320
|
-
var TOTAL_LENGTH = retry ? 0 : Cartesian3.distance(
|
|
2393
|
+
var TOTAL_LENGTH = retry ? 0 : Cartesian3.distance(this.curPos1, this.curPos2);
|
|
2321
2394
|
if (TOTAL_LENGTH <= 0) {
|
|
2322
2395
|
retry = true;
|
|
2323
2396
|
}
|
|
@@ -2330,11 +2403,11 @@ var CesiumParabola = /** @class */ (function () {
|
|
|
2330
2403
|
};
|
|
2331
2404
|
return;
|
|
2332
2405
|
}
|
|
2333
|
-
var TOTAL_POINTS = Math.max(50, Math.min(1000, TOTAL_LENGTH * 0.1));
|
|
2334
|
-
var POINT_LENGTH = TOTAL_LENGTH / TOTAL_POINTS;
|
|
2335
2406
|
var RATE_PER_SECOND = 1000 / 40;
|
|
2336
2407
|
var SEC_DURATION = this.duration;
|
|
2337
2408
|
var HEIGHT_DISTANCE_RATIO = this.heightDistanceRatio;
|
|
2409
|
+
var TOTAL_POINTS = Math.max(50, Math.min(1000, TOTAL_LENGTH * 0.1));
|
|
2410
|
+
var POINT_LENGTH = TOTAL_LENGTH / TOTAL_POINTS;
|
|
2338
2411
|
var TICK_LENGTH_INC = SEC_DURATION == 0 ? TOTAL_LENGTH : TOTAL_POINTS / (RATE_PER_SECOND * SEC_DURATION);
|
|
2339
2412
|
var curPoints = [];
|
|
2340
2413
|
var curPoint = 0;
|
|
@@ -2366,7 +2439,7 @@ var CesiumParabola = /** @class */ (function () {
|
|
|
2366
2439
|
}, false),
|
|
2367
2440
|
point: {
|
|
2368
2441
|
heightReference: HeightReference.NONE,
|
|
2369
|
-
pixelSize: this.width * 1.
|
|
2442
|
+
pixelSize: this.width * 1.8,
|
|
2370
2443
|
color: Color.fromCssColorString(this.color),
|
|
2371
2444
|
outlineColor: Color.WHITE,
|
|
2372
2445
|
outlineWidth: 2
|
|
@@ -2376,107 +2449,125 @@ var CesiumParabola = /** @class */ (function () {
|
|
|
2376
2449
|
this.viewer.entities.add(p2Entity);
|
|
2377
2450
|
p1Entity.parent = parabola;
|
|
2378
2451
|
p2Entity.parent = parabola;
|
|
2452
|
+
var siblings = [p1Entity, p2Entity];
|
|
2379
2453
|
var quadraticKey = null;
|
|
2380
2454
|
var quadratic = null;
|
|
2381
|
-
var
|
|
2382
|
-
|
|
2383
|
-
var p2
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
var height1 = Cartographic.fromCartesian(p1).height;
|
|
2388
|
-
var height2 = Cartographic.fromCartesian(p2).height;
|
|
2389
|
-
if (isNaN(height1) || isNaN(height2)) {
|
|
2390
|
-
return;
|
|
2391
|
-
}
|
|
2392
|
-
var totalHeight = height2 + height1;
|
|
2393
|
-
var curQuadraticKey = height1 + "-" + height2;
|
|
2394
|
-
if (quadraticKey == curQuadraticKey) {
|
|
2395
|
-
return;
|
|
2396
|
-
}
|
|
2397
|
-
var points2d = [
|
|
2398
|
-
new Cartesian2(0, height1),
|
|
2399
|
-
new Cartesian2(TOTAL_LENGTH, height2)
|
|
2400
|
-
];
|
|
2401
|
-
var vertexHeight = 0;
|
|
2402
|
-
// Flat line.
|
|
2403
|
-
if (HEIGHT_DISTANCE_RATIO == 0) {
|
|
2404
|
-
vertexHeight = totalHeight * 0.5;
|
|
2405
|
-
}
|
|
2406
|
-
else {
|
|
2407
|
-
var largestHeight = Math.max(height1, height2);
|
|
2408
|
-
vertexHeight = largestHeight + (TOTAL_LENGTH * HEIGHT_DISTANCE_RATIO);
|
|
2409
|
-
}
|
|
2410
|
-
points2d.push(new Cartesian2(TOTAL_LENGTH * 0.5, vertexHeight));
|
|
2411
|
-
var calcQuadratic = function (points) {
|
|
2412
|
-
// Swaps position of two rows in matrix.
|
|
2413
|
-
function swapRows(matrix, rowAIndex, rowBIndex) {
|
|
2414
|
-
var rowAVal = matrix[rowAIndex];
|
|
2415
|
-
matrix[rowAIndex] = matrix[rowBIndex];
|
|
2416
|
-
matrix[rowBIndex] = rowAVal;
|
|
2417
|
-
return matrix;
|
|
2455
|
+
var quadraticPreparing = false;
|
|
2456
|
+
var prepareQuadratic = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
2457
|
+
var p1, p2, height1, height2, totalHeight, curQuadraticKey, points2d, vertexHeight, largestHeight, calcQuadratic;
|
|
2458
|
+
return __generator(this, function (_a) {
|
|
2459
|
+
if (quadraticPreparing) {
|
|
2460
|
+
return [2 /*return*/];
|
|
2418
2461
|
}
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
if (
|
|
2424
|
-
return
|
|
2462
|
+
quadraticPreparing = true;
|
|
2463
|
+
try {
|
|
2464
|
+
p1 = this.curPos1;
|
|
2465
|
+
p2 = this.curPos2;
|
|
2466
|
+
if (!p1 || !p2 || !Cartes.ValidateCartes3(p1) || !Cartes.ValidateCartes3(p2)) {
|
|
2467
|
+
return [2 /*return*/];
|
|
2425
2468
|
}
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2469
|
+
height1 = Cartographic.fromCartesian(p1).height;
|
|
2470
|
+
height2 = Cartographic.fromCartesian(p2).height;
|
|
2471
|
+
if (isNaN(height1) || isNaN(height2)) {
|
|
2472
|
+
return [2 /*return*/];
|
|
2429
2473
|
}
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
zeroRow[i] -= parentRow[i] * factor;
|
|
2435
|
-
}
|
|
2474
|
+
totalHeight = height2 + height1;
|
|
2475
|
+
curQuadraticKey = height1 + "-" + height2 + "-" + TOTAL_LENGTH;
|
|
2476
|
+
if (quadraticKey == curQuadraticKey) {
|
|
2477
|
+
return [2 /*return*/];
|
|
2436
2478
|
}
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
row[i] /= colValue;
|
|
2446
|
-
}
|
|
2479
|
+
points2d = [
|
|
2480
|
+
new Cartesian2(0, height1),
|
|
2481
|
+
new Cartesian2(TOTAL_LENGTH, height2)
|
|
2482
|
+
];
|
|
2483
|
+
vertexHeight = 0;
|
|
2484
|
+
// Flat line.
|
|
2485
|
+
if (HEIGHT_DISTANCE_RATIO == 0) {
|
|
2486
|
+
vertexHeight = totalHeight * 0.5;
|
|
2447
2487
|
}
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
function matrixFromPoints(points) {
|
|
2452
|
-
var rows = [];
|
|
2453
|
-
var constructRow = function (point) {
|
|
2454
|
-
rows.push([
|
|
2455
|
-
-Math.pow(point.x, 2),
|
|
2456
|
-
point.x,
|
|
2457
|
-
1,
|
|
2458
|
-
point.y
|
|
2459
|
-
]);
|
|
2460
|
-
};
|
|
2461
|
-
for (var i = 0; i < points.length; i++) {
|
|
2462
|
-
constructRow(points[i]);
|
|
2488
|
+
else {
|
|
2489
|
+
largestHeight = Math.max(height1, height2);
|
|
2490
|
+
vertexHeight = largestHeight + (TOTAL_LENGTH * HEIGHT_DISTANCE_RATIO);
|
|
2463
2491
|
}
|
|
2464
|
-
|
|
2492
|
+
points2d.push(new Cartesian2(TOTAL_LENGTH * 0.5, vertexHeight));
|
|
2493
|
+
calcQuadratic = function (points) {
|
|
2494
|
+
// Swaps position of two rows in matrix.
|
|
2495
|
+
function swapRows(matrix, rowAIndex, rowBIndex) {
|
|
2496
|
+
var rowAVal = matrix[rowAIndex];
|
|
2497
|
+
matrix[rowAIndex] = matrix[rowBIndex];
|
|
2498
|
+
matrix[rowBIndex] = rowAVal;
|
|
2499
|
+
return matrix;
|
|
2500
|
+
}
|
|
2501
|
+
// Zeros rowA at colIndex by subtracting a multiplied rowB from it.
|
|
2502
|
+
function reduceMatrixRowByRow(matrix, zeroingIndex, parentIndex, colIndex) {
|
|
2503
|
+
var zeroRow = matrix[zeroingIndex];
|
|
2504
|
+
var parentRow = matrix[parentIndex];
|
|
2505
|
+
if (zeroRow[colIndex] == 0) {
|
|
2506
|
+
return matrix;
|
|
2507
|
+
}
|
|
2508
|
+
else if (parentRow[colIndex] == 0) {
|
|
2509
|
+
matrix = swapRows(matrix, parentIndex, zeroingIndex);
|
|
2510
|
+
return divideMatrixRow(matrix, parentIndex, colIndex);
|
|
2511
|
+
}
|
|
2512
|
+
// rowAIndex colIndex / rowBIndex colIndex = factor;
|
|
2513
|
+
var factor = zeroRow[colIndex] / parentRow[colIndex];
|
|
2514
|
+
for (var i = 0; i < zeroRow.length; i++) {
|
|
2515
|
+
if (i >= colIndex) {
|
|
2516
|
+
zeroRow[i] -= parentRow[i] * factor;
|
|
2517
|
+
}
|
|
2518
|
+
}
|
|
2519
|
+
return matrix;
|
|
2520
|
+
}
|
|
2521
|
+
// Makes a given row column equal 1 by diving while row by that column.
|
|
2522
|
+
function divideMatrixRow(matrix, rowIndex, colIndex) {
|
|
2523
|
+
var row = matrix[rowIndex];
|
|
2524
|
+
var colValue = row[colIndex];
|
|
2525
|
+
for (var i = 0; i < row.length; i++) {
|
|
2526
|
+
if (i >= colIndex) {
|
|
2527
|
+
row[i] /= colValue;
|
|
2528
|
+
}
|
|
2529
|
+
}
|
|
2530
|
+
return matrix;
|
|
2531
|
+
}
|
|
2532
|
+
// Returns initial matrix for calculating a, b and c for quadratic formula from given points.
|
|
2533
|
+
function matrixFromPoints(points) {
|
|
2534
|
+
var rows = [];
|
|
2535
|
+
var constructRow = function (point) {
|
|
2536
|
+
rows.push([
|
|
2537
|
+
-Math.pow(point.x, 2),
|
|
2538
|
+
point.x,
|
|
2539
|
+
1,
|
|
2540
|
+
point.y
|
|
2541
|
+
]);
|
|
2542
|
+
};
|
|
2543
|
+
for (var i = 0; i < points.length; i++) {
|
|
2544
|
+
constructRow(points[i]);
|
|
2545
|
+
}
|
|
2546
|
+
return rows;
|
|
2547
|
+
}
|
|
2548
|
+
var initialMatrix = matrixFromPoints(points);
|
|
2549
|
+
var step1Matrix = reduceMatrixRowByRow(initialMatrix, 1, 0, 0);
|
|
2550
|
+
var step2Matrix = reduceMatrixRowByRow(step1Matrix, 2, 0, 0);
|
|
2551
|
+
var step3Matrix = reduceMatrixRowByRow(step2Matrix, 2, 1, 1);
|
|
2552
|
+
var step4Matrix = reduceMatrixRowByRow(step3Matrix, 0, 1, 1);
|
|
2553
|
+
var step5Matrix = reduceMatrixRowByRow(step4Matrix, 0, 2, 2);
|
|
2554
|
+
var step6Matrix = reduceMatrixRowByRow(step5Matrix, 1, 2, 2);
|
|
2555
|
+
var a = step6Matrix[0][3];
|
|
2556
|
+
var b = step6Matrix[1][3];
|
|
2557
|
+
var c = step6Matrix[2][3];
|
|
2558
|
+
return { a: a, b: b, c: c };
|
|
2559
|
+
};
|
|
2560
|
+
quadratic = calcQuadratic(points2d);
|
|
2465
2561
|
}
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
var c = step6Matrix[2][3];
|
|
2476
|
-
return { a: a, b: b, c: c };
|
|
2477
|
-
};
|
|
2478
|
-
quadratic = calcQuadratic(points2d);
|
|
2479
|
-
};
|
|
2562
|
+
catch (e) {
|
|
2563
|
+
console.error(e);
|
|
2564
|
+
}
|
|
2565
|
+
finally {
|
|
2566
|
+
quadraticPreparing = false;
|
|
2567
|
+
}
|
|
2568
|
+
return [2 /*return*/];
|
|
2569
|
+
});
|
|
2570
|
+
}); };
|
|
2480
2571
|
var getPosition = function (increment) {
|
|
2481
2572
|
if (!quadratic) {
|
|
2482
2573
|
return null;
|
|
@@ -2494,13 +2585,16 @@ var CesiumParabola = /** @class */ (function () {
|
|
|
2494
2585
|
var pos3d = DrawingUtils.PointAcrossPolyline({
|
|
2495
2586
|
viewer: _this.viewer,
|
|
2496
2587
|
distance: lengthAcross,
|
|
2497
|
-
posses: [
|
|
2588
|
+
posses: [_this.curPos1, _this.curPos2]
|
|
2498
2589
|
}).point;
|
|
2499
2590
|
var point = Cartographic.fromCartesian(pos3d);
|
|
2500
2591
|
var posHeight = getParabolaYFromX(lengthAcross, quadratic);
|
|
2501
2592
|
return Cartesian3.fromRadians(point.longitude, point.latitude, posHeight);
|
|
2502
2593
|
};
|
|
2503
2594
|
var updatePoints = function () {
|
|
2595
|
+
if (!quadratic) {
|
|
2596
|
+
return;
|
|
2597
|
+
}
|
|
2504
2598
|
var increment = Math.floor(curPoint);
|
|
2505
2599
|
var chips = curPoint - Math.floor(curPoint);
|
|
2506
2600
|
var posses = [];
|
|
@@ -2517,13 +2611,22 @@ var CesiumParabola = /** @class */ (function () {
|
|
|
2517
2611
|
curPoints = posses;
|
|
2518
2612
|
};
|
|
2519
2613
|
var doTick = function () {
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2614
|
+
var p1 = _this.curPos1;
|
|
2615
|
+
var p2 = _this.curPos2;
|
|
2616
|
+
var newLength = p1 && p2 ? Cartesian3.distance(p1, p2) : -1;
|
|
2617
|
+
if (newLength > 0 && newLength != TOTAL_LENGTH) {
|
|
2618
|
+
TOTAL_LENGTH = newLength;
|
|
2619
|
+
TOTAL_POINTS = Math.max(50, Math.min(1000, TOTAL_LENGTH * 0.1));
|
|
2620
|
+
POINT_LENGTH = TOTAL_LENGTH / TOTAL_POINTS;
|
|
2621
|
+
TICK_LENGTH_INC = SEC_DURATION == 0 ? TOTAL_LENGTH : TOTAL_POINTS / (RATE_PER_SECOND * SEC_DURATION);
|
|
2523
2622
|
}
|
|
2524
|
-
curPoint += TICK_LENGTH_INC;
|
|
2525
2623
|
prepareQuadratic();
|
|
2526
|
-
|
|
2624
|
+
if (quadratic) {
|
|
2625
|
+
if (curPoint < TOTAL_POINTS) {
|
|
2626
|
+
curPoint += TICK_LENGTH_INC;
|
|
2627
|
+
}
|
|
2628
|
+
updatePoints();
|
|
2629
|
+
}
|
|
2527
2630
|
};
|
|
2528
2631
|
var animateInterval = setInterval(doTick, RATE_PER_SECOND);
|
|
2529
2632
|
this.dispose = function () {
|
|
@@ -2540,10 +2643,7 @@ var CesiumParabola = /** @class */ (function () {
|
|
|
2540
2643
|
};
|
|
2541
2644
|
return {
|
|
2542
2645
|
parabola: parabola,
|
|
2543
|
-
siblings:
|
|
2544
|
-
p1Entity,
|
|
2545
|
-
p2Entity
|
|
2546
|
-
]
|
|
2646
|
+
siblings: siblings
|
|
2547
2647
|
};
|
|
2548
2648
|
};
|
|
2549
2649
|
CesiumParabola.prototype.Dispose = function () {
|
|
@@ -2565,7 +2665,7 @@ var RelationRenderEngine;
|
|
|
2565
2665
|
RelationRenderEngine.GetRenderGroupId = GetRenderGroupId;
|
|
2566
2666
|
function Render(params) {
|
|
2567
2667
|
return __awaiter(this, void 0, void 0, function () {
|
|
2568
|
-
var apiGetter, viewer, visualRegister, menuItemId, relations, api, rendered, i, relation, fromEntity, toEntity, dataEntity, _a, relationType, style, _b, cEntity;
|
|
2668
|
+
var apiGetter, viewer, visualRegister, menuItemId, relations, api, rendered, i, relation, fromEntity, toEntity, dataEntity, _a, relationType, styleId, entityType, style, _b, cEntity;
|
|
2569
2669
|
return __generator(this, function (_c) {
|
|
2570
2670
|
switch (_c.label) {
|
|
2571
2671
|
case 0:
|
|
@@ -2575,7 +2675,7 @@ var RelationRenderEngine;
|
|
|
2575
2675
|
i = 0;
|
|
2576
2676
|
_c.label = 1;
|
|
2577
2677
|
case 1:
|
|
2578
|
-
if (!(i < relations.length)) return [3 /*break*/,
|
|
2678
|
+
if (!(i < relations.length)) return [3 /*break*/, 14];
|
|
2579
2679
|
relation = relations[i];
|
|
2580
2680
|
return [4 /*yield*/, Entity$1.Get({
|
|
2581
2681
|
api: api,
|
|
@@ -2608,18 +2708,29 @@ var RelationRenderEngine;
|
|
|
2608
2708
|
})];
|
|
2609
2709
|
case 7:
|
|
2610
2710
|
relationType = (_c.sent()).relationType;
|
|
2611
|
-
|
|
2612
|
-
return [
|
|
2711
|
+
styleId = Number(relationType === null || relationType === void 0 ? void 0 : relationType["Relation.EntityType.ID"]);
|
|
2712
|
+
if (!!styleId) return [3 /*break*/, 9];
|
|
2713
|
+
return [4 /*yield*/, EntityType.Get({
|
|
2613
2714
|
api: api,
|
|
2614
|
-
|
|
2715
|
+
entityTypeId: relationType === null || relationType === void 0 ? void 0 : relationType["Relation.EntityType.ID"]
|
|
2615
2716
|
})];
|
|
2616
2717
|
case 8:
|
|
2617
|
-
|
|
2618
|
-
|
|
2718
|
+
entityType = (_c.sent()).entityType;
|
|
2719
|
+
styleId = entityType === null || entityType === void 0 ? void 0 : entityType["DisplaySetting.ID"];
|
|
2720
|
+
_c.label = 9;
|
|
2619
2721
|
case 9:
|
|
2620
|
-
|
|
2621
|
-
|
|
2722
|
+
if (!styleId) return [3 /*break*/, 11];
|
|
2723
|
+
return [4 /*yield*/, Style.Get({
|
|
2724
|
+
api: api,
|
|
2725
|
+
styleId: styleId
|
|
2726
|
+
})];
|
|
2622
2727
|
case 10:
|
|
2728
|
+
_b = (_c.sent()).style;
|
|
2729
|
+
return [3 /*break*/, 12];
|
|
2730
|
+
case 11:
|
|
2731
|
+
_b = null;
|
|
2732
|
+
_c.label = 12;
|
|
2733
|
+
case 12:
|
|
2623
2734
|
style = _b;
|
|
2624
2735
|
cEntity = Parabola.Render({
|
|
2625
2736
|
dataEntity: dataEntity,
|
|
@@ -2632,11 +2743,11 @@ var RelationRenderEngine;
|
|
|
2632
2743
|
});
|
|
2633
2744
|
cEntity._renderGroup = GetRenderGroupId(relation);
|
|
2634
2745
|
rendered[GetRenderGroupId(relation)] = cEntity;
|
|
2635
|
-
_c.label =
|
|
2636
|
-
case
|
|
2746
|
+
_c.label = 13;
|
|
2747
|
+
case 13:
|
|
2637
2748
|
i++;
|
|
2638
2749
|
return [3 /*break*/, 1];
|
|
2639
|
-
case
|
|
2750
|
+
case 14: return [2 /*return*/, rendered];
|
|
2640
2751
|
}
|
|
2641
2752
|
});
|
|
2642
2753
|
});
|
|
@@ -2658,29 +2769,37 @@ var RelationRenderEngine;
|
|
|
2658
2769
|
var hDistanceRatio = EnsureNumber((style === null || style === void 0 ? void 0 : style.heightDistanceRatio) ? Calculator.GetValue(style === null || style === void 0 ? void 0 : style.heightDistanceRatio, entity, []) : 0.25, 0.25);
|
|
2659
2770
|
var fromPos = null;
|
|
2660
2771
|
var toPos = null;
|
|
2772
|
+
var updatingPosses = false;
|
|
2661
2773
|
var updatePosses = function () {
|
|
2774
|
+
if (updatingPosses) {
|
|
2775
|
+
return;
|
|
2776
|
+
}
|
|
2777
|
+
updatingPosses = true;
|
|
2662
2778
|
try {
|
|
2663
2779
|
fromPos = EntityUtils.GetPos({
|
|
2664
2780
|
entity: params.fromEntity,
|
|
2665
2781
|
viewer: params.viewer,
|
|
2666
|
-
visualRegister: params.visualRegister
|
|
2782
|
+
visualRegister: params.visualRegister,
|
|
2783
|
+
heightReference: HeightReference.NONE
|
|
2667
2784
|
});
|
|
2668
2785
|
toPos = EntityUtils.GetPos({
|
|
2669
2786
|
entity: params.toEntity,
|
|
2670
2787
|
viewer: params.viewer,
|
|
2671
|
-
visualRegister: params.visualRegister
|
|
2788
|
+
visualRegister: params.visualRegister,
|
|
2789
|
+
heightReference: HeightReference.NONE
|
|
2672
2790
|
});
|
|
2673
2791
|
}
|
|
2674
2792
|
catch (e) {
|
|
2675
2793
|
console.error(e);
|
|
2676
2794
|
}
|
|
2795
|
+
updatingPosses = false;
|
|
2677
2796
|
};
|
|
2678
2797
|
updatePosses();
|
|
2679
2798
|
var parabola = new CesiumParabola({
|
|
2680
2799
|
viewer: params.viewer,
|
|
2681
2800
|
pos1: function () { return fromPos; },
|
|
2682
2801
|
pos2: function () { return toPos; },
|
|
2683
|
-
color: cColor.
|
|
2802
|
+
color: cColor.toCssColorString(),
|
|
2684
2803
|
width: width,
|
|
2685
2804
|
duration: duration,
|
|
2686
2805
|
heightDistanceRatio: hDistanceRatio
|
|
@@ -4677,7 +4796,8 @@ function createFilterGetterCacheKey(params) {
|
|
|
4677
4796
|
cacheKey += params.api.GetBaseUrl();
|
|
4678
4797
|
cacheKey += params.typeId;
|
|
4679
4798
|
cacheKey += params.batchSize;
|
|
4680
|
-
|
|
4799
|
+
// This could potentially crash, but if it crashes here then it would crash during API request anyways.
|
|
4800
|
+
cacheKey += JSON.stringify(params.attrFilter ? params.attrFilter : {});
|
|
4681
4801
|
return cacheKey;
|
|
4682
4802
|
}
|
|
4683
4803
|
var SharedGetters;
|
|
@@ -5729,9 +5849,10 @@ var RelationsRenderManager;
|
|
|
5729
5849
|
var MenuItemManager;
|
|
5730
5850
|
(function (MenuItemManager) {
|
|
5731
5851
|
var Manager = /** @class */ (function () {
|
|
5732
|
-
function Manager(
|
|
5852
|
+
function Manager(params) {
|
|
5733
5853
|
this.items = [];
|
|
5734
5854
|
this.onUpdate = null;
|
|
5855
|
+
var viewer = params.viewer, visualsRegister = params.visualsRegister;
|
|
5735
5856
|
this.viewer = viewer;
|
|
5736
5857
|
if (!visualsRegister) {
|
|
5737
5858
|
visualsRegister = new VisualsRegister.Register(viewer);
|
|
@@ -5768,12 +5889,10 @@ var MenuItemManager;
|
|
|
5768
5889
|
* Renders a given menu item and all ids children.
|
|
5769
5890
|
* Will return the enabled item id.
|
|
5770
5891
|
* @param params
|
|
5771
|
-
* @param recursive
|
|
5772
5892
|
* @returns
|
|
5773
5893
|
*/
|
|
5774
|
-
Manager.prototype.RenderItem = function (params
|
|
5894
|
+
Manager.prototype.RenderItem = function (params) {
|
|
5775
5895
|
var _a, _b, _c;
|
|
5776
|
-
if (recursive === void 0) { recursive = true; }
|
|
5777
5896
|
return __awaiter(this, void 0, void 0, function () {
|
|
5778
5897
|
var rItem, isFolder, i, childId;
|
|
5779
5898
|
return __generator(this, function (_d) {
|
|
@@ -5901,7 +6020,7 @@ var MenuItemManager;
|
|
|
5901
6020
|
_d.label = 2;
|
|
5902
6021
|
case 2:
|
|
5903
6022
|
isFolder = !params.item.Type || params.item.Type == MenuItem.EType.None;
|
|
5904
|
-
if (!(params.item.Children && recursive && isFolder)) return [3 /*break*/, 6];
|
|
6023
|
+
if (!(params.item.Children && params.recursive != false && isFolder)) return [3 /*break*/, 6];
|
|
5905
6024
|
i = 0;
|
|
5906
6025
|
_d.label = 3;
|
|
5907
6026
|
case 3:
|
|
@@ -5929,17 +6048,20 @@ var MenuItemManager;
|
|
|
5929
6048
|
* @param id
|
|
5930
6049
|
* @param recursive
|
|
5931
6050
|
*/
|
|
5932
|
-
Manager.prototype.RemoveItemById = function (
|
|
6051
|
+
Manager.prototype.RemoveItemById = function (params) {
|
|
5933
6052
|
var _a, _b;
|
|
5934
|
-
if (recursive === void 0) { recursive = true; }
|
|
5935
6053
|
return __awaiter(this, void 0, void 0, function () {
|
|
5936
|
-
var item, _loop_1, this_1, i;
|
|
6054
|
+
var id, recursive, item, _loop_1, this_1, i;
|
|
5937
6055
|
return __generator(this, function (_c) {
|
|
5938
6056
|
switch (_c.label) {
|
|
5939
6057
|
case 0:
|
|
6058
|
+
id = params.menuItemId, recursive = params.recursive;
|
|
5940
6059
|
if (this.viewer.isDestroyed()) {
|
|
5941
6060
|
return [2 /*return*/];
|
|
5942
6061
|
}
|
|
6062
|
+
if (recursive == null) {
|
|
6063
|
+
recursive = true;
|
|
6064
|
+
}
|
|
5943
6065
|
item = this.items.find(function (x) { return x.id === id; });
|
|
5944
6066
|
if (!item) return [3 /*break*/, 5];
|
|
5945
6067
|
if (!recursive) return [3 /*break*/, 4];
|
|
@@ -5950,7 +6072,9 @@ var MenuItemManager;
|
|
|
5950
6072
|
case 0:
|
|
5951
6073
|
child = this_1.items.find(function (x) { return x.id === item.childIds[i]; });
|
|
5952
6074
|
if (!child) return [3 /*break*/, 2];
|
|
5953
|
-
return [4 /*yield*/, this_1.RemoveItemById(
|
|
6075
|
+
return [4 /*yield*/, this_1.RemoveItemById({
|
|
6076
|
+
menuItemId: child.id
|
|
6077
|
+
})];
|
|
5954
6078
|
case 1:
|
|
5955
6079
|
_a.sent();
|
|
5956
6080
|
_a.label = 2;
|
|
@@ -5995,15 +6119,15 @@ var MenuItemManager;
|
|
|
5995
6119
|
* Rerenders given entities.
|
|
5996
6120
|
* If no menu items are specified then the rerender is called on all enabled menu items.
|
|
5997
6121
|
* It is highly recommended to supply menu item ids.
|
|
5998
|
-
* @param
|
|
5999
|
-
* @param menuItemIds
|
|
6122
|
+
* @param params
|
|
6000
6123
|
*/
|
|
6001
|
-
Manager.prototype.ReRender = function (
|
|
6124
|
+
Manager.prototype.ReRender = function (params) {
|
|
6002
6125
|
return __awaiter(this, void 0, void 0, function () {
|
|
6003
|
-
var items, i, item;
|
|
6126
|
+
var entityIds, menuItemIds, items, i, item;
|
|
6004
6127
|
return __generator(this, function (_a) {
|
|
6005
6128
|
switch (_a.label) {
|
|
6006
6129
|
case 0:
|
|
6130
|
+
entityIds = params.entityIds, menuItemIds = params.menuItemIds;
|
|
6007
6131
|
if (!(entityIds === null || entityIds === void 0 ? void 0 : entityIds.length)) {
|
|
6008
6132
|
return [2 /*return*/];
|
|
6009
6133
|
}
|
|
@@ -6345,6 +6469,14 @@ var MenuItemCreator;
|
|
|
6345
6469
|
});
|
|
6346
6470
|
}
|
|
6347
6471
|
MenuItemCreator.RenderBookmarkItems = RenderBookmarkItems;
|
|
6472
|
+
function RenderRelations(params) {
|
|
6473
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
6474
|
+
return __generator(this, function (_a) {
|
|
6475
|
+
return [2 /*return*/];
|
|
6476
|
+
});
|
|
6477
|
+
});
|
|
6478
|
+
}
|
|
6479
|
+
MenuItemCreator.RenderRelations = RenderRelations;
|
|
6348
6480
|
})(MenuItemCreator || (MenuItemCreator = {}));
|
|
6349
6481
|
|
|
6350
6482
|
var DEFAULT_BING_KEY = "AqL0uYT5T84jiJeX55_b9zJeeP3MX2p1WLOHH4ljIEPZ7ZL2M81bYLzyYeSwuzzl";
|
|
@@ -7311,37 +7443,61 @@ var TileRenderEngine;
|
|
|
7311
7443
|
// TODO: Move these to the data model.
|
|
7312
7444
|
var MIN_SHADOW_SIZE = 2048;
|
|
7313
7445
|
var MAX_SHADOW_SIZE = 32768;
|
|
7446
|
+
var RELATION_MENU_ITEM_ID = "BOOKMARK_ENTITY_RELATIONS";
|
|
7447
|
+
/**
|
|
7448
|
+
* Renders DATA_VERSION = 1 navigator.
|
|
7449
|
+
* @param params
|
|
7450
|
+
* @param bookmark
|
|
7451
|
+
* @param view
|
|
7452
|
+
*/
|
|
7314
7453
|
function renderLegacyNavigator(params, bookmark, view) {
|
|
7315
|
-
var _a, _b;
|
|
7454
|
+
var _a, _b, _c, _d, _e;
|
|
7316
7455
|
return __awaiter(this, void 0, void 0, function () {
|
|
7317
|
-
var vSettings, bSettings,
|
|
7318
|
-
return __generator(this, function (
|
|
7319
|
-
switch (
|
|
7456
|
+
var vSettings, bSettings, manager, VR, scene, baseColor, frustum, curFrustum, camera, pos, go, fxaa, pointer, clock, timeStr, enabledItems, newItemIds, _i, enabledItems_1, id, menuItem;
|
|
7457
|
+
return __generator(this, function (_f) {
|
|
7458
|
+
switch (_f.label) {
|
|
7320
7459
|
case 0:
|
|
7321
7460
|
vSettings = view.Settings;
|
|
7322
7461
|
bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
|
|
7462
|
+
manager = params.manager;
|
|
7463
|
+
VR = manager.VisualsRegister;
|
|
7464
|
+
scene = manager.Viewer.scene;
|
|
7323
7465
|
return [4 /*yield*/, TileRenderEngine.Terrain.LegacyNavigator.RenderView({
|
|
7324
7466
|
apiGetter: params.apiGetter,
|
|
7325
7467
|
bookmarkId: params.bookmarkId,
|
|
7326
|
-
viewer:
|
|
7468
|
+
viewer: manager.Viewer,
|
|
7327
7469
|
viewId: params.viewId,
|
|
7328
7470
|
})];
|
|
7329
7471
|
case 1:
|
|
7330
|
-
|
|
7472
|
+
_f.sent();
|
|
7331
7473
|
return [4 /*yield*/, TileRenderEngine.Map.LegacyNavigator.RenderView({
|
|
7332
7474
|
apiGetter: params.apiGetter,
|
|
7333
7475
|
bookmarkId: params.bookmarkId,
|
|
7334
|
-
viewer:
|
|
7476
|
+
viewer: manager.Viewer,
|
|
7335
7477
|
viewId: params.viewId,
|
|
7336
7478
|
ignoreIds: []
|
|
7337
7479
|
})];
|
|
7338
7480
|
case 2:
|
|
7339
|
-
|
|
7481
|
+
_f.sent();
|
|
7482
|
+
baseColor = bSettings === null || bSettings === void 0 ? void 0 : bSettings.globeColor;
|
|
7483
|
+
if (baseColor == null) {
|
|
7484
|
+
// TODO: Need global default.
|
|
7485
|
+
baseColor = "#0326BE";
|
|
7486
|
+
}
|
|
7487
|
+
scene.globe.baseColor = Color.fromCssColorString(baseColor);
|
|
7488
|
+
// TODO: Other scene settings.
|
|
7489
|
+
// TODO: Rendered relationships.
|
|
7490
|
+
VR.ClearHidden();
|
|
7491
|
+
if ((_a = bSettings.hiddenEntityIds) === null || _a === void 0 ? void 0 : _a.length) {
|
|
7492
|
+
VR.SetHidden({
|
|
7493
|
+
entityIds: bSettings.hiddenEntityIds,
|
|
7494
|
+
hidden: true
|
|
7495
|
+
});
|
|
7496
|
+
}
|
|
7340
7497
|
frustum = bSettings === null || bSettings === void 0 ? void 0 : bSettings.cameraFrustum;
|
|
7341
7498
|
if (frustum == null) {
|
|
7342
7499
|
frustum = Camera.EFrustum.Perspective;
|
|
7343
7500
|
}
|
|
7344
|
-
scene = params.manager.Viewer.scene;
|
|
7345
7501
|
curFrustum = scene.camera.frustum instanceof OrthographicFrustum ? Camera.EFrustum.Orthographic : Camera.EFrustum.Perspective;
|
|
7346
7502
|
if (curFrustum != frustum) {
|
|
7347
7503
|
if (frustum == Camera.EFrustum.Perspective) {
|
|
@@ -7357,7 +7513,7 @@ function renderLegacyNavigator(params, bookmark, view) {
|
|
|
7357
7513
|
if (!params.skipCamera) {
|
|
7358
7514
|
camera = bookmark.Camera;
|
|
7359
7515
|
pos = Cartesian3.fromDegrees(+camera.position.longitude, +camera.position.latitude, +camera.position.height);
|
|
7360
|
-
|
|
7516
|
+
manager.Viewer.scene.camera.flyTo({
|
|
7361
7517
|
destination: pos,
|
|
7362
7518
|
orientation: {
|
|
7363
7519
|
heading: +camera.heading,
|
|
@@ -7367,41 +7523,83 @@ function renderLegacyNavigator(params, bookmark, view) {
|
|
|
7367
7523
|
duration: params.skipTransition ? 0 : 2
|
|
7368
7524
|
});
|
|
7369
7525
|
}
|
|
7370
|
-
go = (
|
|
7526
|
+
go = (_b = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _b === void 0 ? void 0 : _b.groundOcclusion;
|
|
7371
7527
|
if (go == null) {
|
|
7372
7528
|
go = vSettings === null || vSettings === void 0 ? void 0 : vSettings.GroundOcclusion;
|
|
7373
7529
|
}
|
|
7374
7530
|
if (go == null) {
|
|
7375
7531
|
go = false;
|
|
7376
7532
|
}
|
|
7377
|
-
|
|
7378
|
-
|
|
7379
|
-
|
|
7380
|
-
|
|
7381
|
-
|
|
7382
|
-
|
|
7383
|
-
|
|
7384
|
-
|
|
7533
|
+
manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
|
|
7534
|
+
fxaa = manager.Viewer.scene.postProcessStages.fxaa;
|
|
7535
|
+
fxaa.enabled = true;
|
|
7536
|
+
pointer = (_c = bSettings === null || bSettings === void 0 ? void 0 : bSettings.timelineSettings) === null || _c === void 0 ? void 0 : _c.timelinePointer;
|
|
7537
|
+
if (pointer != null) {
|
|
7538
|
+
clock = manager.Viewer.clock;
|
|
7539
|
+
timeStr = JulianDate.toIso8601(pointer);
|
|
7540
|
+
clock.currentTime = JulianDate.fromIso8601(timeStr);
|
|
7385
7541
|
}
|
|
7386
|
-
|
|
7542
|
+
enabledItems = manager.GetEnabledItemIds();
|
|
7543
|
+
newItemIds = (_d = bSettings === null || bSettings === void 0 ? void 0 : bSettings.selectedItemIds) !== null && _d !== void 0 ? _d : [];
|
|
7544
|
+
_i = 0, enabledItems_1 = enabledItems;
|
|
7545
|
+
_f.label = 3;
|
|
7546
|
+
case 3:
|
|
7547
|
+
if (!(_i < enabledItems_1.length)) return [3 /*break*/, 6];
|
|
7548
|
+
id = enabledItems_1[_i];
|
|
7549
|
+
if (!(newItemIds.indexOf(id) === -1 ||
|
|
7550
|
+
id == RELATION_MENU_ITEM_ID)) return [3 /*break*/, 5];
|
|
7551
|
+
return [4 /*yield*/, params.manager.RemoveItemById({
|
|
7552
|
+
menuItemId: id
|
|
7553
|
+
})];
|
|
7554
|
+
case 4:
|
|
7555
|
+
_f.sent();
|
|
7556
|
+
_f.label = 5;
|
|
7557
|
+
case 5:
|
|
7558
|
+
_i++;
|
|
7559
|
+
return [3 /*break*/, 3];
|
|
7560
|
+
case 6:
|
|
7561
|
+
if (!params.bookmarkId) return [3 /*break*/, 8];
|
|
7387
7562
|
return [4 /*yield*/, MenuItemCreator.RenderBookmarkItems({
|
|
7388
7563
|
apiGetter: params.apiGetter,
|
|
7389
|
-
manager:
|
|
7564
|
+
manager: manager,
|
|
7390
7565
|
view: view,
|
|
7391
7566
|
bookmark: bookmark
|
|
7392
7567
|
})];
|
|
7393
|
-
case
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
case
|
|
7568
|
+
case 7:
|
|
7569
|
+
_f.sent();
|
|
7570
|
+
_f.label = 8;
|
|
7571
|
+
case 8:
|
|
7572
|
+
if (!((_e = bSettings.drawnRelationEntityIDs) === null || _e === void 0 ? void 0 : _e.length)) return [3 /*break*/, 10];
|
|
7573
|
+
menuItem = {
|
|
7574
|
+
id: RELATION_MENU_ITEM_ID,
|
|
7575
|
+
Caption: "Entity relations",
|
|
7576
|
+
BruceEntity: {
|
|
7577
|
+
EntityIds: bSettings.drawnRelationEntityIDs
|
|
7578
|
+
},
|
|
7579
|
+
Type: MenuItem.EType.Relations
|
|
7580
|
+
};
|
|
7581
|
+
return [4 /*yield*/, params.manager.RenderItem({
|
|
7582
|
+
apiGetter: params.apiGetter,
|
|
7583
|
+
item: menuItem
|
|
7584
|
+
})];
|
|
7585
|
+
case 9:
|
|
7586
|
+
_f.sent();
|
|
7587
|
+
_f.label = 10;
|
|
7588
|
+
case 10: return [2 /*return*/];
|
|
7397
7589
|
}
|
|
7398
7590
|
});
|
|
7399
7591
|
});
|
|
7400
7592
|
}
|
|
7593
|
+
/**
|
|
7594
|
+
* Renders DATA_VERSION > 1 navigator.
|
|
7595
|
+
* @param params
|
|
7596
|
+
* @param bookmark
|
|
7597
|
+
* @param view
|
|
7598
|
+
*/
|
|
7401
7599
|
function renderNavigator(params, bookmark, view) {
|
|
7402
7600
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
|
|
7403
7601
|
return __awaiter(this, void 0, void 0, function () {
|
|
7404
|
-
var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, gOcclusion, hillShades, baseColor, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock, terrain, selectedIds, i, id, imagery,
|
|
7602
|
+
var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, gOcclusion, hillShades, baseColor, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock, terrain, selectedIds, i, id, imagery, renderedRelationEntityIds, curEnabled, newItemIds, _i, curEnabled_1, id, menuItem;
|
|
7405
7603
|
return __generator(this, function (_2) {
|
|
7406
7604
|
switch (_2.label) {
|
|
7407
7605
|
case 0:
|
|
@@ -7616,7 +7814,6 @@ function renderNavigator(params, bookmark, view) {
|
|
|
7616
7814
|
})];
|
|
7617
7815
|
case 3:
|
|
7618
7816
|
_2.sent();
|
|
7619
|
-
RELATION_MENU_ITEM_ID = "BOOKMARK_ENTITY_RELATIONS";
|
|
7620
7817
|
renderedRelationEntityIds = bSettings.renderedEntityRelations;
|
|
7621
7818
|
if (!renderedRelationEntityIds) {
|
|
7622
7819
|
renderedRelationEntityIds = [];
|
|
@@ -7630,7 +7827,9 @@ function renderNavigator(params, bookmark, view) {
|
|
|
7630
7827
|
id = curEnabled_1[_i];
|
|
7631
7828
|
if (!(newItemIds.indexOf(id) === -1 ||
|
|
7632
7829
|
id == RELATION_MENU_ITEM_ID)) return [3 /*break*/, 6];
|
|
7633
|
-
return [4 /*yield*/, params.manager.RemoveItemById(
|
|
7830
|
+
return [4 /*yield*/, params.manager.RemoveItemById({
|
|
7831
|
+
menuItemId: id
|
|
7832
|
+
})];
|
|
7634
7833
|
case 5:
|
|
7635
7834
|
_2.sent();
|
|
7636
7835
|
_2.label = 6;
|
|
@@ -7713,9 +7912,6 @@ var ViewRenderEngine;
|
|
|
7713
7912
|
bookmark = _b;
|
|
7714
7913
|
_c.label = 7;
|
|
7715
7914
|
case 7:
|
|
7716
|
-
if (bookmark && view.DataVersion != bookmark.DataVersion) {
|
|
7717
|
-
throw new Error("View and bookmark settings version mismatch.");
|
|
7718
|
-
}
|
|
7719
7915
|
version = view.DataVersion;
|
|
7720
7916
|
if (!(version == 1)) return [3 /*break*/, 9];
|
|
7721
7917
|
return [4 /*yield*/, renderLegacyNavigator(params, bookmark, view)];
|
|
@@ -7736,7 +7932,8 @@ var ViewRenderEngine;
|
|
|
7736
7932
|
|
|
7737
7933
|
var ViewUtils;
|
|
7738
7934
|
(function (ViewUtils) {
|
|
7739
|
-
function GatherLegacyMapTiles(
|
|
7935
|
+
function GatherLegacyMapTiles(params) {
|
|
7936
|
+
var viewer = params.viewer;
|
|
7740
7937
|
var collection = viewer.imageryLayers;
|
|
7741
7938
|
var tiles = [];
|
|
7742
7939
|
for (var i = 0; i < collection.length; i++) {
|
|
@@ -7753,15 +7950,22 @@ var ViewUtils;
|
|
|
7753
7950
|
});
|
|
7754
7951
|
}
|
|
7755
7952
|
}
|
|
7756
|
-
return
|
|
7953
|
+
return {
|
|
7954
|
+
imagery: tiles.reverse()
|
|
7955
|
+
};
|
|
7757
7956
|
}
|
|
7758
7957
|
ViewUtils.GatherLegacyMapTiles = GatherLegacyMapTiles;
|
|
7759
|
-
function GatherLegacyTerrainTile(
|
|
7958
|
+
function GatherLegacyTerrainTile(params) {
|
|
7959
|
+
var viewer = params.viewer;
|
|
7760
7960
|
var enabled = viewer.terrainProvider;
|
|
7761
7961
|
if (enabled === null || enabled === void 0 ? void 0 : enabled._bName) {
|
|
7762
|
-
return
|
|
7962
|
+
return {
|
|
7963
|
+
terrain: enabled._bName
|
|
7964
|
+
};
|
|
7763
7965
|
}
|
|
7764
|
-
return
|
|
7966
|
+
return {
|
|
7967
|
+
terrain: "flatterrain"
|
|
7968
|
+
};
|
|
7765
7969
|
}
|
|
7766
7970
|
ViewUtils.GatherLegacyTerrainTile = GatherLegacyTerrainTile;
|
|
7767
7971
|
function GatherMapTiles(params) {
|