bruce-cesium 0.3.5 → 0.3.7

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.
Files changed (44) hide show
  1. package/dist/bruce-cesium.es5.js +1060 -579
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +1057 -576
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +30 -30
  6. package/dist/lib/rendering/entity-render-engine.js +848 -848
  7. package/dist/lib/rendering/entity-render-engine.js.map +1 -1
  8. package/dist/lib/rendering/menu-item-manager.js +252 -252
  9. package/dist/lib/rendering/render-addons/measure-addon.js +186 -186
  10. package/dist/lib/rendering/render-addons/render-addon.js +2 -2
  11. package/dist/lib/rendering/render-helper.js +296 -279
  12. package/dist/lib/rendering/render-helper.js.map +1 -1
  13. package/dist/lib/rendering/render-managers/common/shared-getters.js +31 -31
  14. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js +146 -146
  15. package/dist/lib/rendering/render-managers/entities/entities-ids-render-manager.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/entities/entities-loaded-render-manager.js +143 -143
  17. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +234 -234
  18. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  19. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js +139 -139
  20. package/dist/lib/rendering/render-managers/entities/entity-render-manager.js.map +1 -1
  21. package/dist/lib/rendering/render-managers/render-manager.js +50 -50
  22. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +236 -230
  23. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  24. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js +320 -320
  25. package/dist/lib/rendering/render-managers/tilesets/tileset-osm-render-manager.js.map +1 -1
  26. package/dist/lib/rendering/tile-render-engine.js +822 -542
  27. package/dist/lib/rendering/tile-render-engine.js.map +1 -1
  28. package/dist/lib/rendering/tileset-render-engine.js +499 -472
  29. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  30. package/dist/lib/rendering/view-render-engine.js +300 -138
  31. package/dist/lib/rendering/view-render-engine.js.map +1 -1
  32. package/dist/lib/rendering/visuals-register.js +394 -394
  33. package/dist/lib/utils/drawing-utils.js +42 -42
  34. package/dist/lib/utils/entity-utils.js +99 -99
  35. package/dist/lib/utils/measure-utils.js +34 -34
  36. package/dist/lib/utils/view-utils.js +34 -34
  37. package/dist/lib/utils/view-utils.js.map +1 -1
  38. package/dist/lib/viewer/cesium-view-monitor.js +231 -231
  39. package/dist/lib/viewer/viewer-utils.js +85 -85
  40. package/dist/types/rendering/render-helper.d.ts +1 -1
  41. package/dist/types/rendering/tile-render-engine.d.ts +60 -44
  42. package/dist/types/rendering/tileset-render-engine.d.ts +3 -1
  43. package/dist/types/utils/view-utils.d.ts +1 -1
  44. package/package.json +76 -73
