bruce-cesium 1.6.4 → 1.6.6
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 +333 -93
- package/dist/bruce-cesium.es5.js.map +1 -1
- package/dist/bruce-cesium.umd.js +330 -91
- package/dist/bruce-cesium.umd.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +2 -1
- package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +5 -4
- package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +5 -5
- package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
- package/dist/lib/rendering/render-managers/render-manager.js +189 -3
- package/dist/lib/rendering/render-managers/render-manager.js.map +1 -1
- package/dist/lib/rendering/tile-render-engine.js +116 -54
- package/dist/lib/rendering/tile-render-engine.js.map +1 -1
- package/dist/lib/rendering/view-render-engine.js +21 -21
- package/dist/lib/rendering/view-render-engine.js.map +1 -1
- package/dist/types/rendering/tile-render-engine.d.ts +1 -1
- package/package.json +2 -2
package/dist/bruce-cesium.es5.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { BruceEvent, Cartes, Carto, Entity as Entity$1, Geometry, Tileset, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, DelayQueue, BatchedDataGetter, EntityRelationType, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, EntityRelation, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
|
|
2
|
-
import
|
|
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, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
|
|
2
|
+
import * as Cesium from 'cesium';
|
|
3
|
+
import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, EllipsoidTerrainProvider, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, SceneMode, HeadingPitchRange, KmlDataSource, createOsmBuildings, Cesium3DTileStyle, Rectangle, Cesium3DTileColorBlendMode, CallbackProperty, OrthographicFrustum, JulianDate, Cesium3DTileset, Matrix4, IonResource, createWorldTerrain, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, PolygonPipeline, EllipsoidGeodesic, sampleTerrainMostDetailed, ColorMaterialProperty, Matrix3, EasingFunction, GeometryInstance } from 'cesium';
|
|
3
4
|
|
|
4
5
|
var TIME_LAG = 300;
|
|
5
6
|
var POSITION_CHECK_TIMER = 950;
|
|
@@ -1101,6 +1102,177 @@ var EntityUtils;
|
|
|
1101
1102
|
EntityUtils.GetOpacity = GetOpacity;
|
|
1102
1103
|
})(EntityUtils || (EntityUtils = {}));
|
|
1103
1104
|
|
|
1105
|
+
function distanceToSegment(fromPoint, toPoint1, toPoint2) {
|
|
1106
|
+
var ab = Cartesian3.subtract(toPoint2, toPoint1, new Cartesian3());
|
|
1107
|
+
var ap = Cartesian3.subtract(fromPoint, toPoint1, new Cartesian3());
|
|
1108
|
+
var e = Cartesian3.dot(ap, ab);
|
|
1109
|
+
if (e <= 0) {
|
|
1110
|
+
return Cartesian3.distance(fromPoint, toPoint1);
|
|
1111
|
+
}
|
|
1112
|
+
var f = Cartesian3.dot(ab, ab);
|
|
1113
|
+
if (e >= f) {
|
|
1114
|
+
return Cartesian3.distance(fromPoint, toPoint2);
|
|
1115
|
+
}
|
|
1116
|
+
var proj = Cartesian3.multiplyByScalar(ab, e / f, new Cartesian3());
|
|
1117
|
+
var projECEF = Cartesian3.add(toPoint1, proj, new Cartesian3());
|
|
1118
|
+
return Cartesian3.distance(fromPoint, projECEF);
|
|
1119
|
+
}
|
|
1120
|
+
function pointInsidePolygon(point, polygon) {
|
|
1121
|
+
var inside = false;
|
|
1122
|
+
var x = point.latitude;
|
|
1123
|
+
var y = point.longitude;
|
|
1124
|
+
for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
|
|
1125
|
+
var xi = +polygon[i].latitude;
|
|
1126
|
+
var yi = +polygon[i].longitude;
|
|
1127
|
+
var xj = +polygon[j].latitude;
|
|
1128
|
+
var yj = +polygon[j].longitude;
|
|
1129
|
+
if (isNaN(xi) || isNaN(yi) || isNaN(xj) || isNaN(yj)) {
|
|
1130
|
+
continue;
|
|
1131
|
+
}
|
|
1132
|
+
var intersect = (yi > y) !== (yj > y) && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;
|
|
1133
|
+
if (intersect) {
|
|
1134
|
+
inside = !inside;
|
|
1135
|
+
}
|
|
1136
|
+
}
|
|
1137
|
+
return inside;
|
|
1138
|
+
}
|
|
1139
|
+
function distanceToPolygon(point, polygon) {
|
|
1140
|
+
if (pointInsidePolygon(point, polygon)) {
|
|
1141
|
+
var avgAltitude = polygon.reduce(function (sum, vertex) { return sum + vertex.altitude; }, 0) / polygon.length;
|
|
1142
|
+
return Math.abs(point.altitude - avgAltitude);
|
|
1143
|
+
}
|
|
1144
|
+
var pointECEF = Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
|
|
1145
|
+
var minDistance = Infinity;
|
|
1146
|
+
for (var i = 0; i < polygon.length; i++) {
|
|
1147
|
+
var point1 = polygon[i];
|
|
1148
|
+
var point1Latitude = EnsureNumber(point1.latitude);
|
|
1149
|
+
var point1Longitude = EnsureNumber(point1.longitude);
|
|
1150
|
+
if (!point1Latitude && !point1Longitude) {
|
|
1151
|
+
continue;
|
|
1152
|
+
}
|
|
1153
|
+
var point2 = polygon[(i + 1) % polygon.length];
|
|
1154
|
+
var point2Latitude = EnsureNumber(point2.latitude);
|
|
1155
|
+
var point2Longitude = EnsureNumber(point2.longitude);
|
|
1156
|
+
if (!point2Latitude && !point2Longitude) {
|
|
1157
|
+
continue;
|
|
1158
|
+
}
|
|
1159
|
+
var coord1ECEF = Cartesian3.fromDegrees(point1Longitude, point1Latitude, EnsureNumber(point1.altitude));
|
|
1160
|
+
var coord2ECEF = Cartesian3.fromDegrees(point2Longitude, point2Latitude, EnsureNumber(point2.altitude));
|
|
1161
|
+
var distance = distanceToSegment(pointECEF, coord1ECEF, coord2ECEF);
|
|
1162
|
+
minDistance = Math.min(minDistance, distance);
|
|
1163
|
+
}
|
|
1164
|
+
return minDistance;
|
|
1165
|
+
}
|
|
1166
|
+
// Cache for distance calculations.
|
|
1167
|
+
// It will keep only the most recent 3000 entries.
|
|
1168
|
+
var distanceCache = new LRUCache(3000);
|
|
1169
|
+
function createCacheKey(point, entity) {
|
|
1170
|
+
try {
|
|
1171
|
+
var pointData = {
|
|
1172
|
+
latitude: MathUtils.Round(+point.latitude, 5),
|
|
1173
|
+
longitude: MathUtils.Round(+point.longitude, 5),
|
|
1174
|
+
altitude: MathUtils.Round(+point.altitude, 4)
|
|
1175
|
+
};
|
|
1176
|
+
var entityData = __assign(__assign(__assign({}, entity.location), entity.geometry), entity.boundaries);
|
|
1177
|
+
return JSON.stringify(pointData) + '|' + JSON.stringify(entityData);
|
|
1178
|
+
}
|
|
1179
|
+
catch (e) {
|
|
1180
|
+
console.error(e);
|
|
1181
|
+
return null;
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
/**
|
|
1185
|
+
* Calculates distance while accounting for polylines and polygons.
|
|
1186
|
+
* It does not account for multi-geometry.
|
|
1187
|
+
* @param point
|
|
1188
|
+
* @param entity
|
|
1189
|
+
* @returns
|
|
1190
|
+
*/
|
|
1191
|
+
function calculateDistance(point, entity) {
|
|
1192
|
+
var cacheKey = createCacheKey(point, entity);
|
|
1193
|
+
var cachedResult = cacheKey ? distanceCache.Get(cacheKey) : null;
|
|
1194
|
+
if (cachedResult || cachedResult == 0) {
|
|
1195
|
+
return cachedResult;
|
|
1196
|
+
}
|
|
1197
|
+
var minDistance = Infinity;
|
|
1198
|
+
var pointPos = Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
|
|
1199
|
+
// We'll start by using the entity location if it's available.
|
|
1200
|
+
var entityPos3d = null;
|
|
1201
|
+
if (entity.location && entity.location.latitude) {
|
|
1202
|
+
var latitude = EnsureNumber(entity.location.latitude);
|
|
1203
|
+
var longitude = EnsureNumber(entity.location.longitude);
|
|
1204
|
+
// Disallowing exact 0.
|
|
1205
|
+
if (latitude || longitude) {
|
|
1206
|
+
var altitude = EnsureNumber(entity.location.altitude);
|
|
1207
|
+
entityPos3d = Cartesian3.fromDegrees(longitude, latitude, altitude);
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
if (!isNaN(entityPos3d.x)) {
|
|
1211
|
+
minDistance = Cartesian3.distance(pointPos, entityPos3d);
|
|
1212
|
+
}
|
|
1213
|
+
// Check geometry if it's available.
|
|
1214
|
+
if (entity.geometry) {
|
|
1215
|
+
var passedGeometry = false;
|
|
1216
|
+
if (entity.geometry.Polygon) {
|
|
1217
|
+
var polygonRings = entity.geometry.Polygon;
|
|
1218
|
+
var polygon = typeof polygonRings == "string" ? String(polygonRings) : polygonRings.length ? polygonRings[0].LinearRing : "";
|
|
1219
|
+
var points = polygon ? Geometry.ParsePoints(polygon) : [];
|
|
1220
|
+
if (points.length > 2) {
|
|
1221
|
+
var distance = distanceToPolygon(point, points);
|
|
1222
|
+
if (!isNaN(distance)) {
|
|
1223
|
+
minDistance = Math.min(minDistance, distance);
|
|
1224
|
+
passedGeometry = true;
|
|
1225
|
+
}
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
if (!passedGeometry && entity.geometry.LineString) {
|
|
1229
|
+
var points = Geometry.ParsePoints(entity.geometry.LineString);
|
|
1230
|
+
if (points.length > 1) {
|
|
1231
|
+
var pointsLen = points.length;
|
|
1232
|
+
for (var i = 0; i < pointsLen; i++) {
|
|
1233
|
+
var point1 = points[i];
|
|
1234
|
+
var point1Latitude = EnsureNumber(point1.latitude);
|
|
1235
|
+
var point1Longitude = EnsureNumber(point1.longitude);
|
|
1236
|
+
if (!point1Latitude && !point1Longitude) {
|
|
1237
|
+
continue;
|
|
1238
|
+
}
|
|
1239
|
+
var point2 = points[(i + 1) % pointsLen];
|
|
1240
|
+
var point2Latitude = EnsureNumber(point2.latitude);
|
|
1241
|
+
var point2Longitude = EnsureNumber(point2.longitude);
|
|
1242
|
+
if (!point2Latitude && !point2Longitude) {
|
|
1243
|
+
continue;
|
|
1244
|
+
}
|
|
1245
|
+
var coord1ECEF = Cartesian3.fromDegrees(point1Longitude, point1Latitude, EnsureNumber(point1.altitude));
|
|
1246
|
+
var coord2ECEF = Cartesian3.fromDegrees(point2Longitude, point2Latitude, EnsureNumber(point2.altitude));
|
|
1247
|
+
var distance = distanceToSegment(pointPos, coord1ECEF, coord2ECEF);
|
|
1248
|
+
if (!isNaN(distance)) {
|
|
1249
|
+
minDistance = Math.min(minDistance, distance);
|
|
1250
|
+
passedGeometry = true;
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
// Backup is using boundaries.
|
|
1257
|
+
if (minDistance === Infinity && entity.boundaries) {
|
|
1258
|
+
var point_1 = {
|
|
1259
|
+
latitude: (EnsureNumber(entity.boundaries.minLatitude) + EnsureNumber(entity.boundaries.maxLatitude)) / 2,
|
|
1260
|
+
longitude: (EnsureNumber(entity.boundaries.minLongitude) + EnsureNumber(entity.boundaries.maxLongitude)) / 2,
|
|
1261
|
+
altitude: 0
|
|
1262
|
+
};
|
|
1263
|
+
// Disallowing exact 0.
|
|
1264
|
+
if (point_1.latitude || point_1.longitude) {
|
|
1265
|
+
if (Carto.ValidateCarto(point_1)) {
|
|
1266
|
+
var boundsPoint = Cartesian3.fromDegrees(point_1.longitude, point_1.latitude, point_1.altitude);
|
|
1267
|
+
minDistance = Cartesian3.distance(pointPos, boundsPoint);
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
if (cacheKey) {
|
|
1272
|
+
distanceCache.Set(cacheKey, minDistance);
|
|
1273
|
+
}
|
|
1274
|
+
return minDistance;
|
|
1275
|
+
}
|
|
1104
1276
|
var RenderManager;
|
|
1105
1277
|
(function (RenderManager) {
|
|
1106
1278
|
function DetermineZoomItem(params) {
|
|
@@ -1113,11 +1285,15 @@ var RenderManager;
|
|
|
1113
1285
|
return null;
|
|
1114
1286
|
}
|
|
1115
1287
|
var is2d = viewer.scene.mode === SceneMode.SCENE2D;
|
|
1116
|
-
var cameraPos = viewer.camera.
|
|
1117
|
-
if (!
|
|
1288
|
+
var cameraPos = viewer.camera.positionCartographic;
|
|
1289
|
+
if (!cameraPos || !cameraPos.latitude) {
|
|
1118
1290
|
return null;
|
|
1119
1291
|
}
|
|
1120
|
-
var distance =
|
|
1292
|
+
var distance = calculateDistance({
|
|
1293
|
+
altitude: cameraPos.height,
|
|
1294
|
+
latitude: Math$1.toDegrees(cameraPos.latitude),
|
|
1295
|
+
longitude: Math$1.toDegrees(cameraPos.longitude)
|
|
1296
|
+
}, entity);
|
|
1121
1297
|
var zoomItem = (!distance && distance != 0) ? null : GetZoomControlFromDistance({
|
|
1122
1298
|
zoomControl: zoomControl,
|
|
1123
1299
|
distance: distance
|
|
@@ -2311,6 +2487,8 @@ var EntityRenderEngine;
|
|
|
2311
2487
|
})(Model3d = EntityRenderEngine.Model3d || (EntityRenderEngine.Model3d = {}));
|
|
2312
2488
|
})(EntityRenderEngine || (EntityRenderEngine = {}));
|
|
2313
2489
|
|
|
2490
|
+
var BATCH_SIZE = 500;
|
|
2491
|
+
var CHECK_BATCH_SIZE = 250;
|
|
2314
2492
|
/**
|
|
2315
2493
|
* Manager for rendering Bruce entities.
|
|
2316
2494
|
* This will request entities based on setup menu item filter.
|
|
@@ -2385,7 +2563,7 @@ var EntitiesRenderManager;
|
|
|
2385
2563
|
this.getter = this.sharedGetters.GetOrCreateFilterGetter({
|
|
2386
2564
|
api: api,
|
|
2387
2565
|
attrFilter: (_e = this.item.BruceEntity.Filter) !== null && _e !== void 0 ? _e : {},
|
|
2388
|
-
batchSize:
|
|
2566
|
+
batchSize: BATCH_SIZE,
|
|
2389
2567
|
typeId: this.item.BruceEntity["EntityType.ID"],
|
|
2390
2568
|
monitor: this.monitor,
|
|
2391
2569
|
viewer: this.viewer,
|
|
@@ -2463,7 +2641,7 @@ var EntitiesRenderManager;
|
|
|
2463
2641
|
};
|
|
2464
2642
|
Manager.prototype.doEntityCheck = function (ids) {
|
|
2465
2643
|
return __awaiter(this, void 0, void 0, function () {
|
|
2466
|
-
var api,
|
|
2644
|
+
var api, checkBatch, e_1;
|
|
2467
2645
|
var _this = this;
|
|
2468
2646
|
return __generator(this, function (_a) {
|
|
2469
2647
|
switch (_a.label) {
|
|
@@ -2487,13 +2665,12 @@ var EntitiesRenderManager;
|
|
|
2487
2665
|
return [2 /*return*/];
|
|
2488
2666
|
}
|
|
2489
2667
|
if (!(ids.length > 0)) return [3 /*break*/, 4];
|
|
2490
|
-
CHECK_BATCH_SIZE_1 = 150;
|
|
2491
2668
|
checkBatch = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
2492
2669
|
var entityIds, entities;
|
|
2493
2670
|
return __generator(this, function (_a) {
|
|
2494
2671
|
switch (_a.label) {
|
|
2495
2672
|
case 0:
|
|
2496
|
-
entityIds = ids.splice(0,
|
|
2673
|
+
entityIds = ids.splice(0, CHECK_BATCH_SIZE);
|
|
2497
2674
|
return [4 /*yield*/, Entity$1.GetListByIds({
|
|
2498
2675
|
api: api,
|
|
2499
2676
|
entityIds: entityIds
|
|
@@ -2529,7 +2706,6 @@ var EntitiesRenderManager;
|
|
|
2529
2706
|
};
|
|
2530
2707
|
Manager.prototype.distributeForRender = function (entities) {
|
|
2531
2708
|
var _this = this;
|
|
2532
|
-
var BATCH_SIZE = 300;
|
|
2533
2709
|
this.renderQueue = this.renderQueue.concat(entities);
|
|
2534
2710
|
if (!this.renderQueueInterval && this.renderQueue.length) {
|
|
2535
2711
|
this.renderQueueInterval = setInterval(function () {
|
|
@@ -2614,6 +2790,8 @@ var EntitiesRenderManager;
|
|
|
2614
2790
|
EntitiesRenderManager.Manager = Manager;
|
|
2615
2791
|
})(EntitiesRenderManager || (EntitiesRenderManager = {}));
|
|
2616
2792
|
|
|
2793
|
+
var BATCH_SIZE$1 = 500;
|
|
2794
|
+
var CHECK_BATCH_SIZE$1 = 250;
|
|
2617
2795
|
/**
|
|
2618
2796
|
* Render manager for a group of pre-loaded entities.
|
|
2619
2797
|
* The entities may or may not have records.
|
|
@@ -2648,7 +2826,7 @@ var EntitiesLoadedRenderManager;
|
|
|
2648
2826
|
if (this.disposed) {
|
|
2649
2827
|
throw (new Error("This item is disposed."));
|
|
2650
2828
|
}
|
|
2651
|
-
this.getter = new BatchedDataGetter.Getter(this.item.BruceEntity.Entities, this.monitor,
|
|
2829
|
+
this.getter = new BatchedDataGetter.Getter(this.item.BruceEntity.Entities, this.monitor, BATCH_SIZE$1);
|
|
2652
2830
|
this.getterSub = this.getter.OnUpdate.Subscribe(function (entities) {
|
|
2653
2831
|
_this.onGetterUpdate(entities);
|
|
2654
2832
|
});
|
|
@@ -2694,7 +2872,7 @@ var EntitiesLoadedRenderManager;
|
|
|
2694
2872
|
};
|
|
2695
2873
|
Manager.prototype.doEntityCheck = function (ids) {
|
|
2696
2874
|
return __awaiter(this, void 0, void 0, function () {
|
|
2697
|
-
var api,
|
|
2875
|
+
var api, checkBatch, e_1;
|
|
2698
2876
|
var _this = this;
|
|
2699
2877
|
return __generator(this, function (_a) {
|
|
2700
2878
|
switch (_a.label) {
|
|
@@ -2707,13 +2885,12 @@ var EntitiesLoadedRenderManager;
|
|
|
2707
2885
|
return [2 /*return*/];
|
|
2708
2886
|
}
|
|
2709
2887
|
if (!(ids.length > 0)) return [3 /*break*/, 4];
|
|
2710
|
-
CHECK_BATCH_SIZE_1 = 150;
|
|
2711
2888
|
checkBatch = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
2712
2889
|
var entityIds, entities;
|
|
2713
2890
|
return __generator(this, function (_a) {
|
|
2714
2891
|
switch (_a.label) {
|
|
2715
2892
|
case 0:
|
|
2716
|
-
entityIds = ids.splice(0,
|
|
2893
|
+
entityIds = ids.splice(0, CHECK_BATCH_SIZE$1);
|
|
2717
2894
|
return [4 /*yield*/, Entity$1.GetListByIds({
|
|
2718
2895
|
api: api,
|
|
2719
2896
|
entityIds: entityIds
|
|
@@ -4107,6 +4284,7 @@ var VisualsRegister;
|
|
|
4107
4284
|
VisualsRegister.Register = Register;
|
|
4108
4285
|
})(VisualsRegister || (VisualsRegister = {}));
|
|
4109
4286
|
|
|
4287
|
+
var BATCH_SIZE$2 = 500;
|
|
4110
4288
|
/**
|
|
4111
4289
|
* Render manager for rendering an array of entity ids.
|
|
4112
4290
|
* This will render them in batches to avoid overloading the viewer.
|
|
@@ -4140,7 +4318,7 @@ var EntitiesIdsRenderManager;
|
|
|
4140
4318
|
if (this.disposed) {
|
|
4141
4319
|
throw (new Error("This item is disposed."));
|
|
4142
4320
|
}
|
|
4143
|
-
this.getter = new BatchedDataGetter.Getter(this.item.BruceEntity.EntityIds, this.monitor,
|
|
4321
|
+
this.getter = new BatchedDataGetter.Getter(this.item.BruceEntity.EntityIds, this.monitor, BATCH_SIZE$2);
|
|
4144
4322
|
this.getterSub = this.getter.OnUpdate.Subscribe(function (ids) {
|
|
4145
4323
|
_this.onGetterUpdate(ids);
|
|
4146
4324
|
});
|
|
@@ -5504,7 +5682,7 @@ var SharedGetters;
|
|
|
5504
5682
|
})(SharedGetters || (SharedGetters = {}));
|
|
5505
5683
|
|
|
5506
5684
|
var MAX_BATCHES = 2;
|
|
5507
|
-
var BATCH_SIZE = 30;
|
|
5685
|
+
var BATCH_SIZE$3 = 30;
|
|
5508
5686
|
var BATCH_DELAY = 200;
|
|
5509
5687
|
var MAX_RANGE = 3000;
|
|
5510
5688
|
var TilesetOsmRenderManager;
|
|
@@ -5699,7 +5877,7 @@ var TilesetOsmRenderManager;
|
|
|
5699
5877
|
var isClose = this.getIsVisualWithinRange(feature, MAX_RANGE);
|
|
5700
5878
|
if (isClose) {
|
|
5701
5879
|
batch.push(feature);
|
|
5702
|
-
if (batch.length >= BATCH_SIZE) {
|
|
5880
|
+
if (batch.length >= BATCH_SIZE$3) {
|
|
5703
5881
|
return batch;
|
|
5704
5882
|
}
|
|
5705
5883
|
}
|
|
@@ -5804,7 +5982,7 @@ var TilesetOsmRenderManager;
|
|
|
5804
5982
|
delete this._loadedCesiumEntities[key];
|
|
5805
5983
|
this.totalLoaded -= 1;
|
|
5806
5984
|
removed += 1;
|
|
5807
|
-
if (removed >= BATCH_SIZE) {
|
|
5985
|
+
if (removed >= BATCH_SIZE$3) {
|
|
5808
5986
|
return true;
|
|
5809
5987
|
}
|
|
5810
5988
|
}
|
|
@@ -7338,27 +7516,50 @@ function prepLegacyName(name) {
|
|
|
7338
7516
|
* @returns
|
|
7339
7517
|
*/
|
|
7340
7518
|
function renderDefaultTerrTile(id) {
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7519
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
7520
|
+
var CESIUM, provider, _a;
|
|
7521
|
+
return __generator(this, function (_b) {
|
|
7522
|
+
switch (_b.label) {
|
|
7523
|
+
case 0:
|
|
7524
|
+
CESIUM = Cesium;
|
|
7525
|
+
_a = id;
|
|
7526
|
+
switch (_a) {
|
|
7527
|
+
case ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain: return [3 /*break*/, 1];
|
|
7528
|
+
case ProjectViewTile.EDefaultTerrain.FlatTerrain: return [3 /*break*/, 5];
|
|
7529
|
+
case ProjectViewTile.EDefaultTerrain.LINZ: return [3 /*break*/, 6];
|
|
7530
|
+
}
|
|
7531
|
+
return [3 /*break*/, 7];
|
|
7532
|
+
case 1:
|
|
7533
|
+
if (!CESIUM.createWorldTerrainAsync) return [3 /*break*/, 3];
|
|
7534
|
+
return [4 /*yield*/, CESIUM.createWorldTerrainAsync({
|
|
7535
|
+
requestVertexNormals: true,
|
|
7536
|
+
requestWaterMask: false
|
|
7537
|
+
})];
|
|
7538
|
+
case 2:
|
|
7539
|
+
provider = _b.sent();
|
|
7540
|
+
return [3 /*break*/, 4];
|
|
7541
|
+
case 3:
|
|
7542
|
+
provider = createWorldTerrain({
|
|
7543
|
+
requestVertexNormals: true,
|
|
7544
|
+
requestWaterMask: false
|
|
7545
|
+
});
|
|
7546
|
+
_b.label = 4;
|
|
7547
|
+
case 4: return [3 /*break*/, 7];
|
|
7548
|
+
case 5:
|
|
7549
|
+
provider = new EllipsoidTerrainProvider();
|
|
7550
|
+
return [3 /*break*/, 7];
|
|
7551
|
+
case 6:
|
|
7552
|
+
provider = new CesiumTerrainProvider({
|
|
7553
|
+
url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
|
|
7554
|
+
requestVertexNormals: true,
|
|
7555
|
+
requestWaterMask: false,
|
|
7556
|
+
requestMetadata: false
|
|
7557
|
+
});
|
|
7558
|
+
return [3 /*break*/, 7];
|
|
7559
|
+
case 7: return [2 /*return*/, provider];
|
|
7560
|
+
}
|
|
7561
|
+
});
|
|
7562
|
+
});
|
|
7362
7563
|
}
|
|
7363
7564
|
/**
|
|
7364
7565
|
* Maps a legacy terrain's name to a default terrain id.
|
|
@@ -8139,28 +8340,42 @@ var TileRenderEngine;
|
|
|
8139
8340
|
(function (LegacyNavigator) {
|
|
8140
8341
|
function Render(params) {
|
|
8141
8342
|
var _a;
|
|
8142
|
-
|
|
8143
|
-
|
|
8144
|
-
|
|
8145
|
-
|
|
8146
|
-
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
|
-
|
|
8150
|
-
|
|
8151
|
-
|
|
8152
|
-
|
|
8153
|
-
|
|
8154
|
-
|
|
8155
|
-
|
|
8156
|
-
|
|
8343
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
8344
|
+
var bId, curProvider, provider, id;
|
|
8345
|
+
return __generator(this, function (_b) {
|
|
8346
|
+
switch (_b.label) {
|
|
8347
|
+
case 0:
|
|
8348
|
+
bId = createLegacyTerrId(params.data);
|
|
8349
|
+
curProvider = params.viewer.terrainProvider;
|
|
8350
|
+
if (curProvider._bId && curProvider._bId === bId) {
|
|
8351
|
+
return [2 /*return*/];
|
|
8352
|
+
}
|
|
8353
|
+
provider = null;
|
|
8354
|
+
if (!isLegacyTerrainDefault(params.data.Name)) return [3 /*break*/, 2];
|
|
8355
|
+
id = legacyTerrIdToDefaultId(params.data.Name);
|
|
8356
|
+
return [4 /*yield*/, renderDefaultTerrTile(id)];
|
|
8357
|
+
case 1:
|
|
8358
|
+
provider = (_b.sent());
|
|
8359
|
+
return [3 /*break*/, 3];
|
|
8360
|
+
case 2:
|
|
8361
|
+
if (params.data.SourceUrl) {
|
|
8362
|
+
provider = new CesiumTerrainProvider({
|
|
8363
|
+
url: params.data.SourceUrl,
|
|
8364
|
+
requestWaterMask: params.data.RequestWaterMask,
|
|
8365
|
+
requestVertexNormals: true
|
|
8366
|
+
});
|
|
8367
|
+
}
|
|
8368
|
+
_b.label = 3;
|
|
8369
|
+
case 3:
|
|
8370
|
+
if (provider) {
|
|
8371
|
+
provider._bId = bId;
|
|
8372
|
+
provider._bName = (_a = params.data) === null || _a === void 0 ? void 0 : _a.Name;
|
|
8373
|
+
params.viewer.terrainProvider = provider;
|
|
8374
|
+
}
|
|
8375
|
+
return [2 /*return*/];
|
|
8376
|
+
}
|
|
8157
8377
|
});
|
|
8158
|
-
}
|
|
8159
|
-
if (provider) {
|
|
8160
|
-
provider._bId = bId;
|
|
8161
|
-
provider._bName = (_a = params.data) === null || _a === void 0 ? void 0 : _a.Name;
|
|
8162
|
-
params.viewer.terrainProvider = provider;
|
|
8163
|
-
}
|
|
8378
|
+
});
|
|
8164
8379
|
}
|
|
8165
8380
|
LegacyNavigator.Render = Render;
|
|
8166
8381
|
function RenderView(params) {
|
|
@@ -8213,13 +8428,15 @@ var TileRenderEngine;
|
|
|
8213
8428
|
break;
|
|
8214
8429
|
}
|
|
8215
8430
|
}
|
|
8216
|
-
if (terrainTile)
|
|
8217
|
-
|
|
8431
|
+
if (!terrainTile) return [3 /*break*/, 6];
|
|
8432
|
+
return [4 /*yield*/, Render({
|
|
8218
8433
|
data: terrainTile,
|
|
8219
8434
|
viewer: params.viewer,
|
|
8220
|
-
});
|
|
8221
|
-
|
|
8222
|
-
|
|
8435
|
+
})];
|
|
8436
|
+
case 5:
|
|
8437
|
+
_c.sent();
|
|
8438
|
+
_c.label = 6;
|
|
8439
|
+
case 6: return [2 /*return*/];
|
|
8223
8440
|
}
|
|
8224
8441
|
});
|
|
8225
8442
|
});
|
|
@@ -8231,27 +8448,50 @@ var TileRenderEngine;
|
|
|
8231
8448
|
function Render(params) {
|
|
8232
8449
|
var _a;
|
|
8233
8450
|
return __awaiter(this, void 0, void 0, function () {
|
|
8234
|
-
var enabledMeta, defaultTerr, provider, api, tileset, url, vertexes, settings;
|
|
8451
|
+
var enabledMeta, provider_1, leave, defaultTerr, provider, api, tileset, url, vertexes, settings;
|
|
8235
8452
|
return __generator(this, function (_b) {
|
|
8236
8453
|
switch (_b.label) {
|
|
8237
8454
|
case 0:
|
|
8455
|
+
params.tile = {
|
|
8456
|
+
tilesetId: ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain,
|
|
8457
|
+
accountId: null
|
|
8458
|
+
};
|
|
8238
8459
|
enabledMeta = (_a = params.viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a._bMeta;
|
|
8239
8460
|
if ((enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.tilesetId) === params.tile.tilesetId &&
|
|
8240
8461
|
(enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.accountId) === params.tile.accountId) {
|
|
8241
8462
|
return [2 /*return*/];
|
|
8242
8463
|
}
|
|
8464
|
+
// Known default that may have been enabled prior to utility doing it.
|
|
8465
|
+
if (!enabledMeta) {
|
|
8466
|
+
provider_1 = params.viewer.terrainProvider;
|
|
8467
|
+
leave = false;
|
|
8468
|
+
if (params.tile.tilesetId == ProjectViewTile.EDefaultTerrain.FlatTerrain &&
|
|
8469
|
+
provider_1 instanceof EllipsoidTerrainProvider) {
|
|
8470
|
+
leave = true;
|
|
8471
|
+
}
|
|
8472
|
+
// TODO: Check for cesium world terrain if we can easily determine that it's enabled.
|
|
8473
|
+
if (leave) {
|
|
8474
|
+
provider_1._bMeta = {
|
|
8475
|
+
tilesetId: params.tile.tilesetId,
|
|
8476
|
+
accountId: params.tile.accountId
|
|
8477
|
+
};
|
|
8478
|
+
return [2 /*return*/];
|
|
8479
|
+
}
|
|
8480
|
+
}
|
|
8243
8481
|
defaultTerr = params.tile.accountId ? null : ProjectViewTile.DefaultTerrains.find(function (x) { return x.id === params.tile.tilesetId; });
|
|
8244
8482
|
provider = null;
|
|
8245
|
-
if (!defaultTerr) return [3 /*break*/,
|
|
8246
|
-
|
|
8247
|
-
return [3 /*break*/, 3];
|
|
8483
|
+
if (!defaultTerr) return [3 /*break*/, 2];
|
|
8484
|
+
return [4 /*yield*/, renderDefaultTerrTile(defaultTerr.id)];
|
|
8248
8485
|
case 1:
|
|
8486
|
+
provider = (_b.sent());
|
|
8487
|
+
return [3 /*break*/, 4];
|
|
8488
|
+
case 2:
|
|
8249
8489
|
api = params.apiGetter.getApi(params.tile.accountId);
|
|
8250
8490
|
return [4 /*yield*/, Tileset.Get({
|
|
8251
8491
|
api: api,
|
|
8252
8492
|
tilesetId: params.tile.tilesetId
|
|
8253
8493
|
})];
|
|
8254
|
-
case
|
|
8494
|
+
case 3:
|
|
8255
8495
|
tileset = (_b.sent()).tileset;
|
|
8256
8496
|
url = void 0;
|
|
8257
8497
|
vertexes = true;
|
|
@@ -8276,8 +8516,8 @@ var TileRenderEngine;
|
|
|
8276
8516
|
requestVertexNormals: vertexes
|
|
8277
8517
|
});
|
|
8278
8518
|
}
|
|
8279
|
-
_b.label =
|
|
8280
|
-
case
|
|
8519
|
+
_b.label = 4;
|
|
8520
|
+
case 4:
|
|
8281
8521
|
if (provider) {
|
|
8282
8522
|
provider._bMeta = {
|
|
8283
8523
|
accountId: params.tile.accountId,
|
|
@@ -8456,7 +8696,7 @@ function renderLegacyNavigator(params, bookmark, view) {
|
|
|
8456
8696
|
function renderNavigator(params, bookmark, view) {
|
|
8457
8697
|
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, _2;
|
|
8458
8698
|
return __awaiter(this, void 0, void 0, function () {
|
|
8459
|
-
var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, gOcclusion, hillShades, baseColor, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock,
|
|
8699
|
+
var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, terrain, gOcclusion, hillShades, baseColor, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock, selectedIds, hiddenIds, isolatedIds, entityOpacityMap, entityId, opacity, imagery, renderedRelationEntityIds, curEnabled, newItemIds, _i, curEnabled_1, id, menuItem;
|
|
8460
8700
|
return __generator(this, function (_3) {
|
|
8461
8701
|
switch (_3.label) {
|
|
8462
8702
|
case 0:
|
|
@@ -8512,18 +8752,29 @@ function renderNavigator(params, bookmark, view) {
|
|
|
8512
8752
|
});
|
|
8513
8753
|
}
|
|
8514
8754
|
}
|
|
8755
|
+
terrain = (bSettings === null || bSettings === void 0 ? void 0 : bSettings.terrain) != null ? bSettings === null || bSettings === void 0 ? void 0 : bSettings.terrain : (_m = defaults.settings) === null || _m === void 0 ? void 0 : _m.terrain;
|
|
8756
|
+
if (!terrain) return [3 /*break*/, 2];
|
|
8757
|
+
return [4 /*yield*/, TileRenderEngine.Terrain.Navigator.Render({
|
|
8758
|
+
apiGetter: params.apiGetter,
|
|
8759
|
+
tile: terrain,
|
|
8760
|
+
viewer: params.manager.Viewer,
|
|
8761
|
+
})];
|
|
8762
|
+
case 1:
|
|
8763
|
+
_3.sent();
|
|
8764
|
+
_3.label = 2;
|
|
8765
|
+
case 2:
|
|
8515
8766
|
gOcclusion = bSettings === null || bSettings === void 0 ? void 0 : bSettings.groundOcclusion;
|
|
8516
8767
|
if (gOcclusion == null) {
|
|
8517
|
-
gOcclusion = (
|
|
8768
|
+
gOcclusion = (_o = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _o === void 0 ? void 0 : _o.groundOcclusion;
|
|
8518
8769
|
}
|
|
8519
8770
|
if (gOcclusion == null) {
|
|
8520
8771
|
// TODO: Need global default.
|
|
8521
8772
|
gOcclusion = true;
|
|
8522
8773
|
}
|
|
8523
8774
|
scene.globe.depthTestAgainstTerrain = Boolean(gOcclusion);
|
|
8524
|
-
hillShades = (
|
|
8775
|
+
hillShades = (_p = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _p === void 0 ? void 0 : _p.hillShades;
|
|
8525
8776
|
if (hillShades == null) {
|
|
8526
|
-
hillShades = (
|
|
8777
|
+
hillShades = (_q = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _q === void 0 ? void 0 : _q.hillShades;
|
|
8527
8778
|
}
|
|
8528
8779
|
if (hillShades == null) {
|
|
8529
8780
|
hillShades = true;
|
|
@@ -8531,7 +8782,7 @@ function renderNavigator(params, bookmark, view) {
|
|
|
8531
8782
|
scene.globe.enableLighting = Boolean(hillShades);
|
|
8532
8783
|
baseColor = bSettings === null || bSettings === void 0 ? void 0 : bSettings.globeColor;
|
|
8533
8784
|
if (baseColor == null) {
|
|
8534
|
-
baseColor = (
|
|
8785
|
+
baseColor = (_r = defaults.settings) === null || _r === void 0 ? void 0 : _r.globeColor;
|
|
8535
8786
|
}
|
|
8536
8787
|
if (baseColor == null) {
|
|
8537
8788
|
// TODO: Need global default.
|
|
@@ -8540,7 +8791,7 @@ function renderNavigator(params, bookmark, view) {
|
|
|
8540
8791
|
scene.globe.baseColor = Color.fromCssColorString(baseColor);
|
|
8541
8792
|
shadows = bSettings === null || bSettings === void 0 ? void 0 : bSettings.shadows;
|
|
8542
8793
|
if (shadows == null) {
|
|
8543
|
-
shadows = (
|
|
8794
|
+
shadows = (_s = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _s === void 0 ? void 0 : _s.shadows;
|
|
8544
8795
|
}
|
|
8545
8796
|
if (shadows == null) {
|
|
8546
8797
|
shadows = {
|
|
@@ -8567,7 +8818,7 @@ function renderNavigator(params, bookmark, view) {
|
|
|
8567
8818
|
}
|
|
8568
8819
|
ambientOcclusion = bSettings === null || bSettings === void 0 ? void 0 : bSettings.ambientOcclusion;
|
|
8569
8820
|
if (ambientOcclusion == null) {
|
|
8570
|
-
ambientOcclusion = (
|
|
8821
|
+
ambientOcclusion = (_t = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _t === void 0 ? void 0 : _t.ambientOcclusion;
|
|
8571
8822
|
}
|
|
8572
8823
|
if (ambientOcclusion == null) {
|
|
8573
8824
|
ambientOcclusion = {
|
|
@@ -8590,7 +8841,7 @@ function renderNavigator(params, bookmark, view) {
|
|
|
8590
8841
|
}
|
|
8591
8842
|
lighting = bSettings === null || bSettings === void 0 ? void 0 : bSettings.lighting;
|
|
8592
8843
|
if (lighting == null) {
|
|
8593
|
-
lighting = (
|
|
8844
|
+
lighting = (_u = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _u === void 0 ? void 0 : _u.lighting;
|
|
8594
8845
|
}
|
|
8595
8846
|
if (lighting == null) {
|
|
8596
8847
|
lighting = {
|
|
@@ -8605,7 +8856,7 @@ function renderNavigator(params, bookmark, view) {
|
|
|
8605
8856
|
}
|
|
8606
8857
|
quality = bSettings === null || bSettings === void 0 ? void 0 : bSettings.quality;
|
|
8607
8858
|
if (quality == null) {
|
|
8608
|
-
quality = (
|
|
8859
|
+
quality = (_v = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _v === void 0 ? void 0 : _v.quality;
|
|
8609
8860
|
}
|
|
8610
8861
|
if (quality == null) {
|
|
8611
8862
|
quality = {
|
|
@@ -8616,23 +8867,12 @@ function renderNavigator(params, bookmark, view) {
|
|
|
8616
8867
|
fxaa.enabled = Boolean(quality.fxaa);
|
|
8617
8868
|
dateTime = bSettings === null || bSettings === void 0 ? void 0 : bSettings.dateTime;
|
|
8618
8869
|
if (dateTime == null) {
|
|
8619
|
-
dateTime = (
|
|
8870
|
+
dateTime = (_w = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _w === void 0 ? void 0 : _w.dateTime;
|
|
8620
8871
|
}
|
|
8621
8872
|
if (dateTime != null) {
|
|
8622
8873
|
clock = viewer.clock;
|
|
8623
8874
|
clock.currentTime = JulianDate.fromIso8601(dateTime);
|
|
8624
8875
|
}
|
|
8625
|
-
terrain = (bSettings === null || bSettings === void 0 ? void 0 : bSettings.terrain) != null ? bSettings === null || bSettings === void 0 ? void 0 : bSettings.terrain : (_w = defaults.settings) === null || _w === void 0 ? void 0 : _w.terrain;
|
|
8626
|
-
if (!terrain) return [3 /*break*/, 2];
|
|
8627
|
-
return [4 /*yield*/, TileRenderEngine.Terrain.Navigator.Render({
|
|
8628
|
-
apiGetter: params.apiGetter,
|
|
8629
|
-
tile: terrain,
|
|
8630
|
-
viewer: params.manager.Viewer,
|
|
8631
|
-
})];
|
|
8632
|
-
case 1:
|
|
8633
|
-
_3.sent();
|
|
8634
|
-
_3.label = 2;
|
|
8635
|
-
case 2:
|
|
8636
8876
|
selectedIds = bSettings === null || bSettings === void 0 ? void 0 : bSettings.selectedEntityIds;
|
|
8637
8877
|
if (selectedIds == null) {
|
|
8638
8878
|
selectedIds = (_x = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _x === void 0 ? void 0 : _x.selectedEntityIds;
|