@@ -1,5 +1,5 @@
1
- import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTileSource, Camera, MathUtils } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Entity, Primitive, Cesium3DTileFeature, Color, HeightReference, Cartesian3, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, OrthographicFrustum, HeadingPitchRange, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, createWorldTerrain, CesiumTerrainProvider, EllipsoidTerrainProvider, createOsmBuildings, Cesium3DTileStyle, Rectangle, EllipsoidGeodesic, Matrix4, Cesium3DTileset } from 'cesium';
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, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Entity, Primitive, Cesium3DTileFeature, Color, Cartesian3, HeightReference, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, HeadingPitchRange, OrthographicFrustum, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, createOsmBuildings, Cesium3DTileStyle, Rectangle, EllipsoidGeodesic, Matrix4, Cesium3DTileset } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -923,7 +923,7 @@ var EntityRenderEngine;
923
923
  return __generator(this, function (_c) {
924
924
  switch (_c.label) {
925
925
  case 0:
926
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
926
+ api = params.apiGetter.getApi();
927
927
  cEntities = {};
928
928
  i = 0;
929
929
  _c.label = 1;
@@ -1034,7 +1034,7 @@ var EntityRenderEngine;
1034
1034
  return __generator(this, function (_c) {
1035
1035
  switch (_c.label) {
1036
1036
  case 0:
1037
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
1037
+ api = params.apiGetter.getApi();
1038
1038
  cEntities = {};
1039
1039
  i = 0;
1040
1040
  _c.label = 1;
@@ -1153,7 +1153,7 @@ var EntityRenderEngine;
1153
1153
  return __generator(this, function (_c) {
1154
1154
  switch (_c.label) {
1155
1155
  case 0:
1156
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
1156
+ api = params.apiGetter.getApi();
1157
1157
  cEntities = {};
1158
1158
  i = 0;
1159
1159
  _c.label = 1;
@@ -1266,7 +1266,7 @@ var EntityRenderEngine;
1266
1266
  return __generator(this, function (_e) {
1267
1267
  switch (_e.label) {
1268
1268
  case 0:
1269
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
1269
+ api = params.apiGetter.getApi();
1270
1270
  cEntities = {};
1271
1271
  reqBody = {
1272
1272
  "strict": false,
@@ -1413,7 +1413,7 @@ var EntitiesRenderManager;
1413
1413
  if (this.disposed) {
1414
1414
  throw (new Error("This item is disposed."));
1415
1415
  }
1416
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
1416
+ api = this.apiGetter.getApi();
1417
1417
  this.getter = this.sharedGetters.GetOrCreateFilterGetter({
1418
1418
  api: api,
1419
1419
  attrFilter: (_a = this.item.BruceEntity.Filter) !== null && _a !== void 0 ? _a : {},
@@ -1463,7 +1463,7 @@ var EntitiesRenderManager;
1463
1463
  return [2 /*return*/];
1464
1464
  }
1465
1465
  this.isRunningCheck = true;
1466
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
1466
+ api = this.apiGetter.getApi();
1467
1467
  _a.label = 1;
1468
1468
  case 1:
1469
1469
  _a.trys.push([1, 5, , 6]);
@@ -2115,7 +2115,7 @@ var EntitiesIdsRenderManager;
2115
2115
  if (this.disposed) {
2116
2116
  return [2 /*return*/];
2117
2117
  }
2118
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
2118
+ api = this.apiGetter.getApi();
2119
2119
  return [4 /*yield*/, Entity$1.GetListByIds(api, entityIds)];
2120
2120
  case 1:
2121
2121
  entities = _b.sent();
@@ -2219,7 +2219,7 @@ var EntityRenderManager;
2219
2219
  if (this.disposed) {
2220
2220
  return [2 /*return*/];
2221
2221
  }
2222
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
2222
+ api = this.apiGetter.getApi();
2223
2223
  return [4 /*yield*/, Entity$1.Get(api, id)];
2224
2224
  case 1:
2225
2225
  entity = _b.sent();
@@ -2264,31 +2264,46 @@ function colorToCColor$1(color) {
2264
2264
  }
2265
2265
  var TilesetRenderEngine;
2266
2266
  (function (TilesetRenderEngine) {
2267
- function ApplySettings(cTileset, tileset) {
2267
+ function ApplyPosition(cTileset, tileset, coords) {
2268
2268
  if (tileset.type == Tileset.EType.Cad) {
2269
2269
  var settings = tileset.settings;
2270
- var root = cTileset.root;
2271
- var transform = settings.transform;
2272
- if (!transform) {
2273
- transform = {
2274
- heading: 0,
2275
- pitch: 0,
2276
- roll: 0,
2277
- scale: 1
2278
- };
2279
- }
2280
- var point = settings.location;
2281
- var pos = Cartesian3.fromDegrees(point.longitude, point.latitude, point.altitude);
2270
+ var location_1;
2271
+ var transform = void 0;
2272
+ // Position using root entity + ucs.
2273
+ if (coords === null || coords === void 0 ? void 0 : coords.ucs) {
2274
+ location_1 = coords.ucs.location;
2275
+ transform = coords.transform;
2276
+ }
2277
+ // Position using tileset.
2278
+ else {
2279
+ transform = settings.transform;
2280
+ location_1 = settings.location;
2281
+ }
2282
+ if (!(location_1 === null || location_1 === void 0 ? void 0 : location_1.latitude)) {
2283
+ return;
2284
+ }
2285
+ transform = __assign({ heading: 0, pitch: 0, roll: 0, scale: 1, x: 0, y: 0, z: 0 }, transform);
2286
+ if (transform.scale <= 0) {
2287
+ transform.scale = 0.000001;
2288
+ }
2289
+ var pos = Cartesian3.fromDegrees(location_1.longitude, location_1.latitude, location_1.altitude);
2282
2290
  var hpr = HeadingPitchRoll.fromDegrees(transform.heading, transform.pitch, transform.roll, new HeadingPitchRoll());
2291
+ var root = cTileset.root;
2283
2292
  root.transform = Transforms.headingPitchRollToFixedFrame(pos, hpr);
2284
- var scale = +(transform === null || transform === void 0 ? void 0 : transform.scale);
2285
- if (!scale || scale <= 0) {
2286
- scale = 0.000001;
2287
- }
2288
- var scaleMatrix = Matrix4.fromScale(new Cartesian3(scale, scale, scale), new Matrix4());
2293
+ var scaleMatrix = Matrix4.fromScale(new Cartesian3(transform.scale, transform.scale, transform.scale), new Matrix4());
2289
2294
  root.transform = Matrix4.multiply(root.transform, scaleMatrix, root.transform);
2295
+ root.transform = Matrix4.multiplyByTranslation(root.transform, new Cartesian3(transform.x, transform.y, transform.z), root.transform);
2290
2296
  // Force matrix to update
2291
2297
  root.updateTransform();
2298
+ }
2299
+ else {
2300
+ throw ("Not implemented.");
2301
+ }
2302
+ }
2303
+ TilesetRenderEngine.ApplyPosition = ApplyPosition;
2304
+ function ApplySettings(cTileset, tileset) {
2305
+ if (tileset.type == Tileset.EType.Cad) {
2306
+ var settings = tileset.settings;
2292
2307
  var maxScreenSpaceError = settings.maximumScreenSpaceError;
2293
2308
  if (maxScreenSpaceError || maxScreenSpaceError == 0) {
2294
2309
  cTileset.maximumScreenSpaceError = maxScreenSpaceError;
@@ -2300,7 +2315,7 @@ var TilesetRenderEngine;
2300
2315
  }
2301
2316
  TilesetRenderEngine.ApplySettings = ApplySettings;
2302
2317
  function Render(params) {
2303
- var api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
2318
+ var api = params.apiGetter.getApi(params.apiGetter.accountId);
2304
2319
  if (params.tileset.type == Tileset.EType.Cad) {
2305
2320
  var cTileset_1 = new Cesium3DTileset({
2306
2321
  url: Tileset.GetPublicFileUrl(api, params.tileset.id, "tileset.json") + "?generation=" + params.tileset.generateVersion
@@ -2308,6 +2323,7 @@ var TilesetRenderEngine;
2308
2323
  params.viewer.scene.primitives.add(cTileset_1);
2309
2324
  cTileset_1.readyPromise.then(function () {
2310
2325
  ApplySettings(cTileset_1, params.tileset);
2326
+ ApplyPosition(cTileset_1, params.tileset, params.coords);
2311
2327
  });
2312
2328
  return cTileset_1;
2313
2329
  }
@@ -2717,7 +2733,7 @@ var TilesetCadRenderManager;
2717
2733
  Manager.prototype.Init = function () {
2718
2734
  var _a;
2719
2735
  return __awaiter(this, void 0, void 0, function () {
2720
- var tilesetId, api, tileset, cTileset;
2736
+ var tilesetId, api, tileset, settings, rootId, coords, cTileset;
2721
2737
  var _this = this;
2722
2738
  return __generator(this, function (_b) {
2723
2739
  switch (_b.label) {
@@ -2726,17 +2742,23 @@ var TilesetCadRenderManager;
2726
2742
  if (!tilesetId) {
2727
2743
  return [2 /*return*/];
2728
2744
  }
2729
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
2745
+ api = this.apiGetter.getApi();
2730
2746
  return [4 /*yield*/, Tileset.Get(api, tilesetId)];
2731
2747
  case 1:
2732
2748
  tileset = _b.sent();
2733
2749
  if (!tileset) {
2734
2750
  return [2 /*return*/];
2735
2751
  }
2752
+ settings = tileset.settings;
2753
+ rootId = settings.rootEntityId;
2754
+ return [4 /*yield*/, EntityCoords.GetEntityCoords(api, rootId)];
2755
+ case 2:
2756
+ coords = _b.sent();
2736
2757
  cTileset = this.cTileset = TilesetRenderEngine.Render({
2737
2758
  apiGetter: this.apiGetter,
2738
2759
  tileset: tileset,
2739
- viewer: this.viewer
2760
+ viewer: this.viewer,
2761
+ coords: coords
2740
2762
  });
2741
2763
  cTileset.readyPromise.then(function () {
2742
2764
  _this.onCTilesetLoad();
@@ -3132,7 +3154,7 @@ var TilesetOsmRenderManager;
3132
3154
  for (i = 0; i < features.length; i++) {
3133
3155
  _loop_1(i);
3134
3156
  }
3135
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
3157
+ api = this.apiGetter.getApi();
3136
3158
  return [4 /*yield*/, EntitySource.GetEntityIdsBySourceKeys(api, this.sourceId, featureIds)];
3137
3159
  case 1:
3138
3160
  bIds = _a.sent();
@@ -3490,73 +3512,6 @@ var RenderHelper;
3490
3512
  });
3491
3513
  }
3492
3514
  RenderHelper.RenderEntityFilter = RenderEntityFilter;
3493
- function RenderBookmarkItems(params, viewId, bookmarkId) {
3494
- var _a, _b, _c, _d;
3495
- return __awaiter(this, void 0, void 0, function () {
3496
- function traverseItems(item) {
3497
- return __awaiter(this, void 0, void 0, function () {
3498
- var itemId, i;
3499
- return __generator(this, function (_a) {
3500
- switch (_a.label) {
3501
- case 0:
3502
- if (!enabledItemIds.includes(item.id)) return [3 /*break*/, 2];
3503
- return [4 /*yield*/, params.manager.RenderItem({
3504
- item: item,
3505
- apiGetter: params.apiGetter
3506
- })];
3507
- case 1:
3508
- itemId = _a.sent();
3509
- renderedItemIds.push(itemId);
3510
- _a.label = 2;
3511
- case 2:
3512
- if (!item.Children) return [3 /*break*/, 6];
3513
- i = 0;
3514
- _a.label = 3;
3515
- case 3:
3516
- if (!(i < item.Children.length)) return [3 /*break*/, 6];
3517
- return [4 /*yield*/, traverseItems(item.Children[i])];
3518
- case 4:
3519
- _a.sent();
3520
- _a.label = 5;
3521
- case 5:
3522
- i++;
3523
- return [3 /*break*/, 3];
3524
- case 6: return [2 /*return*/];
3525
- }
3526
- });
3527
- });
3528
- }
3529
- var api, view, bookmark, items, enabledItemIds, renderedItemIds, i;
3530
- return __generator(this, function (_e) {
3531
- switch (_e.label) {
3532
- case 0:
3533
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
3534
- return [4 /*yield*/, ProjectView.Get(api, viewId)];
3535
- case 1:
3536
- view = _e.sent();
3537
- return [4 /*yield*/, ProjectViewBookmark.Get(api, viewId, bookmarkId)];
3538
- case 2:
3539
- bookmark = _e.sent();
3540
- items = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.LayersMenu) !== null && _b !== void 0 ? _b : [];
3541
- enabledItemIds = (_d = (_c = bookmark.Settings) === null || _c === void 0 ? void 0 : _c.selectedItemIds) !== null && _d !== void 0 ? _d : [];
3542
- renderedItemIds = [];
3543
- i = 0;
3544
- _e.label = 3;
3545
- case 3:
3546
- if (!(i < items.length)) return [3 /*break*/, 6];
3547
- return [4 /*yield*/, traverseItems(items[i])];
3548
- case 4:
3549
- _e.sent();
3550
- _e.label = 5;
3551
- case 5:
3552
- i++;
3553
- return [3 /*break*/, 3];
3554
- case 6: return [2 /*return*/, renderedItemIds];
3555
- }
3556
- });
3557
- });
3558
- }
3559
- RenderHelper.RenderBookmarkItems = RenderBookmarkItems;
3560
3515
  function RenderMenuItems(params, menuItems) {
3561
3516
  return __awaiter(this, void 0, void 0, function () {
3562
3517
  var renderedItemIds, i, menuItem, itemId;
@@ -3592,7 +3547,7 @@ var RenderHelper;
3592
3547
  return __generator(this, function (_a) {
3593
3548
  switch (_a.label) {
3594
3549
  case 0:
3595
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
3550
+ api = params.apiGetter.getApi();
3596
3551
  return [4 /*yield*/, Tileset.Get(api, tilesetId)];
3597
3552
  case 1:
3598
3553
  tileset = _a.sent();
@@ -3619,9 +3574,101 @@ var RenderHelper;
3619
3574
  });
3620
3575
  }
3621
3576
  RenderHelper.RenderTileset = RenderTileset;
3577
+ function RenderBookmarkItems(params, viewId, bookmarkId) {
3578
+ return __awaiter(this, void 0, void 0, function () {
3579
+ var api, view, bookmark, enabledIds, menuItems, version, vSettings, bSettings, vSettings, bSettings, renderedItemIds, traverseItems_1, i;
3580
+ var _this = this;
3581
+ return __generator(this, function (_a) {
3582
+ switch (_a.label) {
3583
+ case 0:
3584
+ api = params.apiGetter.getApi();
3585
+ return [4 /*yield*/, ProjectView.Get(api, viewId)];
3586
+ case 1:
3587
+ view = _a.sent();
3588
+ return [4 /*yield*/, ProjectViewBookmark.Get(api, viewId, bookmarkId)];
3589
+ case 2:
3590
+ bookmark = _a.sent();
3591
+ if (view.DataVersion != bookmark.DataVersion) {
3592
+ throw new Error("View and bookmark settings version mismatch.");
3593
+ }
3594
+ enabledIds = [];
3595
+ menuItems = [];
3596
+ version = view.DataVersion;
3597
+ if (view.Settings && bookmark.Settings) {
3598
+ if (version === 2) {
3599
+ vSettings = view.Settings;
3600
+ bSettings = bookmark.Settings;
3601
+ menuItems = vSettings.menuItems;
3602
+ enabledIds = bSettings.menuItemIds;
3603
+ }
3604
+ else {
3605
+ vSettings = view.Settings;
3606
+ bSettings = bookmark.Settings;
3607
+ menuItems = vSettings.LayersMenu;
3608
+ enabledIds = bSettings.selectedItemIds;
3609
+ }
3610
+ }
3611
+ renderedItemIds = [];
3612
+ if (!((menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) && (enabledIds === null || enabledIds === void 0 ? void 0 : enabledIds.length))) return [3 /*break*/, 6];
3613
+ traverseItems_1 = function (item) { return __awaiter(_this, void 0, void 0, function () {
3614
+ var itemId, i;
3615
+ return __generator(this, function (_a) {
3616
+ switch (_a.label) {
3617
+ case 0:
3618
+ if (!enabledIds.includes(item.id)) return [3 /*break*/, 2];
3619
+ return [4 /*yield*/, params.manager.RenderItem({
3620
+ item: item,
3621
+ apiGetter: params.apiGetter
3622
+ })];
3623
+ case 1:
3624
+ itemId = _a.sent();
3625
+ renderedItemIds.push(itemId);
3626
+ _a.label = 2;
3627
+ case 2:
3628
+ if (!item.Children) return [3 /*break*/, 6];
3629
+ i = 0;
3630
+ _a.label = 3;
3631
+ case 3:
3632
+ if (!(i < item.Children.length)) return [3 /*break*/, 6];
3633
+ return [4 /*yield*/, traverseItems_1(item.Children[i])];
3634
+ case 4:
3635
+ _a.sent();
3636
+ _a.label = 5;
3637
+ case 5:
3638
+ i++;
3639
+ return [3 /*break*/, 3];
3640
+ case 6: return [2 /*return*/];
3641
+ }
3642
+ });
3643
+ }); };
3644
+ i = 0;
3645
+ _a.label = 3;
3646
+ case 3:
3647
+ if (!(i < menuItems.length)) return [3 /*break*/, 6];
3648
+ return [4 /*yield*/, traverseItems_1(menuItems[i])];
3649
+ case 4:
3650
+ _a.sent();
3651
+ _a.label = 5;
3652
+ case 5:
3653
+ i++;
3654
+ return [3 /*break*/, 3];
3655
+ case 6: return [2 /*return*/, renderedItemIds];
3656
+ }
3657
+ });
3658
+ });
3659
+ }
3660
+ RenderHelper.RenderBookmarkItems = RenderBookmarkItems;
3622
3661
  })(RenderHelper || (RenderHelper = {}));
3623
3662
 
3663
+ var DEFAULT_BING_KEY = "AqL0uYT5T84jiJeX55_b9zJeeP3MX2p1WLOHH4ljIEPZ7ZL2M81bYLzyYeSwuzzl";
3664
+ var DEFAULT_MAPBOX_KEY = "pk.eyJ1IjoiYWxleHRodW5kZXIiLCJhIjoiY2psbHJxbnN5MTBvbzNxczZwMHNpeTI0MCJ9.fdoj2QW_7n8RV4e0NCFgZA";
3624
3665
  var re = /[\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u037F-\u0383\u038B\u038D\u03A2\u0528-\u0530\u0557\u0558\u0560\u0588\u058B-\u058E\u0590\u05C8-\u05CF\u05EB-\u05EF\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB-\u07FF\u082E\u082F\u083F\u085C\u085D\u085F-\u089F\u08A1\u08AD-\u08E3\u08FF\u0978\u0980\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FC-\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64\u0C65\u0C70-\u0C77\u0C80\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D3B\u0D3C\u0D45\u0D49\u0D4F-\u0D56\u0D58-\u0D5F\u0D64\u0D65\u0D76-\u0D78\u0D80\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E86\u0E89\u0E8B\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8\u0EA9\u0EAC\u0EBA\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F5-\u13FF\u169D-\u169F\u16F1-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C80-\u1CBF\u1CC8-\u1CCF\u1CF7-\u1CFF\u1DE7-\u1DFB\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20BB-\u20CF\u20F1-\u20FF\u218A-\u218F\u23F4-\u23FF\u2427-\u243F\u244B-\u245F\u2700\u2B4D-\u2B4F\u2B5A-\u2BFF\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E3C-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u312E-\u3130\u318F\u31BB-\u31BF\u31E4-\u31EF\u321F\u32FF\u4DB6-\u4DBF\u9FCD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA698-\uA69E\uA6F8-\uA6FF\uA78F\uA794-\uA79F\uA7AB-\uA7F7\uA82C-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C5-\uA8CD\uA8DA-\uA8DF\uA8FC-\uA8FF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9E0-\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAA7C-\uAA7F\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F-\uABBF\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE27-\uFE2F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]/g;
3666
+ /**
3667
+ * Prepares a legacy imagery name for comparison.
3668
+ * Legacy data did not have ids... we do what we can.
3669
+ * @param name
3670
+ * @returns
3671
+ */
3625
3672
  function prepLegacyName(name) {
3626
3673
  if (!name) {
3627
3674
  return "";
@@ -3634,26 +3681,68 @@ function prepLegacyName(name) {
3634
3681
  }
3635
3682
  return name;
3636
3683
  }
3637
- var EDefaultTerrain;
3638
- (function (EDefaultTerrain) {
3639
- EDefaultTerrain["CesiumWorldTerrain"] = "cesiumworldterrain";
3640
- EDefaultTerrain["Linz"] = "linz";
3641
- EDefaultTerrain["FlatTerrain"] = "flatterrain";
3642
- })(EDefaultTerrain || (EDefaultTerrain = {}));
3643
- var DEFAULT_TERRAIN_NAMES = [
3644
- EDefaultTerrain.CesiumWorldTerrain,
3645
- EDefaultTerrain.Linz,
3646
- EDefaultTerrain.FlatTerrain
3647
- ];
3648
- function isDefaultTerrain(name) {
3684
+ /**
3685
+ * Constructs an terrain provider for a default terrain type.
3686
+ * Warning: This does not add it to the viewer.
3687
+ * @param id
3688
+ * @returns
3689
+ */
3690
+ function renderDefaultTerrTile(id) {
3691
+ var provider;
3692
+ switch (id) {
3693
+ case ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain:
3694
+ provider = createWorldTerrain({
3695
+ requestVertexNormals: true,
3696
+ requestWaterMask: false
3697
+ });
3698
+ break;
3699
+ case ProjectViewTile.EDefaultTerrain.FlatTerrain:
3700
+ provider = new EllipsoidTerrainProvider();
3701
+ break;
3702
+ case ProjectViewTile.EDefaultTerrain.LINZ:
3703
+ provider = new CesiumTerrainProvider({
3704
+ url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
3705
+ requestVertexNormals: true,
3706
+ });
3707
+ break;
3708
+ }
3709
+ return provider;
3710
+ }
3711
+ /**
3712
+ * Maps a legacy terrain's name to a default terrain id.
3713
+ * @param name
3714
+ * @returns
3715
+ */
3716
+ function legacyTerrIdToDefaultId(name) {
3649
3717
  name = prepLegacyName(name);
3650
- return DEFAULT_TERRAIN_NAMES.includes(name);
3718
+ switch (name) {
3719
+ case "cesiumworldterrain":
3720
+ return ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain;
3721
+ case "linz":
3722
+ return ProjectViewTile.EDefaultTerrain.LINZ;
3723
+ case "flatterrain":
3724
+ return ProjectViewTile.EDefaultTerrain.FlatTerrain;
3725
+ }
3726
+ }
3727
+ /**
3728
+ * Returns if a given legacy terrain's name correspondings to a default source.
3729
+ * @param name
3730
+ * @returns
3731
+ */
3732
+ function isLegacyTerrainDefault(name) {
3733
+ name = legacyTerrIdToDefaultId(name);
3734
+ return ProjectViewTile.DefaultTerrains.find(function (x) { return x.id == name; }) != null;
3651
3735
  }
3652
- function createTerrainBId(source) {
3736
+ /**
3737
+ * Returns a best attempt at a unique id from a given legacy terrain source.
3738
+ * @param source
3739
+ * @returns
3740
+ */
3741
+ function createLegacyTerrId(source) {
3653
3742
  if (!source) {
3654
3743
  return "";
3655
3744
  }
3656
- if (isDefaultTerrain(source.Name)) {
3745
+ if (isLegacyTerrainDefault(source.Name)) {
3657
3746
  return source.Name;
3658
3747
  }
3659
3748
  if (source.SourceUrl) {
@@ -3661,11 +3750,16 @@ function createTerrainBId(source) {
3661
3750
  }
3662
3751
  return "";
3663
3752
  }
3664
- function createImageryBId(source) {
3753
+ /**
3754
+ * Returns a best attempt at a unique id from a given legacy imagery source.
3755
+ * @param source
3756
+ * @returns
3757
+ */
3758
+ function createLegacyImageryId(source) {
3665
3759
  if (!source) {
3666
3760
  return "";
3667
3761
  }
3668
- if (isDefaultImagery(source.Name)) {
3762
+ if (isLegacyImageryDefault(source.Name)) {
3669
3763
  return source.Name;
3670
3764
  }
3671
3765
  if (source.SourceUrl) {
@@ -3673,43 +3767,11 @@ function createImageryBId(source) {
3673
3767
  }
3674
3768
  return "";
3675
3769
  }
3676
- var EDefaultImagery;
3677
- (function (EDefaultImagery) {
3678
- EDefaultImagery["BingMapsAerial"] = "bingmapsaerial";
3679
- EDefaultImagery["BingMapsAerialWithLabels"] = "bingmapsaerialwithlabels";
3680
- EDefaultImagery["BingMapsRoads"] = "bingmapsroads";
3681
- EDefaultImagery["MapboxSatellite"] = "mapboxsatellite";
3682
- EDefaultImagery["MapBoxStreets"] = "mapboxstreets";
3683
- EDefaultImagery["MapBoxStreetsClassic"] = "mapboxstreetsclassic";
3684
- EDefaultImagery["EsriWorldImagery"] = "esriworldimagery";
3685
- EDefaultImagery["EsriWorldStreetMap"] = "esriworldstreetmap";
3686
- EDefaultImagery["EsriNationalGeographic"] = "esrinationalgeographic";
3687
- EDefaultImagery["OpenStreetMap"] = "openstreetmap";
3688
- EDefaultImagery["StamenWaterColor"] = "stamenwatercolor";
3689
- EDefaultImagery["StamenToner"] = "stamentoner";
3690
- EDefaultImagery["Grid"] = "grid";
3691
- })(EDefaultImagery || (EDefaultImagery = {}));
3692
- var DEFAULT_IMAGERY_NAMES = [
3693
- EDefaultImagery.BingMapsAerial,
3694
- EDefaultImagery.BingMapsAerialWithLabels,
3695
- EDefaultImagery.BingMapsRoads,
3696
- EDefaultImagery.MapboxSatellite,
3697
- EDefaultImagery.MapBoxStreets,
3698
- EDefaultImagery.MapBoxStreetsClassic,
3699
- EDefaultImagery.EsriWorldImagery,
3700
- EDefaultImagery.EsriWorldStreetMap,
3701
- EDefaultImagery.EsriNationalGeographic,
3702
- EDefaultImagery.OpenStreetMap,
3703
- EDefaultImagery.StamenWaterColor,
3704
- EDefaultImagery.StamenToner,
3705
- EDefaultImagery.Grid
3706
- ];
3707
- function isDefaultImagery(name) {
3708
- name = prepLegacyName(name);
3709
- return DEFAULT_IMAGERY_NAMES.includes(name);
3710
- }
3711
- var DEFAULT_BING_KEY = "AqL0uYT5T84jiJeX55_b9zJeeP3MX2p1WLOHH4ljIEPZ7ZL2M81bYLzyYeSwuzzl";
3712
- var DEFAULT_MAPBOX_KEY = "pk.eyJ1IjoiYWxleHRodW5kZXIiLCJhIjoiY2psbHJxbnN5MTBvbzNxczZwMHNpeTI0MCJ9.fdoj2QW_7n8RV4e0NCFgZA";
3770
+ /**
3771
+ * Turns Cesium collection of enabled imageries into an array.
3772
+ * @param viewer
3773
+ * @returns
3774
+ */
3713
3775
  function gatherEnabledImageries(viewer) {
3714
3776
  var collection = viewer.imageryLayers;
3715
3777
  var layers = [];
@@ -3719,6 +3781,154 @@ function gatherEnabledImageries(viewer) {
3719
3781
  }
3720
3782
  return layers;
3721
3783
  }
3784
+ /**
3785
+ * Constructs an imagery provider for a default imagery type.
3786
+ * Warning: This does not add it to the viewer.
3787
+ * @param id
3788
+ * @returns
3789
+ */
3790
+ function renderDefaultMapTile(id) {
3791
+ var provider;
3792
+ switch (id) {
3793
+ case ProjectViewTile.EDefaultImagery.BingMapsAerial:
3794
+ // TODO: Read account key if available.
3795
+ provider = new BingMapsImageryProvider({
3796
+ url: "https://dev.virtualearth.net",
3797
+ mapStyle: BingMapsStyle.AERIAL,
3798
+ key: DEFAULT_BING_KEY
3799
+ });
3800
+ break;
3801
+ case ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels:
3802
+ // TODO: Read account key if available.
3803
+ provider = new BingMapsImageryProvider({
3804
+ url: "https://dev.virtualearth.net",
3805
+ mapStyle: BingMapsStyle.AERIAL_WITH_LABELS,
3806
+ key: DEFAULT_BING_KEY
3807
+ });
3808
+ break;
3809
+ case ProjectViewTile.EDefaultImagery.BingMapsRoads:
3810
+ // TODO: Read account key if available.
3811
+ provider = new BingMapsImageryProvider({
3812
+ url: "https://dev.virtualearth.net",
3813
+ mapStyle: BingMapsStyle.ROAD_ON_DEMAND,
3814
+ key: DEFAULT_BING_KEY
3815
+ });
3816
+ break;
3817
+ case ProjectViewTile.EDefaultImagery.MapboxSatellite:
3818
+ // TODO: Read account key if available.
3819
+ provider = new MapboxImageryProvider({
3820
+ mapId: "mapbox.satellite",
3821
+ accessToken: DEFAULT_MAPBOX_KEY
3822
+ });
3823
+ break;
3824
+ case ProjectViewTile.EDefaultImagery.MapBoxStreets:
3825
+ // TODO: Read account key if available.
3826
+ provider = new MapboxImageryProvider({
3827
+ mapId: "satellite-streets-v11",
3828
+ accessToken: DEFAULT_MAPBOX_KEY
3829
+ });
3830
+ break;
3831
+ case ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic:
3832
+ // TODO: Read account key if available.
3833
+ provider = new MapboxImageryProvider({
3834
+ mapId: "streets-v11",
3835
+ accessToken: DEFAULT_MAPBOX_KEY
3836
+ });
3837
+ break;
3838
+ case ProjectViewTile.EDefaultImagery.EsriWorldImagery:
3839
+ provider = new ArcGisMapServerImageryProvider({
3840
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
3841
+ enablePickFeatures: false
3842
+ });
3843
+ break;
3844
+ case ProjectViewTile.EDefaultImagery.EsriWorldStreetMap:
3845
+ provider = new ArcGisMapServerImageryProvider({
3846
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
3847
+ enablePickFeatures: false
3848
+ });
3849
+ break;
3850
+ case ProjectViewTile.EDefaultImagery.EsriNationalGeographic:
3851
+ provider = new ArcGisMapServerImageryProvider({
3852
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
3853
+ enablePickFeatures: false
3854
+ });
3855
+ break;
3856
+ case ProjectViewTile.EDefaultImagery.OpenStreetMap:
3857
+ provider = new OpenStreetMapImageryProvider({
3858
+ url: "https://a.tile.openstreetmap.org/"
3859
+ });
3860
+ break;
3861
+ case ProjectViewTile.EDefaultImagery.StamenWaterColor:
3862
+ provider = new OpenStreetMapImageryProvider({
3863
+ url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
3864
+ });
3865
+ break;
3866
+ case ProjectViewTile.EDefaultImagery.StamenToner:
3867
+ provider = new OpenStreetMapImageryProvider({
3868
+ url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
3869
+ });
3870
+ break;
3871
+ case ProjectViewTile.EDefaultImagery.Grid:
3872
+ provider = new GridImageryProvider({
3873
+ tilingScheme: new GeographicTilingScheme(),
3874
+ cells: 0,
3875
+ color: Color.fromCssColorString("rgb(97, 151, 237)"),
3876
+ glowColor: Color.fromCssColorString("rgb(54, 54, 54)"),
3877
+ glowWidth: 4,
3878
+ backgroundColor: Color.TRANSPARENT,
3879
+ tileWidth: 256,
3880
+ tileHeight: 256,
3881
+ canvasSize: 256
3882
+ });
3883
+ break;
3884
+ }
3885
+ return provider;
3886
+ }
3887
+ /**
3888
+ * Maps a legacy imagery's name to a default imagery id.
3889
+ * @param name
3890
+ * @returns
3891
+ */
3892
+ function legacyMapIdToDefaultId(name) {
3893
+ name = prepLegacyName(name);
3894
+ switch (name) {
3895
+ case "bingmapsaerial":
3896
+ return ProjectViewTile.EDefaultImagery.BingMapsAerial;
3897
+ case "bingmapsaerialwithlabels":
3898
+ return ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels;
3899
+ case "bingmapsroads":
3900
+ return ProjectViewTile.EDefaultImagery.BingMapsRoads;
3901
+ case "mapboxsatellite":
3902
+ return ProjectViewTile.EDefaultImagery.MapboxSatellite;
3903
+ case "mapboxstreets":
3904
+ return ProjectViewTile.EDefaultImagery.MapBoxStreets;
3905
+ case "mapboxstreetsclassic":
3906
+ return ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic;
3907
+ case "esriworldimagery":
3908
+ return ProjectViewTile.EDefaultImagery.EsriWorldImagery;
3909
+ case "esriworldstreetmap":
3910
+ return ProjectViewTile.EDefaultImagery.EsriWorldStreetMap;
3911
+ case "esrinationalgeographic":
3912
+ return ProjectViewTile.EDefaultImagery.EsriNationalGeographic;
3913
+ case "openstreetmap":
3914
+ return ProjectViewTile.EDefaultImagery.OpenStreetMap;
3915
+ case "stamenwatercolor":
3916
+ return ProjectViewTile.EDefaultImagery.StamenWaterColor;
3917
+ case "stamentoner":
3918
+ return ProjectViewTile.EDefaultImagery.StamenToner;
3919
+ case "grid":
3920
+ return ProjectViewTile.EDefaultImagery.Grid;
3921
+ }
3922
+ }
3923
+ /**
3924
+ * Returns if a given legacy imagery's name correspondings to a default source.
3925
+ * @param name
3926
+ * @returns
3927
+ */
3928
+ function isLegacyImageryDefault(name) {
3929
+ name = legacyMapIdToDefaultId(name);
3930
+ return ProjectViewTile.DefaultImagery.find(function (x) { return x.id == name; }) != null;
3931
+ }
3722
3932
  var TileRenderEngine;
3723
3933
  (function (TileRenderEngine) {
3724
3934
  /**
@@ -3735,480 +3945,751 @@ var TileRenderEngine;
3735
3945
  TileRenderEngine.CompareLegacyNames = CompareLegacyNames;
3736
3946
  var Map;
3737
3947
  (function (Map) {
3738
- function Render(params) {
3739
- throw ("Not implemented");
3740
- }
3741
- Map.Render = Render;
3742
- function RenderLegacy(params) {
3743
- var enabled = gatherEnabledImageries(params.viewer);
3744
- var tile = params.data;
3745
- var bId = createImageryBId(tile);
3746
- var layer = enabled.find(function (x) { return x._bId == bId; });
3747
- if (layer) ;
3748
- else if (isDefaultImagery(tile.Name)) {
3749
- var provider = null;
3750
- // TODO: Rest of defaults.
3751
- // TODO: Should be enum.
3752
- switch (prepLegacyName(tile.Name)) {
3753
- case EDefaultImagery.BingMapsAerial:
3754
- // TODO: Read account key if available.
3755
- provider = new BingMapsImageryProvider({
3756
- url: "https://dev.virtualearth.net",
3757
- mapStyle: BingMapsStyle.AERIAL,
3758
- key: DEFAULT_BING_KEY
3759
- });
3760
- break;
3761
- case EDefaultImagery.BingMapsAerialWithLabels:
3762
- // TODO: Read account key if available.
3763
- provider = new BingMapsImageryProvider({
3764
- url: "https://dev.virtualearth.net",
3765
- mapStyle: BingMapsStyle.AERIAL_WITH_LABELS,
3766
- key: DEFAULT_BING_KEY
3767
- });
3768
- break;
3769
- case EDefaultImagery.BingMapsRoads:
3770
- // TODO: Read account key if available.
3771
- provider = new BingMapsImageryProvider({
3772
- url: "https://dev.virtualearth.net",
3773
- mapStyle: BingMapsStyle.ROAD_ON_DEMAND,
3774
- key: DEFAULT_BING_KEY
3775
- });
3776
- break;
3777
- case EDefaultImagery.MapboxSatellite:
3778
- // TODO: Read account key if available.
3779
- provider = new MapboxImageryProvider({
3780
- mapId: "mapbox.satellite",
3781
- accessToken: DEFAULT_MAPBOX_KEY
3782
- });
3783
- break;
3784
- case EDefaultImagery.MapBoxStreets:
3785
- // TODO: Read account key if available.
3786
- provider = new MapboxImageryProvider({
3787
- mapId: "satellite-streets-v11",
3788
- accessToken: DEFAULT_MAPBOX_KEY
3789
- });
3790
- break;
3791
- case EDefaultImagery.MapBoxStreetsClassic:
3792
- // TODO: Read account key if available.
3793
- provider = new MapboxImageryProvider({
3794
- mapId: "streets-v11",
3795
- accessToken: DEFAULT_MAPBOX_KEY
3796
- });
3797
- break;
3798
- case EDefaultImagery.EsriWorldImagery:
3799
- provider = new ArcGisMapServerImageryProvider({
3800
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
3801
- enablePickFeatures: false
3802
- });
3803
- break;
3804
- case EDefaultImagery.EsriWorldStreetMap:
3805
- provider = new ArcGisMapServerImageryProvider({
3806
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
3807
- enablePickFeatures: false
3808
- });
3809
- break;
3810
- case EDefaultImagery.EsriNationalGeographic:
3811
- provider = new ArcGisMapServerImageryProvider({
3812
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
3813
- enablePickFeatures: false
3814
- });
3815
- break;
3816
- case EDefaultImagery.OpenStreetMap:
3817
- provider = new OpenStreetMapImageryProvider({
3818
- url: "https://a.tile.openstreetmap.org/"
3819
- });
3820
- break;
3821
- case EDefaultImagery.StamenWaterColor:
3822
- provider = new OpenStreetMapImageryProvider({
3823
- url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
3824
- });
3825
- break;
3826
- case EDefaultImagery.StamenToner:
3827
- provider = new OpenStreetMapImageryProvider({
3828
- url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
3829
- });
3830
- break;
3831
- case EDefaultImagery.Grid:
3832
- provider = new GridImageryProvider({
3833
- tilingScheme: new GeographicTilingScheme(),
3834
- cells: 0,
3835
- color: Color.fromCssColorString("rgb(97, 151, 237)"),
3836
- glowColor: Color.fromCssColorString("rgb(54, 54, 54)"),
3837
- glowWidth: 4,
3838
- backgroundColor: Color.TRANSPARENT,
3839
- tileWidth: 256,
3840
- tileHeight: 256,
3841
- canvasSize: 256
3842
- });
3843
- break;
3844
- }
3845
- if (provider) {
3846
- layer = new ImageryLayer(provider);
3847
- }
3848
- }
3849
- else if (tile.SourceUrl) {
3850
- var provider = null;
3851
- var min = tile.Minimum;
3852
- var max = tile.Maximum;
3853
- if (min != undefined && min <= -1) {
3854
- min = undefined;
3855
- }
3856
- if (max != undefined && max <= -1) {
3857
- max = undefined;
3858
- }
3859
- switch (tile.Type) {
3860
- case "BruceImagery":
3861
- provider = new UrlTemplateImageryProvider({
3862
- url: tile.SourceUrl,
3863
- tileHeight: 256,
3864
- tileWidth: 256
3865
- });
3866
- break;
3867
- case "ArcGisImagery":
3868
- provider = new OpenStreetMapImageryProvider({
3869
- url: tile.SourceUrl,
3870
- fileExtension: tile.FileExtension,
3871
- minimumLevel: min,
3872
- maximumLevel: max
3873
- });
3874
- break;
3875
- case "TileMapImagery":
3876
- provider = new TileMapServiceImageryProvider({
3877
- url: tile.SourceUrl,
3878
- fileExtension: tile.FileExtension,
3879
- minimumLevel: min,
3880
- maximumLevel: max
3881
- });
3882
- break;
3883
- case "OpenStreetMapImagery":
3884
- provider = new OpenStreetMapImageryProvider({
3885
- url: tile.SourceUrl,
3886
- fileExtension: tile.FileExtension,
3887
- minimumLevel: min,
3888
- maximumLevel: max
3889
- });
3890
- break;
3891
- case "MapBoxImagery":
3892
- // TODO: Read default account key when missing.
3893
- provider = new UrlTemplateImageryProvider({
3894
- url: "https://api.mapbox.com/styles/v1/"
3895
- + tile.MapBoxUsername + "/" + tile.MapBoxID +
3896
- "/tiles/256/{z}/{x}/{y}?access_token="
3897
- + tile.ProgramKey
3898
- });
3899
- break;
3948
+ var V1;
3949
+ (function (V1) {
3950
+ function Render(params) {
3951
+ var enabled = gatherEnabledImageries(params.viewer);
3952
+ var tile = params.data;
3953
+ var bId = createLegacyImageryId(tile);
3954
+ var layer = enabled.find(function (x) { return x._bId == bId; });
3955
+ if (layer) ;
3956
+ else if (isLegacyImageryDefault(tile.Name)) {
3957
+ var defaultId = legacyMapIdToDefaultId(tile.Name);
3958
+ var provider = renderDefaultMapTile(defaultId);
3959
+ if (provider) {
3960
+ layer = new ImageryLayer(provider);
3961
+ }
3900
3962
  }
3901
- if (provider) {
3902
- layer = new ImageryLayer(provider);
3963
+ else if (tile.SourceUrl) {
3964
+ var provider = null;
3965
+ var min = tile.Minimum;
3966
+ var max = tile.Maximum;
3967
+ if (min != undefined && min <= -1) {
3968
+ min = undefined;
3969
+ }
3970
+ if (max != undefined && max <= -1) {
3971
+ max = undefined;
3972
+ }
3973
+ switch (tile.Type) {
3974
+ case "BruceImagery":
3975
+ provider = new UrlTemplateImageryProvider({
3976
+ url: tile.SourceUrl,
3977
+ tileHeight: 256,
3978
+ tileWidth: 256
3979
+ });
3980
+ break;
3981
+ case "ArcGisImagery":
3982
+ provider = new OpenStreetMapImageryProvider({
3983
+ url: tile.SourceUrl,
3984
+ fileExtension: tile.FileExtension,
3985
+ minimumLevel: min,
3986
+ maximumLevel: max
3987
+ });
3988
+ break;
3989
+ case "TileMapImagery":
3990
+ provider = new TileMapServiceImageryProvider({
3991
+ url: tile.SourceUrl,
3992
+ fileExtension: tile.FileExtension,
3993
+ minimumLevel: min,
3994
+ maximumLevel: max
3995
+ });
3996
+ break;
3997
+ case "OpenStreetMapImagery":
3998
+ provider = new OpenStreetMapImageryProvider({
3999
+ url: tile.SourceUrl,
4000
+ fileExtension: tile.FileExtension,
4001
+ minimumLevel: min,
4002
+ maximumLevel: max
4003
+ });
4004
+ break;
4005
+ case "MapBoxImagery":
4006
+ // TODO: Read default account key when missing.
4007
+ provider = new UrlTemplateImageryProvider({
4008
+ url: "https://api.mapbox.com/styles/v1/"
4009
+ + tile.MapBoxUsername + "/" + tile.MapBoxID +
4010
+ "/tiles/256/{z}/{x}/{y}?access_token="
4011
+ + tile.ProgramKey
4012
+ });
4013
+ break;
4014
+ }
4015
+ if (provider) {
4016
+ layer = new ImageryLayer(provider);
4017
+ }
3903
4018
  }
3904
- }
3905
- if (layer) {
3906
- layer._bId = bId;
3907
- layer._bName = tile.Name;
3908
- if (!params.viewer.imageryLayers.contains(layer)) {
3909
- params.viewer.imageryLayers.add(layer);
4019
+ if (layer) {
4020
+ layer._bId = bId;
4021
+ layer._bName = tile.Name;
4022
+ if (!params.viewer.imageryLayers.contains(layer)) {
4023
+ params.viewer.imageryLayers.add(layer);
4024
+ }
3910
4025
  }
4026
+ return layer;
3911
4027
  }
3912
- return layer;
3913
- }
3914
- Map.RenderLegacy = RenderLegacy;
3915
- function RenderLegacyView(params) {
3916
- var _a, _b, _c, _d, _e;
3917
- return __awaiter(this, void 0, void 0, function () {
3918
- var api, view, bookmark, data, dataNames, i, source, tiles, i, name_1, j, tile, enabled, layers, _loop_1, i, i, tile, layer, i, layer;
3919
- return __generator(this, function (_f) {
3920
- switch (_f.label) {
3921
- case 0:
3922
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
3923
- return [4 /*yield*/, ProjectView.Get(api, params.viewId)];
3924
- case 1:
3925
- view = _f.sent();
3926
- bookmark = null;
3927
- if (!params.bookmarkId) return [3 /*break*/, 3];
3928
- return [4 /*yield*/, ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
3929
- case 2:
3930
- bookmark = _f.sent();
3931
- _f.label = 3;
3932
- case 3:
3933
- data = [];
3934
- dataNames = [];
3935
- if ((_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _a === void 0 ? void 0 : _a.imagery) {
3936
- for (i = 0; i < bookmark.Settings.imagery.length; i++) {
3937
- source = bookmark.Settings.imagery[i];
3938
- dataNames.push(source.title);
4028
+ V1.Render = Render;
4029
+ function RenderView(params) {
4030
+ var _a;
4031
+ return __awaiter(this, void 0, void 0, function () {
4032
+ var api, view, bookmark, vSettings, bSettings, data, dataNames, i, source, tiles, i, name_1, j, tile, enabled, layers, _loop_1, i, i, tile, layer, i, layer;
4033
+ return __generator(this, function (_b) {
4034
+ switch (_b.label) {
4035
+ case 0:
4036
+ api = params.apiGetter.getApi();
4037
+ return [4 /*yield*/, ProjectView.Get(api, params.viewId)];
4038
+ case 1:
4039
+ view = _b.sent();
4040
+ bookmark = null;
4041
+ if (!params.bookmarkId) return [3 /*break*/, 3];
4042
+ return [4 /*yield*/, ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4043
+ case 2:
4044
+ bookmark = (_b.sent());
4045
+ _b.label = 3;
4046
+ case 3:
4047
+ vSettings = view.Settings;
4048
+ bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
4049
+ data = [];
4050
+ dataNames = [];
4051
+ if (bSettings === null || bSettings === void 0 ? void 0 : bSettings.imagery) {
4052
+ for (i = 0; i < bSettings.imagery.length; i++) {
4053
+ source = bSettings.imagery[i];
4054
+ dataNames.push(source.title);
4055
+ }
3939
4056
  }
3940
- }
3941
- else if ((_b = view.Settings) === null || _b === void 0 ? void 0 : _b.DefaultMapTiles) {
3942
- dataNames.push(view.Settings.DefaultMapTiles);
3943
- }
3944
- tiles = (_d = (_c = view.Settings) === null || _c === void 0 ? void 0 : _c.CesiumMapSources) !== null && _d !== void 0 ? _d : [];
3945
- return [4 /*yield*/, ProjectViewTileSource.MergeMapTemplateData(params.apiGetter, tiles, ((_e = view.Settings) === null || _e === void 0 ? void 0 : _e.CesiumMapSources) == null)];
3946
- case 4:
3947
- _f.sent();
3948
- for (i = 0; i < dataNames.length; i++) {
3949
- name_1 = dataNames[i];
3950
- for (j = 0; j < tiles.length; j++) {
3951
- tile = tiles[j];
3952
- if (CompareLegacyNames(tile.Name, name_1)) {
3953
- data.push(tile);
3954
- break;
4057
+ else if (vSettings === null || vSettings === void 0 ? void 0 : vSettings.DefaultMapTiles) {
4058
+ dataNames.push(vSettings.DefaultMapTiles);
4059
+ }
4060
+ tiles = (_a = vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumMapSources) !== null && _a !== void 0 ? _a : [];
4061
+ return [4 /*yield*/, ProjectViewLegacyTile.MergeMapTemplateData(params.apiGetter, tiles, (vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumMapSources) == null)];
4062
+ case 4:
4063
+ _b.sent();
4064
+ for (i = 0; i < dataNames.length; i++) {
4065
+ name_1 = dataNames[i];
4066
+ for (j = 0; j < tiles.length; j++) {
4067
+ tile = tiles[j];
4068
+ if (CompareLegacyNames(tile.Name, name_1)) {
4069
+ data.push(tile);
4070
+ break;
4071
+ }
3955
4072
  }
3956
4073
  }
3957
- }
3958
- enabled = gatherEnabledImageries(params.viewer);
3959
- layers = [];
3960
- // Gather layers we want to render.
3961
- // Any new layer is added to viewer at the bottom.
3962
- if (params.ignoreIds) {
3963
- _loop_1 = function (i) {
3964
- var id = params.ignoreIds[i];
3965
- var layer = enabled.find(function (x) {
3966
- var layer = x;
3967
- if (layer._bId === id) {
3968
- return true;
4074
+ enabled = gatherEnabledImageries(params.viewer);
4075
+ layers = [];
4076
+ // Gather layers we want to render.
4077
+ // Any new layer is added to viewer at the bottom.
4078
+ if (params.ignoreIds) {
4079
+ _loop_1 = function (i) {
4080
+ var id = params.ignoreIds[i];
4081
+ var layer = enabled.find(function (x) {
4082
+ var layer = x;
4083
+ if (layer._bId === id) {
4084
+ return true;
4085
+ }
4086
+ });
4087
+ if (layer) {
4088
+ layers.push(layer);
3969
4089
  }
4090
+ };
4091
+ for (i = 0; i < params.ignoreIds.length; i++) {
4092
+ _loop_1(i);
4093
+ }
4094
+ }
4095
+ for (i = 0; i < data.length; i++) {
4096
+ tile = data[i];
4097
+ layer = Render({
4098
+ apiGetter: params.apiGetter,
4099
+ viewer: params.viewer,
4100
+ data: tile,
3970
4101
  });
3971
4102
  if (layer) {
3972
4103
  layers.push(layer);
3973
4104
  }
3974
- };
3975
- for (i = 0; i < params.ignoreIds.length; i++) {
3976
- _loop_1(i);
3977
4105
  }
3978
- }
3979
- for (i = 0; i < data.length; i++) {
3980
- tile = data[i];
3981
- layer = RenderLegacy({
3982
- apiGetter: params.apiGetter,
3983
- viewer: params.viewer,
3984
- data: tile,
4106
+ // Sort currently enabled (after new ones added) to match desired order.
4107
+ enabled = gatherEnabledImageries(params.viewer);
4108
+ enabled.sort(function (a, b) {
4109
+ var indexA = layers.indexOf(a);
4110
+ var indexB = layers.indexOf(b);
4111
+ if (indexA < 0 && indexB < 0) {
4112
+ return 0;
4113
+ }
4114
+ if (indexA < 0) {
4115
+ return 1;
4116
+ }
4117
+ if (indexB < 0) {
4118
+ return -1;
4119
+ }
4120
+ return indexA - indexB;
3985
4121
  });
3986
- if (layer) {
3987
- layers.push(layer);
4122
+ // Move enabled layers to match desired order.
4123
+ // Remove any layers that aren't in enabled list.
4124
+ for (i = 0; i < enabled.length; i++) {
4125
+ layer = enabled[i];
4126
+ if (layers.includes(layer)) {
4127
+ params.viewer.imageryLayers.raiseToTop(layer);
4128
+ }
4129
+ else {
4130
+ params.viewer.imageryLayers.remove(layer);
4131
+ }
3988
4132
  }
3989
- }
3990
- // Sort currently enabled (after new ones added) to match desired order.
3991
- enabled = gatherEnabledImageries(params.viewer);
3992
- enabled.sort(function (a, b) {
3993
- var indexA = layers.indexOf(a);
3994
- var indexB = layers.indexOf(b);
3995
- if (indexA < 0 && indexB < 0) {
3996
- return 0;
4133
+ return [2 /*return*/];
4134
+ }
4135
+ });
4136
+ });
4137
+ }
4138
+ V1.RenderView = RenderView;
4139
+ })(V1 = Map.V1 || (Map.V1 = {}));
4140
+ var V2;
4141
+ (function (V2) {
4142
+ function GetOrCreateLayer(viewer, apiGetter, meta) {
4143
+ return __awaiter(this, void 0, void 0, function () {
4144
+ var defaultImg, provider, api, tileset, settings, layer;
4145
+ return __generator(this, function (_a) {
4146
+ switch (_a.label) {
4147
+ case 0:
4148
+ defaultImg = meta.accountId ? null : ProjectViewTile.DefaultImagery.find(function (x) { return x.id === meta.tilesetId; });
4149
+ provider = null;
4150
+ if (!defaultImg) return [3 /*break*/, 1];
4151
+ provider = renderDefaultMapTile(defaultImg.id);
4152
+ return [3 /*break*/, 3];
4153
+ case 1:
4154
+ api = apiGetter.getApi(meta.accountId);
4155
+ return [4 /*yield*/, Tileset.Get(api, meta.tilesetId)];
4156
+ case 2:
4157
+ tileset = _a.sent();
4158
+ if (tileset.type === Tileset.EType.GeoMap) {
4159
+ provider = new TileMapServiceImageryProvider({
4160
+ url: Tileset.GetPublicFileUrl(api, meta.tilesetId, ""),
4161
+ fileExtension: ".png"
4162
+ });
3997
4163
  }
3998
- if (indexA < 0) {
3999
- return 1;
4164
+ else if (tileset.type === Tileset.EType.ExternalGeoMap) {
4165
+ settings = tileset.settings;
4166
+ switch (settings.mapType) {
4167
+ case TilesetExtMapTiles.EType.CesiumIon:
4168
+ provider = new IonImageryProvider({
4169
+ assetId: settings.ionId,
4170
+ // TODO
4171
+ accessToken: null
4172
+ });
4173
+ break;
4174
+ case TilesetExtMapTiles.EType.MapBoxImagery:
4175
+ // TODO: Read default account key when missing.
4176
+ provider = new UrlTemplateImageryProvider({
4177
+ url: "https://api.mapbox.com/styles/v1/"
4178
+ + settings.mapBoxAccount + "/" + settings.mapBoxStyleId +
4179
+ "/tiles/256/{z}/{x}/{y}?access_token="
4180
+ + settings.mapBoxKey
4181
+ });
4182
+ break;
4183
+ case TilesetExtMapTiles.EType.OpenStreetMapImagery:
4184
+ provider = new OpenStreetMapImageryProvider({
4185
+ url: settings.url,
4186
+ fileExtension: settings.sourceExt
4187
+ });
4188
+ break;
4189
+ case TilesetExtMapTiles.EType.TileMapImagery:
4190
+ provider = new TileMapServiceImageryProvider({
4191
+ url: settings.url,
4192
+ fileExtension: settings.sourceExt
4193
+ });
4194
+ break;
4195
+ }
4000
4196
  }
4001
- if (indexB < 0) {
4002
- return -1;
4197
+ else if (tileset.type === Tileset.EType.EntitiesMap) {
4198
+ provider = new UrlTemplateImageryProvider({
4199
+ url: Tileset.GetPublicFileUrl(api, meta.tilesetId, "{z}/{x}/{y}.png"),
4200
+ tileHeight: 256,
4201
+ tileWidth: 256
4202
+ });
4003
4203
  }
4004
- return indexA - indexB;
4005
- });
4006
- // Move enabled layers to match desired order.
4007
- // Remove any layers that aren't in enabled list.
4008
- enabled = enabled.reverse();
4009
- for (i = 0; i < enabled.length; i++) {
4010
- layer = enabled[i];
4011
- if (layers.includes(layer)) {
4012
- params.viewer.imageryLayers.raiseToTop(layer);
4204
+ _a.label = 3;
4205
+ case 3:
4206
+ if (provider) {
4207
+ layer = viewer.imageryLayers.addImageryProvider(provider);
4208
+ layer._bMeta = meta;
4209
+ return [2 /*return*/, layer];
4013
4210
  }
4014
- else {
4015
- params.viewer.imageryLayers.remove(layer);
4211
+ return [2 /*return*/, null];
4212
+ }
4213
+ });
4214
+ });
4215
+ }
4216
+ V2.GetOrCreateLayer = GetOrCreateLayer;
4217
+ function Render(params) {
4218
+ return __awaiter(this, void 0, void 0, function () {
4219
+ var _loop_2, i, curEnabled, toDisable, curEnabledArr, _loop_3, i, i, _loop_4, i;
4220
+ return __generator(this, function (_a) {
4221
+ switch (_a.label) {
4222
+ case 0:
4223
+ _loop_2 = function (i) {
4224
+ var enabled, source;
4225
+ return __generator(this, function (_a) {
4226
+ switch (_a.label) {
4227
+ case 0:
4228
+ enabled = params.enabled[i];
4229
+ source = params.sources.find(function (x) { return x.accountId === enabled.accountId && x.tilesetId === enabled.tilesetId; });
4230
+ if (!source) {
4231
+ console.error("Missing source for enabled imagery.", enabled);
4232
+ }
4233
+ return [4 /*yield*/, GetOrCreateLayer(params.viewer, params.apiGetter, {
4234
+ accountId: source.accountId,
4235
+ tilesetId: source.tilesetId,
4236
+ })];
4237
+ case 1:
4238
+ _a.sent();
4239
+ return [2 /*return*/];
4240
+ }
4241
+ });
4242
+ };
4243
+ i = 0;
4244
+ _a.label = 1;
4245
+ case 1:
4246
+ if (!(i < params.enabled.length)) return [3 /*break*/, 4];
4247
+ return [5 /*yield**/, _loop_2(i)];
4248
+ case 2:
4249
+ _a.sent();
4250
+ _a.label = 3;
4251
+ case 3:
4252
+ i++;
4253
+ return [3 /*break*/, 1];
4254
+ case 4:
4255
+ curEnabled = params.viewer.imageryLayers;
4256
+ toDisable = [];
4257
+ curEnabledArr = [];
4258
+ _loop_3 = function (i) {
4259
+ var layer = curEnabled.get(i);
4260
+ var meta = layer === null || layer === void 0 ? void 0 : layer._bMeta;
4261
+ var disable = !params.enabled.find(function (x) { return x.accountId === (meta === null || meta === void 0 ? void 0 : meta.accountId) && x.tilesetId === (meta === null || meta === void 0 ? void 0 : meta.tilesetId); });
4262
+ if (disable) {
4263
+ toDisable.push(layer);
4264
+ }
4265
+ else {
4266
+ curEnabledArr.push(layer);
4267
+ }
4268
+ };
4269
+ for (i = 0; i < curEnabled.length; i++) {
4270
+ _loop_3(i);
4016
4271
  }
4017
- }
4018
- return [2 /*return*/];
4019
- }
4272
+ for (i = 0; i < toDisable.length; i++) {
4273
+ params.viewer.imageryLayers.remove(toDisable[i]);
4274
+ }
4275
+ _loop_4 = function (i) {
4276
+ var enabled = params.enabled[i];
4277
+ var layer = curEnabledArr.find(function (x) { var _a, _b; return ((_a = x._bMeta) === null || _a === void 0 ? void 0 : _a.accountId) === enabled.accountId && ((_b = x._bMeta) === null || _b === void 0 ? void 0 : _b.tilesetId) === enabled.tilesetId; });
4278
+ if (layer) {
4279
+ params.viewer.imageryLayers.raiseToTop(layer);
4280
+ layer.alpha = Number(enabled.alpha);
4281
+ layer.brightness = Number(enabled.brightness);
4282
+ layer.contrast = Number(enabled.contrast);
4283
+ layer.hue = Number(enabled.hue);
4284
+ layer.saturation = Number(enabled.saturation);
4285
+ layer.gamma = Number(enabled.gamma);
4286
+ }
4287
+ };
4288
+ for (i = 0; i < params.enabled.length; i++) {
4289
+ _loop_4(i);
4290
+ }
4291
+ return [2 /*return*/];
4292
+ }
4293
+ });
4020
4294
  });
4021
- });
4022
- }
4023
- Map.RenderLegacyView = RenderLegacyView;
4295
+ }
4296
+ V2.Render = Render;
4297
+ })(V2 = Map.V2 || (Map.V2 = {}));
4024
4298
  })(Map = TileRenderEngine.Map || (TileRenderEngine.Map = {}));
4025
4299
  var Terrain;
4026
4300
  (function (Terrain) {
4027
- function Render(params) {
4028
- throw ("Not implemented");
4029
- }
4030
- Terrain.Render = Render;
4031
- function RenderLegacy(params) {
4032
- var _a;
4033
- var bId = createTerrainBId(params.data);
4034
- var curProvider = params.viewer.terrainProvider;
4035
- if (curProvider._bId && curProvider._bId === bId) {
4036
- return;
4037
- }
4038
- var provider = null;
4039
- if (isDefaultTerrain(params.data.Name)) {
4040
- var name_2 = prepLegacyName(params.data.Name);
4041
- switch (name_2) {
4042
- case EDefaultTerrain.CesiumWorldTerrain:
4043
- provider = createWorldTerrain({
4044
- requestVertexNormals: true
4045
- });
4046
- break;
4047
- case EDefaultTerrain.Linz:
4048
- provider = new CesiumTerrainProvider({
4049
- url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
4050
- requestVertexNormals: true
4051
- });
4052
- break;
4053
- case EDefaultTerrain.FlatTerrain:
4054
- provider = new EllipsoidTerrainProvider();
4055
- break;
4301
+ var V1;
4302
+ (function (V1) {
4303
+ function Render(params) {
4304
+ var _a;
4305
+ var bId = createLegacyTerrId(params.data);
4306
+ var curProvider = params.viewer.terrainProvider;
4307
+ if (curProvider._bId && curProvider._bId === bId) {
4308
+ return;
4309
+ }
4310
+ var provider = null;
4311
+ if (isLegacyTerrainDefault(params.data.Name)) {
4312
+ var id = legacyTerrIdToDefaultId(params.data.Name);
4313
+ provider = renderDefaultTerrTile(id);
4314
+ }
4315
+ else if (params.data.SourceUrl) {
4316
+ provider = new CesiumTerrainProvider({
4317
+ url: params.data.SourceUrl,
4318
+ requestWaterMask: params.data.RequestWaterMask,
4319
+ requestVertexNormals: true
4320
+ });
4321
+ }
4322
+ if (provider) {
4323
+ provider._bId = bId;
4324
+ provider._bName = (_a = params.data) === null || _a === void 0 ? void 0 : _a.Name;
4325
+ params.viewer.terrainProvider = provider;
4056
4326
  }
4057
4327
  }
4058
- else if (params.data.SourceUrl) {
4059
- provider = new CesiumTerrainProvider({
4060
- url: params.data.SourceUrl,
4061
- requestWaterMask: params.data.RequestWaterMask,
4062
- requestVertexNormals: true
4328
+ V1.Render = Render;
4329
+ function RenderView(params) {
4330
+ var _a, _b;
4331
+ return __awaiter(this, void 0, void 0, function () {
4332
+ var api, view, bookmark, vSettings, bSettings, terrainTiles, terrainTile, terrainTileName, i, tile;
4333
+ return __generator(this, function (_c) {
4334
+ switch (_c.label) {
4335
+ case 0:
4336
+ api = params.apiGetter.getApi();
4337
+ return [4 /*yield*/, ProjectView.Get(api, params.viewId)];
4338
+ case 1:
4339
+ view = _c.sent();
4340
+ bookmark = null;
4341
+ if (!params.bookmarkId) return [3 /*break*/, 3];
4342
+ return [4 /*yield*/, ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4343
+ case 2:
4344
+ bookmark = (_c.sent());
4345
+ _c.label = 3;
4346
+ case 3:
4347
+ vSettings = view.Settings;
4348
+ bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
4349
+ terrainTiles = (_a = vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumTerrainSources) !== null && _a !== void 0 ? _a : [];
4350
+ terrainTile = null;
4351
+ terrainTileName = null;
4352
+ if ((_b = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _b === void 0 ? void 0 : _b.terrain) {
4353
+ terrainTileName = bSettings.terrain;
4354
+ }
4355
+ else {
4356
+ terrainTileName = vSettings === null || vSettings === void 0 ? void 0 : vSettings.DefaultTerrain;
4357
+ }
4358
+ return [4 /*yield*/, ProjectViewLegacyTile.MergeTerrainTemplateData(params.apiGetter, terrainTiles, (vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumTerrainSources) == null)];
4359
+ case 4:
4360
+ _c.sent();
4361
+ for (i = 0; i < terrainTiles.length; i++) {
4362
+ tile = terrainTiles[i];
4363
+ if (TileRenderEngine.CompareLegacyNames(tile.Name, terrainTileName)) {
4364
+ terrainTile = tile;
4365
+ break;
4366
+ }
4367
+ }
4368
+ if (terrainTile) {
4369
+ Render({
4370
+ data: terrainTile,
4371
+ viewer: params.viewer,
4372
+ });
4373
+ }
4374
+ return [2 /*return*/];
4375
+ }
4376
+ });
4063
4377
  });
4064
4378
  }
4065
- if (provider) {
4066
- provider._bId = bId;
4067
- provider._bName = (_a = params.data) === null || _a === void 0 ? void 0 : _a.Name;
4068
- params.viewer.terrainProvider = provider;
4069
- }
4070
- }
4071
- Terrain.RenderLegacy = RenderLegacy;
4072
- function RenderLegacyView(params) {
4073
- var _a, _b, _c, _d, _e;
4074
- return __awaiter(this, void 0, void 0, function () {
4075
- var api, view, bookmark, terrainTiles, terrainTile, terrainTileName, i, tile;
4076
- return __generator(this, function (_f) {
4077
- switch (_f.label) {
4078
- case 0:
4079
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
4080
- return [4 /*yield*/, ProjectView.Get(api, params.viewId)];
4081
- case 1:
4082
- view = _f.sent();
4083
- bookmark = null;
4084
- if (!params.bookmarkId) return [3 /*break*/, 3];
4085
- return [4 /*yield*/, ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4086
- case 2:
4087
- bookmark = _f.sent();
4088
- _f.label = 3;
4089
- case 3:
4090
- terrainTiles = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.CesiumTerrainSources) !== null && _b !== void 0 ? _b : [];
4091
- terrainTile = null;
4092
- terrainTileName = null;
4093
- if ((_c = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _c === void 0 ? void 0 : _c.terrain) {
4094
- terrainTileName = bookmark.Settings.terrain;
4095
- }
4096
- else {
4097
- terrainTileName = (_d = view.Settings) === null || _d === void 0 ? void 0 : _d.DefaultTerrain;
4098
- }
4099
- return [4 /*yield*/, ProjectViewTileSource.MergeTerrainTemplateData(params.apiGetter, terrainTiles, ((_e = view.Settings) === null || _e === void 0 ? void 0 : _e.CesiumTerrainSources) == null)];
4100
- case 4:
4101
- _f.sent();
4102
- for (i = 0; i < terrainTiles.length; i++) {
4103
- tile = terrainTiles[i];
4104
- if (TileRenderEngine.CompareLegacyNames(tile.Name, terrainTileName)) {
4105
- terrainTile = tile;
4106
- break;
4379
+ V1.RenderView = RenderView;
4380
+ })(V1 = Terrain.V1 || (Terrain.V1 = {}));
4381
+ var V2;
4382
+ (function (V2) {
4383
+ function Render(params) {
4384
+ var _a;
4385
+ return __awaiter(this, void 0, void 0, function () {
4386
+ var enabledMeta, defaultTerr, provider, api, tileset, url, vertexes, settings;
4387
+ return __generator(this, function (_b) {
4388
+ switch (_b.label) {
4389
+ case 0:
4390
+ enabledMeta = (_a = params.viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a._bMeta;
4391
+ if ((enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.tilesetId) === params.source.tilesetId &&
4392
+ (enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.accountId) === params.source.accountId) {
4393
+ return [2 /*return*/];
4107
4394
  }
4108
- }
4109
- if (terrainTile) {
4110
- TileRenderEngine.Terrain.RenderLegacy({
4111
- data: terrainTile,
4112
- viewer: params.viewer,
4113
- });
4114
- }
4115
- return [2 /*return*/];
4116
- }
4395
+ defaultTerr = params.source.accountId ? null : ProjectViewTile.DefaultTerrains.find(function (x) { return x.id === params.source.tilesetId; });
4396
+ provider = null;
4397
+ if (!defaultTerr) return [3 /*break*/, 1];
4398
+ provider = renderDefaultTerrTile(defaultTerr.id);
4399
+ return [3 /*break*/, 3];
4400
+ case 1:
4401
+ api = params.apiGetter.getApi(params.source.accountId);
4402
+ return [4 /*yield*/, Tileset.Get(api, params.source.tilesetId)];
4403
+ case 2:
4404
+ tileset = _b.sent();
4405
+ url = void 0;
4406
+ vertexes = true;
4407
+ if (tileset.type === Tileset.EType.Terrain) {
4408
+ url = Tileset.GetPublicFileUrl(api, tileset.id, "");
4409
+ }
4410
+ else if (tileset.type === Tileset.EType.ExternalTerrain) {
4411
+ settings = tileset.settings;
4412
+ url = settings.url;
4413
+ vertexes = settings.requestVertexNormals == null ? true : settings.requestVertexNormals;
4414
+ }
4415
+ else {
4416
+ console.error("Invalid tileset type.", tileset);
4417
+ }
4418
+ if (url) {
4419
+ provider = new CesiumTerrainProvider({
4420
+ url: url,
4421
+ requestVertexNormals: vertexes
4422
+ });
4423
+ }
4424
+ _b.label = 3;
4425
+ case 3:
4426
+ if (provider) {
4427
+ provider._bMeta = {
4428
+ accountId: params.source.accountId,
4429
+ tilesetId: params.source.tilesetId
4430
+ };
4431
+ params.viewer.terrainProvider = provider;
4432
+ }
4433
+ return [2 /*return*/];
4434
+ }
4435
+ });
4117
4436
  });
4118
- });
4119
- }
4120
- Terrain.RenderLegacyView = RenderLegacyView;
4437
+ }
4438
+ V2.Render = Render;
4439
+ })(V2 = Terrain.V2 || (Terrain.V2 = {}));
4121
4440
  })(Terrain = TileRenderEngine.Terrain || (TileRenderEngine.Terrain = {}));
4122
4441
  })(TileRenderEngine || (TileRenderEngine = {}));
4123
4442
 
4124
- var ViewRenderEngine;
4125
- (function (ViewRenderEngine) {
4126
- function Render(params) {
4127
- var _a, _b, _c, _d, _e;
4128
- return __awaiter(this, void 0, void 0, function () {
4129
- var api, view, bookmark, frustum, scene, curFrustum, camera, pos, go, enabledItems, newItemIds, _i, enabledItems_1, id;
4130
- return __generator(this, function (_f) {
4131
- switch (_f.label) {
4132
- case 0:
4133
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
4134
- return [4 /*yield*/, ProjectView.Get(api, params.viewId)];
4135
- case 1:
4136
- view = _f.sent();
4137
- bookmark = null;
4138
- if (!params.bookmarkId) return [3 /*break*/, 3];
4139
- return [4 /*yield*/, ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4140
- case 2:
4141
- bookmark = _f.sent();
4142
- _f.label = 3;
4143
- case 3: return [4 /*yield*/, TileRenderEngine.Terrain.RenderLegacyView({
4443
+ function renderV1(params, bookmark, view) {
4444
+ var _a, _b;
4445
+ return __awaiter(this, void 0, void 0, function () {
4446
+ var vSettings, bSettings, frustum, scene, curFrustum, camera, pos, go, enabledItems, newItemIds, _i, enabledItems_1, id;
4447
+ return __generator(this, function (_c) {
4448
+ switch (_c.label) {
4449
+ case 0:
4450
+ vSettings = view.Settings;
4451
+ bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
4452
+ return [4 /*yield*/, TileRenderEngine.Terrain.V1.RenderView({
4144
4453
  apiGetter: params.apiGetter,
4145
4454
  bookmarkId: params.bookmarkId,
4146
4455
  viewer: params.manager.Viewer,
4147
4456
  viewId: params.viewId,
4148
4457
  })];
4149
- case 4:
4150
- _f.sent();
4151
- return [4 /*yield*/, TileRenderEngine.Map.RenderLegacyView({
4152
- apiGetter: params.apiGetter,
4153
- bookmarkId: params.bookmarkId,
4154
- viewer: params.manager.Viewer,
4155
- viewId: params.viewId,
4156
- ignoreIds: []
4157
- })];
4158
- case 5:
4159
- _f.sent();
4160
- frustum = (_a = bookmark.Settings) === null || _a === void 0 ? void 0 : _a.cameraFrustum;
4161
- if (frustum == null) {
4162
- frustum = Camera.EFrustum.Perspective;
4458
+ case 1:
4459
+ _c.sent();
4460
+ return [4 /*yield*/, TileRenderEngine.Map.V1.RenderView({
4461
+ apiGetter: params.apiGetter,
4462
+ bookmarkId: params.bookmarkId,
4463
+ viewer: params.manager.Viewer,
4464
+ viewId: params.viewId,
4465
+ ignoreIds: []
4466
+ })];
4467
+ case 2:
4468
+ _c.sent();
4469
+ frustum = bSettings === null || bSettings === void 0 ? void 0 : bSettings.cameraFrustum;
4470
+ if (frustum == null) {
4471
+ frustum = Camera.EFrustum.Perspective;
4472
+ }
4473
+ scene = params.manager.Viewer.scene;
4474
+ curFrustum = scene.camera.frustum instanceof OrthographicFrustum ? Camera.EFrustum.Orthographic : Camera.EFrustum.Perspective;
4475
+ if (curFrustum != frustum) {
4476
+ if (frustum == Camera.EFrustum.Perspective) {
4477
+ scene.camera.switchToPerspectiveFrustum();
4478
+ scene.screenSpaceCameraController.enableTilt = true;
4163
4479
  }
4164
- scene = params.manager.Viewer.scene;
4165
- curFrustum = scene.camera.frustum instanceof OrthographicFrustum ? Camera.EFrustum.Orthographic : Camera.EFrustum.Perspective;
4166
- if (curFrustum != frustum) {
4167
- if (frustum == Camera.EFrustum.Perspective) {
4168
- scene.camera.switchToPerspectiveFrustum();
4169
- scene.screenSpaceCameraController.enableTilt = true;
4170
- }
4171
- else {
4172
- scene.camera.switchToOrthographicFrustum();
4173
- scene.screenSpaceCameraController.enableTilt = false;
4174
- }
4175
- params.skipTransition = true;
4480
+ else {
4481
+ scene.camera.switchToOrthographicFrustum();
4482
+ scene.screenSpaceCameraController.enableTilt = false;
4483
+ }
4484
+ params.skipTransition = true;
4485
+ }
4486
+ camera = bookmark.Camera;
4487
+ pos = Cartesian3.fromDegrees(+camera.position.longitude, +camera.position.latitude, +camera.position.height);
4488
+ params.manager.Viewer.scene.camera.flyTo({
4489
+ destination: pos,
4490
+ orientation: {
4491
+ heading: +camera.heading,
4492
+ pitch: +camera.pitch,
4493
+ roll: +camera.roll
4494
+ },
4495
+ duration: params.skipTransition ? 0 : 2
4496
+ });
4497
+ go = (_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _a === void 0 ? void 0 : _a.groundOcclusion;
4498
+ if (go == null) {
4499
+ go = vSettings === null || vSettings === void 0 ? void 0 : vSettings.GroundOcclusion;
4500
+ }
4501
+ if (go == null) {
4502
+ go = false;
4503
+ }
4504
+ params.manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
4505
+ enabledItems = params.manager.GetEnabledItemIds();
4506
+ newItemIds = (_b = bSettings === null || bSettings === void 0 ? void 0 : bSettings.selectedItemIds) !== null && _b !== void 0 ? _b : [];
4507
+ for (_i = 0, enabledItems_1 = enabledItems; _i < enabledItems_1.length; _i++) {
4508
+ id = enabledItems_1[_i];
4509
+ if (newItemIds.indexOf(id) === -1) {
4510
+ params.manager.RemoveItemById(id);
4176
4511
  }
4177
- camera = bookmark.Camera;
4178
- pos = Cartesian3.fromDegrees(+camera.position.longitude, +camera.position.latitude, +camera.position.height);
4179
- params.manager.Viewer.scene.camera.flyTo({
4512
+ }
4513
+ if (!params.bookmarkId) return [3 /*break*/, 4];
4514
+ return [4 /*yield*/, RenderHelper.RenderBookmarkItems({
4515
+ apiGetter: params.apiGetter,
4516
+ manager: params.manager,
4517
+ }, params.viewId, params.bookmarkId)];
4518
+ case 3:
4519
+ _c.sent();
4520
+ _c.label = 4;
4521
+ case 4: return [2 /*return*/];
4522
+ }
4523
+ });
4524
+ });
4525
+ }
4526
+ function renderV2(params, bookmark, view) {
4527
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
4528
+ return __awaiter(this, void 0, void 0, function () {
4529
+ var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, gOcclusion, terrain, source, imagery, iSources, curEnabled, newItemIds, _i, curEnabled_1, id;
4530
+ return __generator(this, function (_p) {
4531
+ switch (_p.label) {
4532
+ case 0:
4533
+ viewer = params.manager.Viewer;
4534
+ scene = viewer.scene;
4535
+ vSettings = view.Settings;
4536
+ bSettings = ((_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) !== null && _a !== void 0 ? _a : {});
4537
+ defaults = (_b = vSettings.defaults) !== null && _b !== void 0 ? _b : {};
4538
+ camera = ((_c = bookmark.Camera) !== null && _c !== void 0 ? _c : {});
4539
+ newLens = camera.cameraFrustum;
4540
+ if (newLens == null) {
4541
+ newLens = (_d = defaults.camera) === null || _d === void 0 ? void 0 : _d.cameraFrustum;
4542
+ }
4543
+ if (newLens == null) {
4544
+ // TODO: Need global default.
4545
+ newLens = Camera.EFrustum.Perspective;
4546
+ }
4547
+ curLens = scene.camera.frustum instanceof OrthographicFrustum ?
4548
+ Camera.EFrustum.Orthographic :
4549
+ Camera.EFrustum.Perspective;
4550
+ if (newLens != curLens) {
4551
+ if (newLens == Camera.EFrustum.Perspective) {
4552
+ scene.camera.switchToPerspectiveFrustum();
4553
+ scene.screenSpaceCameraController.enableTilt = true;
4554
+ }
4555
+ else {
4556
+ scene.camera.switchToOrthographicFrustum();
4557
+ scene.screenSpaceCameraController.enableTilt = false;
4558
+ }
4559
+ }
4560
+ transition = params.skipTransition ? 0 : curLens === newLens ? camera.transition : 0;
4561
+ if (transition == null) {
4562
+ transition = (_e = defaults.camera) === null || _e === void 0 ? void 0 : _e.transition;
4563
+ }
4564
+ if (transition == null) {
4565
+ // TODO: Need global default.
4566
+ transition = 2000;
4567
+ }
4568
+ if (Carto.ValidateCarto(camera)) {
4569
+ pos = Cartesian3.fromDegrees(+camera.longitude, +camera.latitude, +camera.altitude);
4570
+ scene.camera.flyTo({
4180
4571
  destination: pos,
4181
4572
  orientation: {
4182
4573
  heading: +camera.heading,
4183
4574
  pitch: +camera.pitch,
4184
4575
  roll: +camera.roll
4185
4576
  },
4186
- duration: params.skipTransition ? 0 : 2
4577
+ duration: transition != 0 ? transition / 1000 : 0
4187
4578
  });
4188
- go = (_b = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _b === void 0 ? void 0 : _b.groundOcclusion;
4189
- if (go == null) {
4190
- go = (_c = view.Settings) === null || _c === void 0 ? void 0 : _c.GroundOcclusion;
4191
- }
4192
- if (go == null) {
4193
- go = false;
4194
- }
4195
- params.manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
4196
- enabledItems = params.manager.GetEnabledItemIds();
4197
- newItemIds = (_e = (_d = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _d === void 0 ? void 0 : _d.selectedItemIds) !== null && _e !== void 0 ? _e : [];
4198
- for (_i = 0, enabledItems_1 = enabledItems; _i < enabledItems_1.length; _i++) {
4199
- id = enabledItems_1[_i];
4200
- if (newItemIds.indexOf(id) === -1) {
4201
- params.manager.RemoveItemById(id);
4579
+ }
4580
+ gOcclusion = bSettings === null || bSettings === void 0 ? void 0 : bSettings.groundOcclusion;
4581
+ if (gOcclusion == null) {
4582
+ gOcclusion = (_f = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _f === void 0 ? void 0 : _f.groundOcclusion;
4583
+ }
4584
+ if (gOcclusion == null) {
4585
+ // TODO: Need global default.
4586
+ gOcclusion = true;
4587
+ }
4588
+ scene.globe.depthTestAgainstTerrain = Boolean(gOcclusion);
4589
+ terrain = (_g = bSettings === null || bSettings === void 0 ? void 0 : bSettings.terrain) !== null && _g !== void 0 ? _g : (_h = defaults.settings) === null || _h === void 0 ? void 0 : _h.terrain;
4590
+ if (!terrain) return [3 /*break*/, 2];
4591
+ source = (_j = vSettings.terrains) === null || _j === void 0 ? void 0 : _j.find(function (x) { return x.accountId === terrain.accountId && x.tilesetId === terrain.tilesetId; });
4592
+ if (!source) return [3 /*break*/, 2];
4593
+ return [4 /*yield*/, TileRenderEngine.Terrain.V2.Render({
4594
+ apiGetter: params.apiGetter,
4595
+ enabled: terrain,
4596
+ source: source,
4597
+ viewer: params.manager.Viewer,
4598
+ })];
4599
+ case 1:
4600
+ _p.sent();
4601
+ _p.label = 2;
4602
+ case 2:
4603
+ imagery = (_k = bSettings.imagery) !== null && _k !== void 0 ? _k : (_l = defaults.settings) === null || _l === void 0 ? void 0 : _l.imagery;
4604
+ if (imagery == null) {
4605
+ // TODO: Need global default.
4606
+ imagery = [
4607
+ {
4608
+ accountId: null,
4609
+ tilesetId: ProjectViewTile.EDefaultImagery.MapboxSatellite,
4610
+ alpha: 1,
4611
+ brightness: 1,
4612
+ contrast: 1,
4613
+ gamma: 1,
4614
+ hue: 0,
4615
+ saturation: 1
4202
4616
  }
4617
+ ];
4618
+ }
4619
+ iSources = (_m = vSettings.imageries) === null || _m === void 0 ? void 0 : _m.filter(function (x) {
4620
+ return imagery.find(function (y) {
4621
+ y.accountId === x.accountId && y.tilesetId === x.tilesetId;
4622
+ });
4623
+ });
4624
+ return [4 /*yield*/, TileRenderEngine.Map.V2.Render({
4625
+ apiGetter: params.apiGetter,
4626
+ enabled: imagery,
4627
+ sources: iSources,
4628
+ viewer: params.manager.Viewer,
4629
+ })];
4630
+ case 3:
4631
+ _p.sent();
4632
+ curEnabled = params.manager.GetEnabledItemIds();
4633
+ newItemIds = (_o = bSettings === null || bSettings === void 0 ? void 0 : bSettings.menuItemIds) !== null && _o !== void 0 ? _o : [];
4634
+ _i = 0, curEnabled_1 = curEnabled;
4635
+ _p.label = 4;
4636
+ case 4:
4637
+ if (!(_i < curEnabled_1.length)) return [3 /*break*/, 7];
4638
+ id = curEnabled_1[_i];
4639
+ if (!(newItemIds.indexOf(id) === -1)) return [3 /*break*/, 6];
4640
+ return [4 /*yield*/, params.manager.RemoveItemById(id)];
4641
+ case 5:
4642
+ _p.sent();
4643
+ _p.label = 6;
4644
+ case 6:
4645
+ _i++;
4646
+ return [3 /*break*/, 4];
4647
+ case 7:
4648
+ if (!params.bookmarkId) return [3 /*break*/, 9];
4649
+ return [4 /*yield*/, RenderHelper.RenderBookmarkItems({
4650
+ apiGetter: params.apiGetter,
4651
+ manager: params.manager,
4652
+ }, params.viewId, params.bookmarkId)];
4653
+ case 8:
4654
+ _p.sent();
4655
+ _p.label = 9;
4656
+ case 9: return [2 /*return*/];
4657
+ }
4658
+ });
4659
+ });
4660
+ }
4661
+ var ViewRenderEngine;
4662
+ (function (ViewRenderEngine) {
4663
+ function Render(params) {
4664
+ return __awaiter(this, void 0, void 0, function () {
4665
+ var api, view, bookmark, version;
4666
+ return __generator(this, function (_a) {
4667
+ switch (_a.label) {
4668
+ case 0:
4669
+ api = params.apiGetter.getApi();
4670
+ return [4 /*yield*/, ProjectView.Get(api, params.viewId)];
4671
+ case 1:
4672
+ view = _a.sent();
4673
+ bookmark = null;
4674
+ if (!params.bookmarkId) return [3 /*break*/, 3];
4675
+ return [4 /*yield*/, ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4676
+ case 2:
4677
+ bookmark = _a.sent();
4678
+ _a.label = 3;
4679
+ case 3:
4680
+ if (bookmark && view.DataVersion != bookmark.DataVersion) {
4681
+ throw new Error("View and bookmark settings version mismatch.");
4203
4682
  }
4204
- if (!params.bookmarkId) return [3 /*break*/, 7];
4205
- return [4 /*yield*/, RenderHelper.RenderBookmarkItems({
4206
- apiGetter: params.apiGetter,
4207
- manager: params.manager,
4208
- }, params.viewId, params.bookmarkId)];
4683
+ version = view.DataVersion;
4684
+ if (!(version === 2)) return [3 /*break*/, 5];
4685
+ return [4 /*yield*/, renderV2(params, bookmark, view)];
4686
+ case 4:
4687
+ _a.sent();
4688
+ return [3 /*break*/, 7];
4689
+ case 5: return [4 /*yield*/, renderV1(params, bookmark, view)];
4209
4690
  case 6:
4210
- _f.sent();
4211
- _f.label = 7;
4691
+ _a.sent();
4692
+ _a.label = 7;
4212
4693
  case 7: return [2 /*return*/];
4213
4694
  }
4214
4695
  });