bruce-cesium 0.3.6 → 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 (43) hide show
  1. package/dist/bruce-cesium.es5.js +1018 -559
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +1015 -556
  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 -236
  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 -499
  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/utils/view-utils.d.ts +1 -1
  43. package/package.json +76 -73
@@ -923,7 +923,7 @@
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 @@
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 @@
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 @@
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,
@@ -1408,7 +1408,7 @@
1408
1408
  if (this.disposed) {
1409
1409
  throw (new Error("This item is disposed."));
1410
1410
  }
1411
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
1411
+ api = this.apiGetter.getApi();
1412
1412
  this.getter = this.sharedGetters.GetOrCreateFilterGetter({
1413
1413
  api: api,
1414
1414
  attrFilter: (_a = this.item.BruceEntity.Filter) !== null && _a !== void 0 ? _a : {},
@@ -1458,7 +1458,7 @@
1458
1458
  return [2 /*return*/];
1459
1459
  }
1460
1460
  this.isRunningCheck = true;
1461
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
1461
+ api = this.apiGetter.getApi();
1462
1462
  _a.label = 1;
1463
1463
  case 1:
1464
1464
  _a.trys.push([1, 5, , 6]);
@@ -2094,7 +2094,7 @@
2094
2094
  if (this.disposed) {
2095
2095
  return [2 /*return*/];
2096
2096
  }
2097
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
2097
+ api = this.apiGetter.getApi();
2098
2098
  return [4 /*yield*/, bruceModels.Entity.GetListByIds(api, entityIds)];
2099
2099
  case 1:
2100
2100
  entities = _b.sent();
@@ -2194,7 +2194,7 @@
2194
2194
  if (this.disposed) {
2195
2195
  return [2 /*return*/];
2196
2196
  }
2197
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
2197
+ api = this.apiGetter.getApi();
2198
2198
  return [4 /*yield*/, bruceModels.Entity.Get(api, id)];
2199
2199
  case 1:
2200
2200
  entity = _b.sent();
@@ -2290,7 +2290,7 @@
2290
2290
  }
2291
2291
  TilesetRenderEngine.ApplySettings = ApplySettings;
2292
2292
  function Render(params) {
2293
- var api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
2293
+ var api = params.apiGetter.getApi(params.apiGetter.accountId);
2294
2294
  if (params.tileset.type == bruceModels.Tileset.EType.Cad) {
2295
2295
  var cTileset_1 = new Cesium.Cesium3DTileset({
2296
2296
  url: bruceModels.Tileset.GetPublicFileUrl(api, params.tileset.id, "tileset.json") + "?generation=" + params.tileset.generateVersion
@@ -2712,7 +2712,7 @@
2712
2712
  if (!tilesetId) {
2713
2713
  return [2 /*return*/];
2714
2714
  }
2715
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
2715
+ api = this.apiGetter.getApi();
2716
2716
  return [4 /*yield*/, bruceModels.Tileset.Get(api, tilesetId)];
2717
2717
  case 1:
2718
2718
  tileset = _b.sent();
@@ -3123,7 +3123,7 @@
3123
3123
  for (i = 0; i < features.length; i++) {
3124
3124
  _loop_1(i);
3125
3125
  }
3126
- api = this.apiGetter.getApi(this.apiGetter.accountId, this.apiGetter.env);
3126
+ api = this.apiGetter.getApi();
3127
3127
  return [4 /*yield*/, bruceModels.EntitySource.GetEntityIdsBySourceKeys(api, this.sourceId, featureIds)];
3128
3128
  case 1:
3129
3129
  bIds = _a.sent();
@@ -3473,73 +3473,6 @@
3473
3473
  });
3474
3474
  }
3475
3475
  RenderHelper.RenderEntityFilter = RenderEntityFilter;
3476
- function RenderBookmarkItems(params, viewId, bookmarkId) {
3477
- var _a, _b, _c, _d;
3478
- return __awaiter(this, void 0, void 0, function () {
3479
- function traverseItems(item) {
3480
- return __awaiter(this, void 0, void 0, function () {
3481
- var itemId, i;
3482
- return __generator(this, function (_a) {
3483
- switch (_a.label) {
3484
- case 0:
3485
- if (!enabledItemIds.includes(item.id)) return [3 /*break*/, 2];
3486
- return [4 /*yield*/, params.manager.RenderItem({
3487
- item: item,
3488
- apiGetter: params.apiGetter
3489
- })];
3490
- case 1:
3491
- itemId = _a.sent();
3492
- renderedItemIds.push(itemId);
3493
- _a.label = 2;
3494
- case 2:
3495
- if (!item.Children) return [3 /*break*/, 6];
3496
- i = 0;
3497
- _a.label = 3;
3498
- case 3:
3499
- if (!(i < item.Children.length)) return [3 /*break*/, 6];
3500
- return [4 /*yield*/, traverseItems(item.Children[i])];
3501
- case 4:
3502
- _a.sent();
3503
- _a.label = 5;
3504
- case 5:
3505
- i++;
3506
- return [3 /*break*/, 3];
3507
- case 6: return [2 /*return*/];
3508
- }
3509
- });
3510
- });
3511
- }
3512
- var api, view, bookmark, items, enabledItemIds, renderedItemIds, i;
3513
- return __generator(this, function (_e) {
3514
- switch (_e.label) {
3515
- case 0:
3516
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
3517
- return [4 /*yield*/, bruceModels.ProjectView.Get(api, viewId)];
3518
- case 1:
3519
- view = _e.sent();
3520
- return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, viewId, bookmarkId)];
3521
- case 2:
3522
- bookmark = _e.sent();
3523
- items = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.LayersMenu) !== null && _b !== void 0 ? _b : [];
3524
- enabledItemIds = (_d = (_c = bookmark.Settings) === null || _c === void 0 ? void 0 : _c.selectedItemIds) !== null && _d !== void 0 ? _d : [];
3525
- renderedItemIds = [];
3526
- i = 0;
3527
- _e.label = 3;
3528
- case 3:
3529
- if (!(i < items.length)) return [3 /*break*/, 6];
3530
- return [4 /*yield*/, traverseItems(items[i])];
3531
- case 4:
3532
- _e.sent();
3533
- _e.label = 5;
3534
- case 5:
3535
- i++;
3536
- return [3 /*break*/, 3];
3537
- case 6: return [2 /*return*/, renderedItemIds];
3538
- }
3539
- });
3540
- });
3541
- }
3542
- RenderHelper.RenderBookmarkItems = RenderBookmarkItems;
3543
3476
  function RenderMenuItems(params, menuItems) {
3544
3477
  return __awaiter(this, void 0, void 0, function () {
3545
3478
  var renderedItemIds, i, menuItem, itemId;
@@ -3575,7 +3508,7 @@
3575
3508
  return __generator(this, function (_a) {
3576
3509
  switch (_a.label) {
3577
3510
  case 0:
3578
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
3511
+ api = params.apiGetter.getApi();
3579
3512
  return [4 /*yield*/, bruceModels.Tileset.Get(api, tilesetId)];
3580
3513
  case 1:
3581
3514
  tileset = _a.sent();
@@ -3602,9 +3535,101 @@
3602
3535
  });
3603
3536
  }
3604
3537
  RenderHelper.RenderTileset = RenderTileset;
3538
+ function RenderBookmarkItems(params, viewId, bookmarkId) {
3539
+ return __awaiter(this, void 0, void 0, function () {
3540
+ var api, view, bookmark, enabledIds, menuItems, version, vSettings, bSettings, vSettings, bSettings, renderedItemIds, traverseItems_1, i;
3541
+ var _this = this;
3542
+ return __generator(this, function (_a) {
3543
+ switch (_a.label) {
3544
+ case 0:
3545
+ api = params.apiGetter.getApi();
3546
+ return [4 /*yield*/, bruceModels.ProjectView.Get(api, viewId)];
3547
+ case 1:
3548
+ view = _a.sent();
3549
+ return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, viewId, bookmarkId)];
3550
+ case 2:
3551
+ bookmark = _a.sent();
3552
+ if (view.DataVersion != bookmark.DataVersion) {
3553
+ throw new Error("View and bookmark settings version mismatch.");
3554
+ }
3555
+ enabledIds = [];
3556
+ menuItems = [];
3557
+ version = view.DataVersion;
3558
+ if (view.Settings && bookmark.Settings) {
3559
+ if (version === 2) {
3560
+ vSettings = view.Settings;
3561
+ bSettings = bookmark.Settings;
3562
+ menuItems = vSettings.menuItems;
3563
+ enabledIds = bSettings.menuItemIds;
3564
+ }
3565
+ else {
3566
+ vSettings = view.Settings;
3567
+ bSettings = bookmark.Settings;
3568
+ menuItems = vSettings.LayersMenu;
3569
+ enabledIds = bSettings.selectedItemIds;
3570
+ }
3571
+ }
3572
+ renderedItemIds = [];
3573
+ if (!((menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) && (enabledIds === null || enabledIds === void 0 ? void 0 : enabledIds.length))) return [3 /*break*/, 6];
3574
+ traverseItems_1 = function (item) { return __awaiter(_this, void 0, void 0, function () {
3575
+ var itemId, i;
3576
+ return __generator(this, function (_a) {
3577
+ switch (_a.label) {
3578
+ case 0:
3579
+ if (!enabledIds.includes(item.id)) return [3 /*break*/, 2];
3580
+ return [4 /*yield*/, params.manager.RenderItem({
3581
+ item: item,
3582
+ apiGetter: params.apiGetter
3583
+ })];
3584
+ case 1:
3585
+ itemId = _a.sent();
3586
+ renderedItemIds.push(itemId);
3587
+ _a.label = 2;
3588
+ case 2:
3589
+ if (!item.Children) return [3 /*break*/, 6];
3590
+ i = 0;
3591
+ _a.label = 3;
3592
+ case 3:
3593
+ if (!(i < item.Children.length)) return [3 /*break*/, 6];
3594
+ return [4 /*yield*/, traverseItems_1(item.Children[i])];
3595
+ case 4:
3596
+ _a.sent();
3597
+ _a.label = 5;
3598
+ case 5:
3599
+ i++;
3600
+ return [3 /*break*/, 3];
3601
+ case 6: return [2 /*return*/];
3602
+ }
3603
+ });
3604
+ }); };
3605
+ i = 0;
3606
+ _a.label = 3;
3607
+ case 3:
3608
+ if (!(i < menuItems.length)) return [3 /*break*/, 6];
3609
+ return [4 /*yield*/, traverseItems_1(menuItems[i])];
3610
+ case 4:
3611
+ _a.sent();
3612
+ _a.label = 5;
3613
+ case 5:
3614
+ i++;
3615
+ return [3 /*break*/, 3];
3616
+ case 6: return [2 /*return*/, renderedItemIds];
3617
+ }
3618
+ });
3619
+ });
3620
+ }
3621
+ RenderHelper.RenderBookmarkItems = RenderBookmarkItems;
3605
3622
  })(exports.RenderHelper || (exports.RenderHelper = {}));
3606
3623
 
3624
+ var DEFAULT_BING_KEY = "AqL0uYT5T84jiJeX55_b9zJeeP3MX2p1WLOHH4ljIEPZ7ZL2M81bYLzyYeSwuzzl";
3625
+ var DEFAULT_MAPBOX_KEY = "pk.eyJ1IjoiYWxleHRodW5kZXIiLCJhIjoiY2psbHJxbnN5MTBvbzNxczZwMHNpeTI0MCJ9.fdoj2QW_7n8RV4e0NCFgZA";
3607
3626
  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;
3627
+ /**
3628
+ * Prepares a legacy imagery name for comparison.
3629
+ * Legacy data did not have ids... we do what we can.
3630
+ * @param name
3631
+ * @returns
3632
+ */
3608
3633
  function prepLegacyName(name) {
3609
3634
  if (!name) {
3610
3635
  return "";
@@ -3617,26 +3642,68 @@
3617
3642
  }
3618
3643
  return name;
3619
3644
  }
3620
- var EDefaultTerrain;
3621
- (function (EDefaultTerrain) {
3622
- EDefaultTerrain["CesiumWorldTerrain"] = "cesiumworldterrain";
3623
- EDefaultTerrain["Linz"] = "linz";
3624
- EDefaultTerrain["FlatTerrain"] = "flatterrain";
3625
- })(EDefaultTerrain || (EDefaultTerrain = {}));
3626
- var DEFAULT_TERRAIN_NAMES = [
3627
- EDefaultTerrain.CesiumWorldTerrain,
3628
- EDefaultTerrain.Linz,
3629
- EDefaultTerrain.FlatTerrain
3630
- ];
3631
- function isDefaultTerrain(name) {
3645
+ /**
3646
+ * Constructs an terrain provider for a default terrain type.
3647
+ * Warning: This does not add it to the viewer.
3648
+ * @param id
3649
+ * @returns
3650
+ */
3651
+ function renderDefaultTerrTile(id) {
3652
+ var provider;
3653
+ switch (id) {
3654
+ case bruceModels.ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain:
3655
+ provider = Cesium.createWorldTerrain({
3656
+ requestVertexNormals: true,
3657
+ requestWaterMask: false
3658
+ });
3659
+ break;
3660
+ case bruceModels.ProjectViewTile.EDefaultTerrain.FlatTerrain:
3661
+ provider = new Cesium.EllipsoidTerrainProvider();
3662
+ break;
3663
+ case bruceModels.ProjectViewTile.EDefaultTerrain.LINZ:
3664
+ provider = new Cesium.CesiumTerrainProvider({
3665
+ url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
3666
+ requestVertexNormals: true,
3667
+ });
3668
+ break;
3669
+ }
3670
+ return provider;
3671
+ }
3672
+ /**
3673
+ * Maps a legacy terrain's name to a default terrain id.
3674
+ * @param name
3675
+ * @returns
3676
+ */
3677
+ function legacyTerrIdToDefaultId(name) {
3632
3678
  name = prepLegacyName(name);
3633
- return DEFAULT_TERRAIN_NAMES.includes(name);
3679
+ switch (name) {
3680
+ case "cesiumworldterrain":
3681
+ return bruceModels.ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain;
3682
+ case "linz":
3683
+ return bruceModels.ProjectViewTile.EDefaultTerrain.LINZ;
3684
+ case "flatterrain":
3685
+ return bruceModels.ProjectViewTile.EDefaultTerrain.FlatTerrain;
3686
+ }
3687
+ }
3688
+ /**
3689
+ * Returns if a given legacy terrain's name correspondings to a default source.
3690
+ * @param name
3691
+ * @returns
3692
+ */
3693
+ function isLegacyTerrainDefault(name) {
3694
+ name = legacyTerrIdToDefaultId(name);
3695
+ return bruceModels.ProjectViewTile.DefaultTerrains.find(function (x) { return x.id == name; }) != null;
3634
3696
  }
3635
- function createTerrainBId(source) {
3697
+ /**
3698
+ * Returns a best attempt at a unique id from a given legacy terrain source.
3699
+ * @param source
3700
+ * @returns
3701
+ */
3702
+ function createLegacyTerrId(source) {
3636
3703
  if (!source) {
3637
3704
  return "";
3638
3705
  }
3639
- if (isDefaultTerrain(source.Name)) {
3706
+ if (isLegacyTerrainDefault(source.Name)) {
3640
3707
  return source.Name;
3641
3708
  }
3642
3709
  if (source.SourceUrl) {
@@ -3644,11 +3711,16 @@
3644
3711
  }
3645
3712
  return "";
3646
3713
  }
3647
- function createImageryBId(source) {
3714
+ /**
3715
+ * Returns a best attempt at a unique id from a given legacy imagery source.
3716
+ * @param source
3717
+ * @returns
3718
+ */
3719
+ function createLegacyImageryId(source) {
3648
3720
  if (!source) {
3649
3721
  return "";
3650
3722
  }
3651
- if (isDefaultImagery(source.Name)) {
3723
+ if (isLegacyImageryDefault(source.Name)) {
3652
3724
  return source.Name;
3653
3725
  }
3654
3726
  if (source.SourceUrl) {
@@ -3656,43 +3728,11 @@
3656
3728
  }
3657
3729
  return "";
3658
3730
  }
3659
- var EDefaultImagery;
3660
- (function (EDefaultImagery) {
3661
- EDefaultImagery["BingMapsAerial"] = "bingmapsaerial";
3662
- EDefaultImagery["BingMapsAerialWithLabels"] = "bingmapsaerialwithlabels";
3663
- EDefaultImagery["BingMapsRoads"] = "bingmapsroads";
3664
- EDefaultImagery["MapboxSatellite"] = "mapboxsatellite";
3665
- EDefaultImagery["MapBoxStreets"] = "mapboxstreets";
3666
- EDefaultImagery["MapBoxStreetsClassic"] = "mapboxstreetsclassic";
3667
- EDefaultImagery["EsriWorldImagery"] = "esriworldimagery";
3668
- EDefaultImagery["EsriWorldStreetMap"] = "esriworldstreetmap";
3669
- EDefaultImagery["EsriNationalGeographic"] = "esrinationalgeographic";
3670
- EDefaultImagery["OpenStreetMap"] = "openstreetmap";
3671
- EDefaultImagery["StamenWaterColor"] = "stamenwatercolor";
3672
- EDefaultImagery["StamenToner"] = "stamentoner";
3673
- EDefaultImagery["Grid"] = "grid";
3674
- })(EDefaultImagery || (EDefaultImagery = {}));
3675
- var DEFAULT_IMAGERY_NAMES = [
3676
- EDefaultImagery.BingMapsAerial,
3677
- EDefaultImagery.BingMapsAerialWithLabels,
3678
- EDefaultImagery.BingMapsRoads,
3679
- EDefaultImagery.MapboxSatellite,
3680
- EDefaultImagery.MapBoxStreets,
3681
- EDefaultImagery.MapBoxStreetsClassic,
3682
- EDefaultImagery.EsriWorldImagery,
3683
- EDefaultImagery.EsriWorldStreetMap,
3684
- EDefaultImagery.EsriNationalGeographic,
3685
- EDefaultImagery.OpenStreetMap,
3686
- EDefaultImagery.StamenWaterColor,
3687
- EDefaultImagery.StamenToner,
3688
- EDefaultImagery.Grid
3689
- ];
3690
- function isDefaultImagery(name) {
3691
- name = prepLegacyName(name);
3692
- return DEFAULT_IMAGERY_NAMES.includes(name);
3693
- }
3694
- var DEFAULT_BING_KEY = "AqL0uYT5T84jiJeX55_b9zJeeP3MX2p1WLOHH4ljIEPZ7ZL2M81bYLzyYeSwuzzl";
3695
- var DEFAULT_MAPBOX_KEY = "pk.eyJ1IjoiYWxleHRodW5kZXIiLCJhIjoiY2psbHJxbnN5MTBvbzNxczZwMHNpeTI0MCJ9.fdoj2QW_7n8RV4e0NCFgZA";
3731
+ /**
3732
+ * Turns Cesium collection of enabled imageries into an array.
3733
+ * @param viewer
3734
+ * @returns
3735
+ */
3696
3736
  function gatherEnabledImageries(viewer) {
3697
3737
  var collection = viewer.imageryLayers;
3698
3738
  var layers = [];
@@ -3702,6 +3742,154 @@
3702
3742
  }
3703
3743
  return layers;
3704
3744
  }
3745
+ /**
3746
+ * Constructs an imagery provider for a default imagery type.
3747
+ * Warning: This does not add it to the viewer.
3748
+ * @param id
3749
+ * @returns
3750
+ */
3751
+ function renderDefaultMapTile(id) {
3752
+ var provider;
3753
+ switch (id) {
3754
+ case bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerial:
3755
+ // TODO: Read account key if available.
3756
+ provider = new Cesium.BingMapsImageryProvider({
3757
+ url: "https://dev.virtualearth.net",
3758
+ mapStyle: Cesium.BingMapsStyle.AERIAL,
3759
+ key: DEFAULT_BING_KEY
3760
+ });
3761
+ break;
3762
+ case bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels:
3763
+ // TODO: Read account key if available.
3764
+ provider = new Cesium.BingMapsImageryProvider({
3765
+ url: "https://dev.virtualearth.net",
3766
+ mapStyle: Cesium.BingMapsStyle.AERIAL_WITH_LABELS,
3767
+ key: DEFAULT_BING_KEY
3768
+ });
3769
+ break;
3770
+ case bruceModels.ProjectViewTile.EDefaultImagery.BingMapsRoads:
3771
+ // TODO: Read account key if available.
3772
+ provider = new Cesium.BingMapsImageryProvider({
3773
+ url: "https://dev.virtualearth.net",
3774
+ mapStyle: Cesium.BingMapsStyle.ROAD_ON_DEMAND,
3775
+ key: DEFAULT_BING_KEY
3776
+ });
3777
+ break;
3778
+ case bruceModels.ProjectViewTile.EDefaultImagery.MapboxSatellite:
3779
+ // TODO: Read account key if available.
3780
+ provider = new Cesium.MapboxImageryProvider({
3781
+ mapId: "mapbox.satellite",
3782
+ accessToken: DEFAULT_MAPBOX_KEY
3783
+ });
3784
+ break;
3785
+ case bruceModels.ProjectViewTile.EDefaultImagery.MapBoxStreets:
3786
+ // TODO: Read account key if available.
3787
+ provider = new Cesium.MapboxImageryProvider({
3788
+ mapId: "satellite-streets-v11",
3789
+ accessToken: DEFAULT_MAPBOX_KEY
3790
+ });
3791
+ break;
3792
+ case bruceModels.ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic:
3793
+ // TODO: Read account key if available.
3794
+ provider = new Cesium.MapboxImageryProvider({
3795
+ mapId: "streets-v11",
3796
+ accessToken: DEFAULT_MAPBOX_KEY
3797
+ });
3798
+ break;
3799
+ case bruceModels.ProjectViewTile.EDefaultImagery.EsriWorldImagery:
3800
+ provider = new Cesium.ArcGisMapServerImageryProvider({
3801
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
3802
+ enablePickFeatures: false
3803
+ });
3804
+ break;
3805
+ case bruceModels.ProjectViewTile.EDefaultImagery.EsriWorldStreetMap:
3806
+ provider = new Cesium.ArcGisMapServerImageryProvider({
3807
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
3808
+ enablePickFeatures: false
3809
+ });
3810
+ break;
3811
+ case bruceModels.ProjectViewTile.EDefaultImagery.EsriNationalGeographic:
3812
+ provider = new Cesium.ArcGisMapServerImageryProvider({
3813
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
3814
+ enablePickFeatures: false
3815
+ });
3816
+ break;
3817
+ case bruceModels.ProjectViewTile.EDefaultImagery.OpenStreetMap:
3818
+ provider = new Cesium.OpenStreetMapImageryProvider({
3819
+ url: "https://a.tile.openstreetmap.org/"
3820
+ });
3821
+ break;
3822
+ case bruceModels.ProjectViewTile.EDefaultImagery.StamenWaterColor:
3823
+ provider = new Cesium.OpenStreetMapImageryProvider({
3824
+ url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
3825
+ });
3826
+ break;
3827
+ case bruceModels.ProjectViewTile.EDefaultImagery.StamenToner:
3828
+ provider = new Cesium.OpenStreetMapImageryProvider({
3829
+ url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
3830
+ });
3831
+ break;
3832
+ case bruceModels.ProjectViewTile.EDefaultImagery.Grid:
3833
+ provider = new Cesium.GridImageryProvider({
3834
+ tilingScheme: new Cesium.GeographicTilingScheme(),
3835
+ cells: 0,
3836
+ color: Cesium.Color.fromCssColorString("rgb(97, 151, 237)"),
3837
+ glowColor: Cesium.Color.fromCssColorString("rgb(54, 54, 54)"),
3838
+ glowWidth: 4,
3839
+ backgroundColor: Cesium.Color.TRANSPARENT,
3840
+ tileWidth: 256,
3841
+ tileHeight: 256,
3842
+ canvasSize: 256
3843
+ });
3844
+ break;
3845
+ }
3846
+ return provider;
3847
+ }
3848
+ /**
3849
+ * Maps a legacy imagery's name to a default imagery id.
3850
+ * @param name
3851
+ * @returns
3852
+ */
3853
+ function legacyMapIdToDefaultId(name) {
3854
+ name = prepLegacyName(name);
3855
+ switch (name) {
3856
+ case "bingmapsaerial":
3857
+ return bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerial;
3858
+ case "bingmapsaerialwithlabels":
3859
+ return bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels;
3860
+ case "bingmapsroads":
3861
+ return bruceModels.ProjectViewTile.EDefaultImagery.BingMapsRoads;
3862
+ case "mapboxsatellite":
3863
+ return bruceModels.ProjectViewTile.EDefaultImagery.MapboxSatellite;
3864
+ case "mapboxstreets":
3865
+ return bruceModels.ProjectViewTile.EDefaultImagery.MapBoxStreets;
3866
+ case "mapboxstreetsclassic":
3867
+ return bruceModels.ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic;
3868
+ case "esriworldimagery":
3869
+ return bruceModels.ProjectViewTile.EDefaultImagery.EsriWorldImagery;
3870
+ case "esriworldstreetmap":
3871
+ return bruceModels.ProjectViewTile.EDefaultImagery.EsriWorldStreetMap;
3872
+ case "esrinationalgeographic":
3873
+ return bruceModels.ProjectViewTile.EDefaultImagery.EsriNationalGeographic;
3874
+ case "openstreetmap":
3875
+ return bruceModels.ProjectViewTile.EDefaultImagery.OpenStreetMap;
3876
+ case "stamenwatercolor":
3877
+ return bruceModels.ProjectViewTile.EDefaultImagery.StamenWaterColor;
3878
+ case "stamentoner":
3879
+ return bruceModels.ProjectViewTile.EDefaultImagery.StamenToner;
3880
+ case "grid":
3881
+ return bruceModels.ProjectViewTile.EDefaultImagery.Grid;
3882
+ }
3883
+ }
3884
+ /**
3885
+ * Returns if a given legacy imagery's name correspondings to a default source.
3886
+ * @param name
3887
+ * @returns
3888
+ */
3889
+ function isLegacyImageryDefault(name) {
3890
+ name = legacyMapIdToDefaultId(name);
3891
+ return bruceModels.ProjectViewTile.DefaultImagery.find(function (x) { return x.id == name; }) != null;
3892
+ }
3705
3893
  (function (TileRenderEngine) {
3706
3894
  /**
3707
3895
  * Legacy data did name comparisons instead of ids.
@@ -3717,479 +3905,750 @@
3717
3905
  TileRenderEngine.CompareLegacyNames = CompareLegacyNames;
3718
3906
  var Map;
3719
3907
  (function (Map) {
3720
- function Render(params) {
3721
- throw ("Not implemented");
3722
- }
3723
- Map.Render = Render;
3724
- function RenderLegacy(params) {
3725
- var enabled = gatherEnabledImageries(params.viewer);
3726
- var tile = params.data;
3727
- var bId = createImageryBId(tile);
3728
- var layer = enabled.find(function (x) { return x._bId == bId; });
3729
- if (layer) ;
3730
- else if (isDefaultImagery(tile.Name)) {
3731
- var provider = null;
3732
- // TODO: Rest of defaults.
3733
- // TODO: Should be enum.
3734
- switch (prepLegacyName(tile.Name)) {
3735
- case EDefaultImagery.BingMapsAerial:
3736
- // TODO: Read account key if available.
3737
- provider = new Cesium.BingMapsImageryProvider({
3738
- url: "https://dev.virtualearth.net",
3739
- mapStyle: Cesium.BingMapsStyle.AERIAL,
3740
- key: DEFAULT_BING_KEY
3741
- });
3742
- break;
3743
- case EDefaultImagery.BingMapsAerialWithLabels:
3744
- // TODO: Read account key if available.
3745
- provider = new Cesium.BingMapsImageryProvider({
3746
- url: "https://dev.virtualearth.net",
3747
- mapStyle: Cesium.BingMapsStyle.AERIAL_WITH_LABELS,
3748
- key: DEFAULT_BING_KEY
3749
- });
3750
- break;
3751
- case EDefaultImagery.BingMapsRoads:
3752
- // TODO: Read account key if available.
3753
- provider = new Cesium.BingMapsImageryProvider({
3754
- url: "https://dev.virtualearth.net",
3755
- mapStyle: Cesium.BingMapsStyle.ROAD_ON_DEMAND,
3756
- key: DEFAULT_BING_KEY
3757
- });
3758
- break;
3759
- case EDefaultImagery.MapboxSatellite:
3760
- // TODO: Read account key if available.
3761
- provider = new Cesium.MapboxImageryProvider({
3762
- mapId: "mapbox.satellite",
3763
- accessToken: DEFAULT_MAPBOX_KEY
3764
- });
3765
- break;
3766
- case EDefaultImagery.MapBoxStreets:
3767
- // TODO: Read account key if available.
3768
- provider = new Cesium.MapboxImageryProvider({
3769
- mapId: "satellite-streets-v11",
3770
- accessToken: DEFAULT_MAPBOX_KEY
3771
- });
3772
- break;
3773
- case EDefaultImagery.MapBoxStreetsClassic:
3774
- // TODO: Read account key if available.
3775
- provider = new Cesium.MapboxImageryProvider({
3776
- mapId: "streets-v11",
3777
- accessToken: DEFAULT_MAPBOX_KEY
3778
- });
3779
- break;
3780
- case EDefaultImagery.EsriWorldImagery:
3781
- provider = new Cesium.ArcGisMapServerImageryProvider({
3782
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
3783
- enablePickFeatures: false
3784
- });
3785
- break;
3786
- case EDefaultImagery.EsriWorldStreetMap:
3787
- provider = new Cesium.ArcGisMapServerImageryProvider({
3788
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
3789
- enablePickFeatures: false
3790
- });
3791
- break;
3792
- case EDefaultImagery.EsriNationalGeographic:
3793
- provider = new Cesium.ArcGisMapServerImageryProvider({
3794
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
3795
- enablePickFeatures: false
3796
- });
3797
- break;
3798
- case EDefaultImagery.OpenStreetMap:
3799
- provider = new Cesium.OpenStreetMapImageryProvider({
3800
- url: "https://a.tile.openstreetmap.org/"
3801
- });
3802
- break;
3803
- case EDefaultImagery.StamenWaterColor:
3804
- provider = new Cesium.OpenStreetMapImageryProvider({
3805
- url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
3806
- });
3807
- break;
3808
- case EDefaultImagery.StamenToner:
3809
- provider = new Cesium.OpenStreetMapImageryProvider({
3810
- url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
3811
- });
3812
- break;
3813
- case EDefaultImagery.Grid:
3814
- provider = new Cesium.GridImageryProvider({
3815
- tilingScheme: new Cesium.GeographicTilingScheme(),
3816
- cells: 0,
3817
- color: Cesium.Color.fromCssColorString("rgb(97, 151, 237)"),
3818
- glowColor: Cesium.Color.fromCssColorString("rgb(54, 54, 54)"),
3819
- glowWidth: 4,
3820
- backgroundColor: Cesium.Color.TRANSPARENT,
3821
- tileWidth: 256,
3822
- tileHeight: 256,
3823
- canvasSize: 256
3824
- });
3825
- break;
3826
- }
3827
- if (provider) {
3828
- layer = new Cesium.ImageryLayer(provider);
3829
- }
3830
- }
3831
- else if (tile.SourceUrl) {
3832
- var provider = null;
3833
- var min = tile.Minimum;
3834
- var max = tile.Maximum;
3835
- if (min != undefined && min <= -1) {
3836
- min = undefined;
3837
- }
3838
- if (max != undefined && max <= -1) {
3839
- max = undefined;
3840
- }
3841
- switch (tile.Type) {
3842
- case "BruceImagery":
3843
- provider = new Cesium.UrlTemplateImageryProvider({
3844
- url: tile.SourceUrl,
3845
- tileHeight: 256,
3846
- tileWidth: 256
3847
- });
3848
- break;
3849
- case "ArcGisImagery":
3850
- provider = new Cesium.OpenStreetMapImageryProvider({
3851
- url: tile.SourceUrl,
3852
- fileExtension: tile.FileExtension,
3853
- minimumLevel: min,
3854
- maximumLevel: max
3855
- });
3856
- break;
3857
- case "TileMapImagery":
3858
- provider = new Cesium.TileMapServiceImageryProvider({
3859
- url: tile.SourceUrl,
3860
- fileExtension: tile.FileExtension,
3861
- minimumLevel: min,
3862
- maximumLevel: max
3863
- });
3864
- break;
3865
- case "OpenStreetMapImagery":
3866
- provider = new Cesium.OpenStreetMapImageryProvider({
3867
- url: tile.SourceUrl,
3868
- fileExtension: tile.FileExtension,
3869
- minimumLevel: min,
3870
- maximumLevel: max
3871
- });
3872
- break;
3873
- case "MapBoxImagery":
3874
- // TODO: Read default account key when missing.
3875
- provider = new Cesium.UrlTemplateImageryProvider({
3876
- url: "https://api.mapbox.com/styles/v1/"
3877
- + tile.MapBoxUsername + "/" + tile.MapBoxID +
3878
- "/tiles/256/{z}/{x}/{y}?access_token="
3879
- + tile.ProgramKey
3880
- });
3881
- break;
3908
+ var V1;
3909
+ (function (V1) {
3910
+ function Render(params) {
3911
+ var enabled = gatherEnabledImageries(params.viewer);
3912
+ var tile = params.data;
3913
+ var bId = createLegacyImageryId(tile);
3914
+ var layer = enabled.find(function (x) { return x._bId == bId; });
3915
+ if (layer) ;
3916
+ else if (isLegacyImageryDefault(tile.Name)) {
3917
+ var defaultId = legacyMapIdToDefaultId(tile.Name);
3918
+ var provider = renderDefaultMapTile(defaultId);
3919
+ if (provider) {
3920
+ layer = new Cesium.ImageryLayer(provider);
3921
+ }
3882
3922
  }
3883
- if (provider) {
3884
- layer = new Cesium.ImageryLayer(provider);
3923
+ else if (tile.SourceUrl) {
3924
+ var provider = null;
3925
+ var min = tile.Minimum;
3926
+ var max = tile.Maximum;
3927
+ if (min != undefined && min <= -1) {
3928
+ min = undefined;
3929
+ }
3930
+ if (max != undefined && max <= -1) {
3931
+ max = undefined;
3932
+ }
3933
+ switch (tile.Type) {
3934
+ case "BruceImagery":
3935
+ provider = new Cesium.UrlTemplateImageryProvider({
3936
+ url: tile.SourceUrl,
3937
+ tileHeight: 256,
3938
+ tileWidth: 256
3939
+ });
3940
+ break;
3941
+ case "ArcGisImagery":
3942
+ provider = new Cesium.OpenStreetMapImageryProvider({
3943
+ url: tile.SourceUrl,
3944
+ fileExtension: tile.FileExtension,
3945
+ minimumLevel: min,
3946
+ maximumLevel: max
3947
+ });
3948
+ break;
3949
+ case "TileMapImagery":
3950
+ provider = new Cesium.TileMapServiceImageryProvider({
3951
+ url: tile.SourceUrl,
3952
+ fileExtension: tile.FileExtension,
3953
+ minimumLevel: min,
3954
+ maximumLevel: max
3955
+ });
3956
+ break;
3957
+ case "OpenStreetMapImagery":
3958
+ provider = new Cesium.OpenStreetMapImageryProvider({
3959
+ url: tile.SourceUrl,
3960
+ fileExtension: tile.FileExtension,
3961
+ minimumLevel: min,
3962
+ maximumLevel: max
3963
+ });
3964
+ break;
3965
+ case "MapBoxImagery":
3966
+ // TODO: Read default account key when missing.
3967
+ provider = new Cesium.UrlTemplateImageryProvider({
3968
+ url: "https://api.mapbox.com/styles/v1/"
3969
+ + tile.MapBoxUsername + "/" + tile.MapBoxID +
3970
+ "/tiles/256/{z}/{x}/{y}?access_token="
3971
+ + tile.ProgramKey
3972
+ });
3973
+ break;
3974
+ }
3975
+ if (provider) {
3976
+ layer = new Cesium.ImageryLayer(provider);
3977
+ }
3885
3978
  }
3886
- }
3887
- if (layer) {
3888
- layer._bId = bId;
3889
- layer._bName = tile.Name;
3890
- if (!params.viewer.imageryLayers.contains(layer)) {
3891
- params.viewer.imageryLayers.add(layer);
3979
+ if (layer) {
3980
+ layer._bId = bId;
3981
+ layer._bName = tile.Name;
3982
+ if (!params.viewer.imageryLayers.contains(layer)) {
3983
+ params.viewer.imageryLayers.add(layer);
3984
+ }
3892
3985
  }
3986
+ return layer;
3893
3987
  }
3894
- return layer;
3895
- }
3896
- Map.RenderLegacy = RenderLegacy;
3897
- function RenderLegacyView(params) {
3898
- var _a, _b, _c, _d, _e;
3899
- return __awaiter(this, void 0, void 0, function () {
3900
- var api, view, bookmark, data, dataNames, i, source, tiles, i, name_1, j, tile, enabled, layers, _loop_1, i, i, tile, layer, i, layer;
3901
- return __generator(this, function (_f) {
3902
- switch (_f.label) {
3903
- case 0:
3904
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
3905
- return [4 /*yield*/, bruceModels.ProjectView.Get(api, params.viewId)];
3906
- case 1:
3907
- view = _f.sent();
3908
- bookmark = null;
3909
- if (!params.bookmarkId) return [3 /*break*/, 3];
3910
- return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
3911
- case 2:
3912
- bookmark = _f.sent();
3913
- _f.label = 3;
3914
- case 3:
3915
- data = [];
3916
- dataNames = [];
3917
- if ((_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _a === void 0 ? void 0 : _a.imagery) {
3918
- for (i = 0; i < bookmark.Settings.imagery.length; i++) {
3919
- source = bookmark.Settings.imagery[i];
3920
- dataNames.push(source.title);
3988
+ V1.Render = Render;
3989
+ function RenderView(params) {
3990
+ var _a;
3991
+ return __awaiter(this, void 0, void 0, function () {
3992
+ 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;
3993
+ return __generator(this, function (_b) {
3994
+ switch (_b.label) {
3995
+ case 0:
3996
+ api = params.apiGetter.getApi();
3997
+ return [4 /*yield*/, bruceModels.ProjectView.Get(api, params.viewId)];
3998
+ case 1:
3999
+ view = _b.sent();
4000
+ bookmark = null;
4001
+ if (!params.bookmarkId) return [3 /*break*/, 3];
4002
+ return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4003
+ case 2:
4004
+ bookmark = (_b.sent());
4005
+ _b.label = 3;
4006
+ case 3:
4007
+ vSettings = view.Settings;
4008
+ bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
4009
+ data = [];
4010
+ dataNames = [];
4011
+ if (bSettings === null || bSettings === void 0 ? void 0 : bSettings.imagery) {
4012
+ for (i = 0; i < bSettings.imagery.length; i++) {
4013
+ source = bSettings.imagery[i];
4014
+ dataNames.push(source.title);
4015
+ }
3921
4016
  }
3922
- }
3923
- else if ((_b = view.Settings) === null || _b === void 0 ? void 0 : _b.DefaultMapTiles) {
3924
- dataNames.push(view.Settings.DefaultMapTiles);
3925
- }
3926
- tiles = (_d = (_c = view.Settings) === null || _c === void 0 ? void 0 : _c.CesiumMapSources) !== null && _d !== void 0 ? _d : [];
3927
- return [4 /*yield*/, bruceModels.ProjectViewTileSource.MergeMapTemplateData(params.apiGetter, tiles, ((_e = view.Settings) === null || _e === void 0 ? void 0 : _e.CesiumMapSources) == null)];
3928
- case 4:
3929
- _f.sent();
3930
- for (i = 0; i < dataNames.length; i++) {
3931
- name_1 = dataNames[i];
3932
- for (j = 0; j < tiles.length; j++) {
3933
- tile = tiles[j];
3934
- if (CompareLegacyNames(tile.Name, name_1)) {
3935
- data.push(tile);
3936
- break;
4017
+ else if (vSettings === null || vSettings === void 0 ? void 0 : vSettings.DefaultMapTiles) {
4018
+ dataNames.push(vSettings.DefaultMapTiles);
4019
+ }
4020
+ tiles = (_a = vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumMapSources) !== null && _a !== void 0 ? _a : [];
4021
+ return [4 /*yield*/, bruceModels.ProjectViewLegacyTile.MergeMapTemplateData(params.apiGetter, tiles, (vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumMapSources) == null)];
4022
+ case 4:
4023
+ _b.sent();
4024
+ for (i = 0; i < dataNames.length; i++) {
4025
+ name_1 = dataNames[i];
4026
+ for (j = 0; j < tiles.length; j++) {
4027
+ tile = tiles[j];
4028
+ if (CompareLegacyNames(tile.Name, name_1)) {
4029
+ data.push(tile);
4030
+ break;
4031
+ }
3937
4032
  }
3938
4033
  }
3939
- }
3940
- enabled = gatherEnabledImageries(params.viewer);
3941
- layers = [];
3942
- // Gather layers we want to render.
3943
- // Any new layer is added to viewer at the bottom.
3944
- if (params.ignoreIds) {
3945
- _loop_1 = function (i) {
3946
- var id = params.ignoreIds[i];
3947
- var layer = enabled.find(function (x) {
3948
- var layer = x;
3949
- if (layer._bId === id) {
3950
- return true;
4034
+ enabled = gatherEnabledImageries(params.viewer);
4035
+ layers = [];
4036
+ // Gather layers we want to render.
4037
+ // Any new layer is added to viewer at the bottom.
4038
+ if (params.ignoreIds) {
4039
+ _loop_1 = function (i) {
4040
+ var id = params.ignoreIds[i];
4041
+ var layer = enabled.find(function (x) {
4042
+ var layer = x;
4043
+ if (layer._bId === id) {
4044
+ return true;
4045
+ }
4046
+ });
4047
+ if (layer) {
4048
+ layers.push(layer);
3951
4049
  }
4050
+ };
4051
+ for (i = 0; i < params.ignoreIds.length; i++) {
4052
+ _loop_1(i);
4053
+ }
4054
+ }
4055
+ for (i = 0; i < data.length; i++) {
4056
+ tile = data[i];
4057
+ layer = Render({
4058
+ apiGetter: params.apiGetter,
4059
+ viewer: params.viewer,
4060
+ data: tile,
3952
4061
  });
3953
4062
  if (layer) {
3954
4063
  layers.push(layer);
3955
4064
  }
3956
- };
3957
- for (i = 0; i < params.ignoreIds.length; i++) {
3958
- _loop_1(i);
3959
4065
  }
3960
- }
3961
- for (i = 0; i < data.length; i++) {
3962
- tile = data[i];
3963
- layer = RenderLegacy({
3964
- apiGetter: params.apiGetter,
3965
- viewer: params.viewer,
3966
- data: tile,
4066
+ // Sort currently enabled (after new ones added) to match desired order.
4067
+ enabled = gatherEnabledImageries(params.viewer);
4068
+ enabled.sort(function (a, b) {
4069
+ var indexA = layers.indexOf(a);
4070
+ var indexB = layers.indexOf(b);
4071
+ if (indexA < 0 && indexB < 0) {
4072
+ return 0;
4073
+ }
4074
+ if (indexA < 0) {
4075
+ return 1;
4076
+ }
4077
+ if (indexB < 0) {
4078
+ return -1;
4079
+ }
4080
+ return indexA - indexB;
3967
4081
  });
3968
- if (layer) {
3969
- layers.push(layer);
4082
+ // Move enabled layers to match desired order.
4083
+ // Remove any layers that aren't in enabled list.
4084
+ for (i = 0; i < enabled.length; i++) {
4085
+ layer = enabled[i];
4086
+ if (layers.includes(layer)) {
4087
+ params.viewer.imageryLayers.raiseToTop(layer);
4088
+ }
4089
+ else {
4090
+ params.viewer.imageryLayers.remove(layer);
4091
+ }
3970
4092
  }
3971
- }
3972
- // Sort currently enabled (after new ones added) to match desired order.
3973
- enabled = gatherEnabledImageries(params.viewer);
3974
- enabled.sort(function (a, b) {
3975
- var indexA = layers.indexOf(a);
3976
- var indexB = layers.indexOf(b);
3977
- if (indexA < 0 && indexB < 0) {
3978
- return 0;
4093
+ return [2 /*return*/];
4094
+ }
4095
+ });
4096
+ });
4097
+ }
4098
+ V1.RenderView = RenderView;
4099
+ })(V1 = Map.V1 || (Map.V1 = {}));
4100
+ var V2;
4101
+ (function (V2) {
4102
+ function GetOrCreateLayer(viewer, apiGetter, meta) {
4103
+ return __awaiter(this, void 0, void 0, function () {
4104
+ var defaultImg, provider, api, tileset, settings, layer;
4105
+ return __generator(this, function (_a) {
4106
+ switch (_a.label) {
4107
+ case 0:
4108
+ defaultImg = meta.accountId ? null : bruceModels.ProjectViewTile.DefaultImagery.find(function (x) { return x.id === meta.tilesetId; });
4109
+ provider = null;
4110
+ if (!defaultImg) return [3 /*break*/, 1];
4111
+ provider = renderDefaultMapTile(defaultImg.id);
4112
+ return [3 /*break*/, 3];
4113
+ case 1:
4114
+ api = apiGetter.getApi(meta.accountId);
4115
+ return [4 /*yield*/, bruceModels.Tileset.Get(api, meta.tilesetId)];
4116
+ case 2:
4117
+ tileset = _a.sent();
4118
+ if (tileset.type === bruceModels.Tileset.EType.GeoMap) {
4119
+ provider = new Cesium.TileMapServiceImageryProvider({
4120
+ url: bruceModels.Tileset.GetPublicFileUrl(api, meta.tilesetId, ""),
4121
+ fileExtension: ".png"
4122
+ });
3979
4123
  }
3980
- if (indexA < 0) {
3981
- return 1;
4124
+ else if (tileset.type === bruceModels.Tileset.EType.ExternalGeoMap) {
4125
+ settings = tileset.settings;
4126
+ switch (settings.mapType) {
4127
+ case bruceModels.TilesetExtMapTiles.EType.CesiumIon:
4128
+ provider = new Cesium.IonImageryProvider({
4129
+ assetId: settings.ionId,
4130
+ // TODO
4131
+ accessToken: null
4132
+ });
4133
+ break;
4134
+ case bruceModels.TilesetExtMapTiles.EType.MapBoxImagery:
4135
+ // TODO: Read default account key when missing.
4136
+ provider = new Cesium.UrlTemplateImageryProvider({
4137
+ url: "https://api.mapbox.com/styles/v1/"
4138
+ + settings.mapBoxAccount + "/" + settings.mapBoxStyleId +
4139
+ "/tiles/256/{z}/{x}/{y}?access_token="
4140
+ + settings.mapBoxKey
4141
+ });
4142
+ break;
4143
+ case bruceModels.TilesetExtMapTiles.EType.OpenStreetMapImagery:
4144
+ provider = new Cesium.OpenStreetMapImageryProvider({
4145
+ url: settings.url,
4146
+ fileExtension: settings.sourceExt
4147
+ });
4148
+ break;
4149
+ case bruceModels.TilesetExtMapTiles.EType.TileMapImagery:
4150
+ provider = new Cesium.TileMapServiceImageryProvider({
4151
+ url: settings.url,
4152
+ fileExtension: settings.sourceExt
4153
+ });
4154
+ break;
4155
+ }
3982
4156
  }
3983
- if (indexB < 0) {
3984
- return -1;
4157
+ else if (tileset.type === bruceModels.Tileset.EType.EntitiesMap) {
4158
+ provider = new Cesium.UrlTemplateImageryProvider({
4159
+ url: bruceModels.Tileset.GetPublicFileUrl(api, meta.tilesetId, "{z}/{x}/{y}.png"),
4160
+ tileHeight: 256,
4161
+ tileWidth: 256
4162
+ });
3985
4163
  }
3986
- return indexA - indexB;
3987
- });
3988
- // Move enabled layers to match desired order.
3989
- // Remove any layers that aren't in enabled list.
3990
- enabled = enabled.reverse();
3991
- for (i = 0; i < enabled.length; i++) {
3992
- layer = enabled[i];
3993
- if (layers.includes(layer)) {
3994
- params.viewer.imageryLayers.raiseToTop(layer);
4164
+ _a.label = 3;
4165
+ case 3:
4166
+ if (provider) {
4167
+ layer = viewer.imageryLayers.addImageryProvider(provider);
4168
+ layer._bMeta = meta;
4169
+ return [2 /*return*/, layer];
3995
4170
  }
3996
- else {
3997
- params.viewer.imageryLayers.remove(layer);
4171
+ return [2 /*return*/, null];
4172
+ }
4173
+ });
4174
+ });
4175
+ }
4176
+ V2.GetOrCreateLayer = GetOrCreateLayer;
4177
+ function Render(params) {
4178
+ return __awaiter(this, void 0, void 0, function () {
4179
+ var _loop_2, i, curEnabled, toDisable, curEnabledArr, _loop_3, i, i, _loop_4, i;
4180
+ return __generator(this, function (_a) {
4181
+ switch (_a.label) {
4182
+ case 0:
4183
+ _loop_2 = function (i) {
4184
+ var enabled, source;
4185
+ return __generator(this, function (_a) {
4186
+ switch (_a.label) {
4187
+ case 0:
4188
+ enabled = params.enabled[i];
4189
+ source = params.sources.find(function (x) { return x.accountId === enabled.accountId && x.tilesetId === enabled.tilesetId; });
4190
+ if (!source) {
4191
+ console.error("Missing source for enabled imagery.", enabled);
4192
+ }
4193
+ return [4 /*yield*/, GetOrCreateLayer(params.viewer, params.apiGetter, {
4194
+ accountId: source.accountId,
4195
+ tilesetId: source.tilesetId,
4196
+ })];
4197
+ case 1:
4198
+ _a.sent();
4199
+ return [2 /*return*/];
4200
+ }
4201
+ });
4202
+ };
4203
+ i = 0;
4204
+ _a.label = 1;
4205
+ case 1:
4206
+ if (!(i < params.enabled.length)) return [3 /*break*/, 4];
4207
+ return [5 /*yield**/, _loop_2(i)];
4208
+ case 2:
4209
+ _a.sent();
4210
+ _a.label = 3;
4211
+ case 3:
4212
+ i++;
4213
+ return [3 /*break*/, 1];
4214
+ case 4:
4215
+ curEnabled = params.viewer.imageryLayers;
4216
+ toDisable = [];
4217
+ curEnabledArr = [];
4218
+ _loop_3 = function (i) {
4219
+ var layer = curEnabled.get(i);
4220
+ var meta = layer === null || layer === void 0 ? void 0 : layer._bMeta;
4221
+ 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); });
4222
+ if (disable) {
4223
+ toDisable.push(layer);
4224
+ }
4225
+ else {
4226
+ curEnabledArr.push(layer);
4227
+ }
4228
+ };
4229
+ for (i = 0; i < curEnabled.length; i++) {
4230
+ _loop_3(i);
3998
4231
  }
3999
- }
4000
- return [2 /*return*/];
4001
- }
4232
+ for (i = 0; i < toDisable.length; i++) {
4233
+ params.viewer.imageryLayers.remove(toDisable[i]);
4234
+ }
4235
+ _loop_4 = function (i) {
4236
+ var enabled = params.enabled[i];
4237
+ 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; });
4238
+ if (layer) {
4239
+ params.viewer.imageryLayers.raiseToTop(layer);
4240
+ layer.alpha = Number(enabled.alpha);
4241
+ layer.brightness = Number(enabled.brightness);
4242
+ layer.contrast = Number(enabled.contrast);
4243
+ layer.hue = Number(enabled.hue);
4244
+ layer.saturation = Number(enabled.saturation);
4245
+ layer.gamma = Number(enabled.gamma);
4246
+ }
4247
+ };
4248
+ for (i = 0; i < params.enabled.length; i++) {
4249
+ _loop_4(i);
4250
+ }
4251
+ return [2 /*return*/];
4252
+ }
4253
+ });
4002
4254
  });
4003
- });
4004
- }
4005
- Map.RenderLegacyView = RenderLegacyView;
4255
+ }
4256
+ V2.Render = Render;
4257
+ })(V2 = Map.V2 || (Map.V2 = {}));
4006
4258
  })(Map = TileRenderEngine.Map || (TileRenderEngine.Map = {}));
4007
4259
  var Terrain;
4008
4260
  (function (Terrain) {
4009
- function Render(params) {
4010
- throw ("Not implemented");
4011
- }
4012
- Terrain.Render = Render;
4013
- function RenderLegacy(params) {
4014
- var _a;
4015
- var bId = createTerrainBId(params.data);
4016
- var curProvider = params.viewer.terrainProvider;
4017
- if (curProvider._bId && curProvider._bId === bId) {
4018
- return;
4019
- }
4020
- var provider = null;
4021
- if (isDefaultTerrain(params.data.Name)) {
4022
- var name_2 = prepLegacyName(params.data.Name);
4023
- switch (name_2) {
4024
- case EDefaultTerrain.CesiumWorldTerrain:
4025
- provider = Cesium.createWorldTerrain({
4026
- requestVertexNormals: true
4027
- });
4028
- break;
4029
- case EDefaultTerrain.Linz:
4030
- provider = new Cesium.CesiumTerrainProvider({
4031
- url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
4032
- requestVertexNormals: true
4033
- });
4034
- break;
4035
- case EDefaultTerrain.FlatTerrain:
4036
- provider = new Cesium.EllipsoidTerrainProvider();
4037
- break;
4261
+ var V1;
4262
+ (function (V1) {
4263
+ function Render(params) {
4264
+ var _a;
4265
+ var bId = createLegacyTerrId(params.data);
4266
+ var curProvider = params.viewer.terrainProvider;
4267
+ if (curProvider._bId && curProvider._bId === bId) {
4268
+ return;
4269
+ }
4270
+ var provider = null;
4271
+ if (isLegacyTerrainDefault(params.data.Name)) {
4272
+ var id = legacyTerrIdToDefaultId(params.data.Name);
4273
+ provider = renderDefaultTerrTile(id);
4274
+ }
4275
+ else if (params.data.SourceUrl) {
4276
+ provider = new Cesium.CesiumTerrainProvider({
4277
+ url: params.data.SourceUrl,
4278
+ requestWaterMask: params.data.RequestWaterMask,
4279
+ requestVertexNormals: true
4280
+ });
4281
+ }
4282
+ if (provider) {
4283
+ provider._bId = bId;
4284
+ provider._bName = (_a = params.data) === null || _a === void 0 ? void 0 : _a.Name;
4285
+ params.viewer.terrainProvider = provider;
4038
4286
  }
4039
4287
  }
4040
- else if (params.data.SourceUrl) {
4041
- provider = new Cesium.CesiumTerrainProvider({
4042
- url: params.data.SourceUrl,
4043
- requestWaterMask: params.data.RequestWaterMask,
4044
- requestVertexNormals: true
4288
+ V1.Render = Render;
4289
+ function RenderView(params) {
4290
+ var _a, _b;
4291
+ return __awaiter(this, void 0, void 0, function () {
4292
+ var api, view, bookmark, vSettings, bSettings, terrainTiles, terrainTile, terrainTileName, i, tile;
4293
+ return __generator(this, function (_c) {
4294
+ switch (_c.label) {
4295
+ case 0:
4296
+ api = params.apiGetter.getApi();
4297
+ return [4 /*yield*/, bruceModels.ProjectView.Get(api, params.viewId)];
4298
+ case 1:
4299
+ view = _c.sent();
4300
+ bookmark = null;
4301
+ if (!params.bookmarkId) return [3 /*break*/, 3];
4302
+ return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4303
+ case 2:
4304
+ bookmark = (_c.sent());
4305
+ _c.label = 3;
4306
+ case 3:
4307
+ vSettings = view.Settings;
4308
+ bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
4309
+ terrainTiles = (_a = vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumTerrainSources) !== null && _a !== void 0 ? _a : [];
4310
+ terrainTile = null;
4311
+ terrainTileName = null;
4312
+ if ((_b = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _b === void 0 ? void 0 : _b.terrain) {
4313
+ terrainTileName = bSettings.terrain;
4314
+ }
4315
+ else {
4316
+ terrainTileName = vSettings === null || vSettings === void 0 ? void 0 : vSettings.DefaultTerrain;
4317
+ }
4318
+ return [4 /*yield*/, bruceModels.ProjectViewLegacyTile.MergeTerrainTemplateData(params.apiGetter, terrainTiles, (vSettings === null || vSettings === void 0 ? void 0 : vSettings.CesiumTerrainSources) == null)];
4319
+ case 4:
4320
+ _c.sent();
4321
+ for (i = 0; i < terrainTiles.length; i++) {
4322
+ tile = terrainTiles[i];
4323
+ if (TileRenderEngine.CompareLegacyNames(tile.Name, terrainTileName)) {
4324
+ terrainTile = tile;
4325
+ break;
4326
+ }
4327
+ }
4328
+ if (terrainTile) {
4329
+ Render({
4330
+ data: terrainTile,
4331
+ viewer: params.viewer,
4332
+ });
4333
+ }
4334
+ return [2 /*return*/];
4335
+ }
4336
+ });
4045
4337
  });
4046
4338
  }
4047
- if (provider) {
4048
- provider._bId = bId;
4049
- provider._bName = (_a = params.data) === null || _a === void 0 ? void 0 : _a.Name;
4050
- params.viewer.terrainProvider = provider;
4051
- }
4052
- }
4053
- Terrain.RenderLegacy = RenderLegacy;
4054
- function RenderLegacyView(params) {
4055
- var _a, _b, _c, _d, _e;
4056
- return __awaiter(this, void 0, void 0, function () {
4057
- var api, view, bookmark, terrainTiles, terrainTile, terrainTileName, i, tile;
4058
- return __generator(this, function (_f) {
4059
- switch (_f.label) {
4060
- case 0:
4061
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
4062
- return [4 /*yield*/, bruceModels.ProjectView.Get(api, params.viewId)];
4063
- case 1:
4064
- view = _f.sent();
4065
- bookmark = null;
4066
- if (!params.bookmarkId) return [3 /*break*/, 3];
4067
- return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4068
- case 2:
4069
- bookmark = _f.sent();
4070
- _f.label = 3;
4071
- case 3:
4072
- terrainTiles = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.CesiumTerrainSources) !== null && _b !== void 0 ? _b : [];
4073
- terrainTile = null;
4074
- terrainTileName = null;
4075
- if ((_c = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _c === void 0 ? void 0 : _c.terrain) {
4076
- terrainTileName = bookmark.Settings.terrain;
4077
- }
4078
- else {
4079
- terrainTileName = (_d = view.Settings) === null || _d === void 0 ? void 0 : _d.DefaultTerrain;
4080
- }
4081
- return [4 /*yield*/, bruceModels.ProjectViewTileSource.MergeTerrainTemplateData(params.apiGetter, terrainTiles, ((_e = view.Settings) === null || _e === void 0 ? void 0 : _e.CesiumTerrainSources) == null)];
4082
- case 4:
4083
- _f.sent();
4084
- for (i = 0; i < terrainTiles.length; i++) {
4085
- tile = terrainTiles[i];
4086
- if (TileRenderEngine.CompareLegacyNames(tile.Name, terrainTileName)) {
4087
- terrainTile = tile;
4088
- break;
4339
+ V1.RenderView = RenderView;
4340
+ })(V1 = Terrain.V1 || (Terrain.V1 = {}));
4341
+ var V2;
4342
+ (function (V2) {
4343
+ function Render(params) {
4344
+ var _a;
4345
+ return __awaiter(this, void 0, void 0, function () {
4346
+ var enabledMeta, defaultTerr, provider, api, tileset, url, vertexes, settings;
4347
+ return __generator(this, function (_b) {
4348
+ switch (_b.label) {
4349
+ case 0:
4350
+ enabledMeta = (_a = params.viewer.terrainProvider) === null || _a === void 0 ? void 0 : _a._bMeta;
4351
+ if ((enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.tilesetId) === params.source.tilesetId &&
4352
+ (enabledMeta === null || enabledMeta === void 0 ? void 0 : enabledMeta.accountId) === params.source.accountId) {
4353
+ return [2 /*return*/];
4089
4354
  }
4090
- }
4091
- if (terrainTile) {
4092
- TileRenderEngine.Terrain.RenderLegacy({
4093
- data: terrainTile,
4094
- viewer: params.viewer,
4095
- });
4096
- }
4097
- return [2 /*return*/];
4098
- }
4355
+ defaultTerr = params.source.accountId ? null : bruceModels.ProjectViewTile.DefaultTerrains.find(function (x) { return x.id === params.source.tilesetId; });
4356
+ provider = null;
4357
+ if (!defaultTerr) return [3 /*break*/, 1];
4358
+ provider = renderDefaultTerrTile(defaultTerr.id);
4359
+ return [3 /*break*/, 3];
4360
+ case 1:
4361
+ api = params.apiGetter.getApi(params.source.accountId);
4362
+ return [4 /*yield*/, bruceModels.Tileset.Get(api, params.source.tilesetId)];
4363
+ case 2:
4364
+ tileset = _b.sent();
4365
+ url = void 0;
4366
+ vertexes = true;
4367
+ if (tileset.type === bruceModels.Tileset.EType.Terrain) {
4368
+ url = bruceModels.Tileset.GetPublicFileUrl(api, tileset.id, "");
4369
+ }
4370
+ else if (tileset.type === bruceModels.Tileset.EType.ExternalTerrain) {
4371
+ settings = tileset.settings;
4372
+ url = settings.url;
4373
+ vertexes = settings.requestVertexNormals == null ? true : settings.requestVertexNormals;
4374
+ }
4375
+ else {
4376
+ console.error("Invalid tileset type.", tileset);
4377
+ }
4378
+ if (url) {
4379
+ provider = new Cesium.CesiumTerrainProvider({
4380
+ url: url,
4381
+ requestVertexNormals: vertexes
4382
+ });
4383
+ }
4384
+ _b.label = 3;
4385
+ case 3:
4386
+ if (provider) {
4387
+ provider._bMeta = {
4388
+ accountId: params.source.accountId,
4389
+ tilesetId: params.source.tilesetId
4390
+ };
4391
+ params.viewer.terrainProvider = provider;
4392
+ }
4393
+ return [2 /*return*/];
4394
+ }
4395
+ });
4099
4396
  });
4100
- });
4101
- }
4102
- Terrain.RenderLegacyView = RenderLegacyView;
4397
+ }
4398
+ V2.Render = Render;
4399
+ })(V2 = Terrain.V2 || (Terrain.V2 = {}));
4103
4400
  })(Terrain = TileRenderEngine.Terrain || (TileRenderEngine.Terrain = {}));
4104
4401
  })(exports.TileRenderEngine || (exports.TileRenderEngine = {}));
4105
4402
 
4106
- (function (ViewRenderEngine) {
4107
- function Render(params) {
4108
- var _a, _b, _c, _d, _e;
4109
- return __awaiter(this, void 0, void 0, function () {
4110
- var api, view, bookmark, frustum, scene, curFrustum, camera, pos, go, enabledItems, newItemIds, _i, enabledItems_1, id;
4111
- return __generator(this, function (_f) {
4112
- switch (_f.label) {
4113
- case 0:
4114
- api = params.apiGetter.getApi(params.apiGetter.accountId, params.apiGetter.env);
4115
- return [4 /*yield*/, bruceModels.ProjectView.Get(api, params.viewId)];
4116
- case 1:
4117
- view = _f.sent();
4118
- bookmark = null;
4119
- if (!params.bookmarkId) return [3 /*break*/, 3];
4120
- return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4121
- case 2:
4122
- bookmark = _f.sent();
4123
- _f.label = 3;
4124
- case 3: return [4 /*yield*/, exports.TileRenderEngine.Terrain.RenderLegacyView({
4403
+ function renderV1(params, bookmark, view) {
4404
+ var _a, _b;
4405
+ return __awaiter(this, void 0, void 0, function () {
4406
+ var vSettings, bSettings, frustum, scene, curFrustum, camera, pos, go, enabledItems, newItemIds, _i, enabledItems_1, id;
4407
+ return __generator(this, function (_c) {
4408
+ switch (_c.label) {
4409
+ case 0:
4410
+ vSettings = view.Settings;
4411
+ bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
4412
+ return [4 /*yield*/, exports.TileRenderEngine.Terrain.V1.RenderView({
4125
4413
  apiGetter: params.apiGetter,
4126
4414
  bookmarkId: params.bookmarkId,
4127
4415
  viewer: params.manager.Viewer,
4128
4416
  viewId: params.viewId,
4129
4417
  })];
4130
- case 4:
4131
- _f.sent();
4132
- return [4 /*yield*/, exports.TileRenderEngine.Map.RenderLegacyView({
4133
- apiGetter: params.apiGetter,
4134
- bookmarkId: params.bookmarkId,
4135
- viewer: params.manager.Viewer,
4136
- viewId: params.viewId,
4137
- ignoreIds: []
4138
- })];
4139
- case 5:
4140
- _f.sent();
4141
- frustum = (_a = bookmark.Settings) === null || _a === void 0 ? void 0 : _a.cameraFrustum;
4142
- if (frustum == null) {
4143
- frustum = bruceModels.Camera.EFrustum.Perspective;
4418
+ case 1:
4419
+ _c.sent();
4420
+ return [4 /*yield*/, exports.TileRenderEngine.Map.V1.RenderView({
4421
+ apiGetter: params.apiGetter,
4422
+ bookmarkId: params.bookmarkId,
4423
+ viewer: params.manager.Viewer,
4424
+ viewId: params.viewId,
4425
+ ignoreIds: []
4426
+ })];
4427
+ case 2:
4428
+ _c.sent();
4429
+ frustum = bSettings === null || bSettings === void 0 ? void 0 : bSettings.cameraFrustum;
4430
+ if (frustum == null) {
4431
+ frustum = bruceModels.Camera.EFrustum.Perspective;
4432
+ }
4433
+ scene = params.manager.Viewer.scene;
4434
+ curFrustum = scene.camera.frustum instanceof Cesium.OrthographicFrustum ? bruceModels.Camera.EFrustum.Orthographic : bruceModels.Camera.EFrustum.Perspective;
4435
+ if (curFrustum != frustum) {
4436
+ if (frustum == bruceModels.Camera.EFrustum.Perspective) {
4437
+ scene.camera.switchToPerspectiveFrustum();
4438
+ scene.screenSpaceCameraController.enableTilt = true;
4144
4439
  }
4145
- scene = params.manager.Viewer.scene;
4146
- curFrustum = scene.camera.frustum instanceof Cesium.OrthographicFrustum ? bruceModels.Camera.EFrustum.Orthographic : bruceModels.Camera.EFrustum.Perspective;
4147
- if (curFrustum != frustum) {
4148
- if (frustum == bruceModels.Camera.EFrustum.Perspective) {
4149
- scene.camera.switchToPerspectiveFrustum();
4150
- scene.screenSpaceCameraController.enableTilt = true;
4151
- }
4152
- else {
4153
- scene.camera.switchToOrthographicFrustum();
4154
- scene.screenSpaceCameraController.enableTilt = false;
4155
- }
4156
- params.skipTransition = true;
4440
+ else {
4441
+ scene.camera.switchToOrthographicFrustum();
4442
+ scene.screenSpaceCameraController.enableTilt = false;
4157
4443
  }
4158
- camera = bookmark.Camera;
4159
- pos = Cesium.Cartesian3.fromDegrees(+camera.position.longitude, +camera.position.latitude, +camera.position.height);
4160
- params.manager.Viewer.scene.camera.flyTo({
4444
+ params.skipTransition = true;
4445
+ }
4446
+ camera = bookmark.Camera;
4447
+ pos = Cesium.Cartesian3.fromDegrees(+camera.position.longitude, +camera.position.latitude, +camera.position.height);
4448
+ params.manager.Viewer.scene.camera.flyTo({
4449
+ destination: pos,
4450
+ orientation: {
4451
+ heading: +camera.heading,
4452
+ pitch: +camera.pitch,
4453
+ roll: +camera.roll
4454
+ },
4455
+ duration: params.skipTransition ? 0 : 2
4456
+ });
4457
+ go = (_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _a === void 0 ? void 0 : _a.groundOcclusion;
4458
+ if (go == null) {
4459
+ go = vSettings === null || vSettings === void 0 ? void 0 : vSettings.GroundOcclusion;
4460
+ }
4461
+ if (go == null) {
4462
+ go = false;
4463
+ }
4464
+ params.manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
4465
+ enabledItems = params.manager.GetEnabledItemIds();
4466
+ newItemIds = (_b = bSettings === null || bSettings === void 0 ? void 0 : bSettings.selectedItemIds) !== null && _b !== void 0 ? _b : [];
4467
+ for (_i = 0, enabledItems_1 = enabledItems; _i < enabledItems_1.length; _i++) {
4468
+ id = enabledItems_1[_i];
4469
+ if (newItemIds.indexOf(id) === -1) {
4470
+ params.manager.RemoveItemById(id);
4471
+ }
4472
+ }
4473
+ if (!params.bookmarkId) return [3 /*break*/, 4];
4474
+ return [4 /*yield*/, exports.RenderHelper.RenderBookmarkItems({
4475
+ apiGetter: params.apiGetter,
4476
+ manager: params.manager,
4477
+ }, params.viewId, params.bookmarkId)];
4478
+ case 3:
4479
+ _c.sent();
4480
+ _c.label = 4;
4481
+ case 4: return [2 /*return*/];
4482
+ }
4483
+ });
4484
+ });
4485
+ }
4486
+ function renderV2(params, bookmark, view) {
4487
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
4488
+ return __awaiter(this, void 0, void 0, function () {
4489
+ var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, gOcclusion, terrain, source, imagery, iSources, curEnabled, newItemIds, _i, curEnabled_1, id;
4490
+ return __generator(this, function (_p) {
4491
+ switch (_p.label) {
4492
+ case 0:
4493
+ viewer = params.manager.Viewer;
4494
+ scene = viewer.scene;
4495
+ vSettings = view.Settings;
4496
+ bSettings = ((_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) !== null && _a !== void 0 ? _a : {});
4497
+ defaults = (_b = vSettings.defaults) !== null && _b !== void 0 ? _b : {};
4498
+ camera = ((_c = bookmark.Camera) !== null && _c !== void 0 ? _c : {});
4499
+ newLens = camera.cameraFrustum;
4500
+ if (newLens == null) {
4501
+ newLens = (_d = defaults.camera) === null || _d === void 0 ? void 0 : _d.cameraFrustum;
4502
+ }
4503
+ if (newLens == null) {
4504
+ // TODO: Need global default.
4505
+ newLens = bruceModels.Camera.EFrustum.Perspective;
4506
+ }
4507
+ curLens = scene.camera.frustum instanceof Cesium.OrthographicFrustum ?
4508
+ bruceModels.Camera.EFrustum.Orthographic :
4509
+ bruceModels.Camera.EFrustum.Perspective;
4510
+ if (newLens != curLens) {
4511
+ if (newLens == bruceModels.Camera.EFrustum.Perspective) {
4512
+ scene.camera.switchToPerspectiveFrustum();
4513
+ scene.screenSpaceCameraController.enableTilt = true;
4514
+ }
4515
+ else {
4516
+ scene.camera.switchToOrthographicFrustum();
4517
+ scene.screenSpaceCameraController.enableTilt = false;
4518
+ }
4519
+ }
4520
+ transition = params.skipTransition ? 0 : curLens === newLens ? camera.transition : 0;
4521
+ if (transition == null) {
4522
+ transition = (_e = defaults.camera) === null || _e === void 0 ? void 0 : _e.transition;
4523
+ }
4524
+ if (transition == null) {
4525
+ // TODO: Need global default.
4526
+ transition = 2000;
4527
+ }
4528
+ if (bruceModels.Carto.ValidateCarto(camera)) {
4529
+ pos = Cesium.Cartesian3.fromDegrees(+camera.longitude, +camera.latitude, +camera.altitude);
4530
+ scene.camera.flyTo({
4161
4531
  destination: pos,
4162
4532
  orientation: {
4163
4533
  heading: +camera.heading,
4164
4534
  pitch: +camera.pitch,
4165
4535
  roll: +camera.roll
4166
4536
  },
4167
- duration: params.skipTransition ? 0 : 2
4537
+ duration: transition != 0 ? transition / 1000 : 0
4168
4538
  });
4169
- go = (_b = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _b === void 0 ? void 0 : _b.groundOcclusion;
4170
- if (go == null) {
4171
- go = (_c = view.Settings) === null || _c === void 0 ? void 0 : _c.GroundOcclusion;
4172
- }
4173
- if (go == null) {
4174
- go = false;
4175
- }
4176
- params.manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
4177
- enabledItems = params.manager.GetEnabledItemIds();
4178
- 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 : [];
4179
- for (_i = 0, enabledItems_1 = enabledItems; _i < enabledItems_1.length; _i++) {
4180
- id = enabledItems_1[_i];
4181
- if (newItemIds.indexOf(id) === -1) {
4182
- params.manager.RemoveItemById(id);
4539
+ }
4540
+ gOcclusion = bSettings === null || bSettings === void 0 ? void 0 : bSettings.groundOcclusion;
4541
+ if (gOcclusion == null) {
4542
+ gOcclusion = (_f = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _f === void 0 ? void 0 : _f.groundOcclusion;
4543
+ }
4544
+ if (gOcclusion == null) {
4545
+ // TODO: Need global default.
4546
+ gOcclusion = true;
4547
+ }
4548
+ scene.globe.depthTestAgainstTerrain = Boolean(gOcclusion);
4549
+ 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;
4550
+ if (!terrain) return [3 /*break*/, 2];
4551
+ source = (_j = vSettings.terrains) === null || _j === void 0 ? void 0 : _j.find(function (x) { return x.accountId === terrain.accountId && x.tilesetId === terrain.tilesetId; });
4552
+ if (!source) return [3 /*break*/, 2];
4553
+ return [4 /*yield*/, exports.TileRenderEngine.Terrain.V2.Render({
4554
+ apiGetter: params.apiGetter,
4555
+ enabled: terrain,
4556
+ source: source,
4557
+ viewer: params.manager.Viewer,
4558
+ })];
4559
+ case 1:
4560
+ _p.sent();
4561
+ _p.label = 2;
4562
+ case 2:
4563
+ imagery = (_k = bSettings.imagery) !== null && _k !== void 0 ? _k : (_l = defaults.settings) === null || _l === void 0 ? void 0 : _l.imagery;
4564
+ if (imagery == null) {
4565
+ // TODO: Need global default.
4566
+ imagery = [
4567
+ {
4568
+ accountId: null,
4569
+ tilesetId: bruceModels.ProjectViewTile.EDefaultImagery.MapboxSatellite,
4570
+ alpha: 1,
4571
+ brightness: 1,
4572
+ contrast: 1,
4573
+ gamma: 1,
4574
+ hue: 0,
4575
+ saturation: 1
4183
4576
  }
4577
+ ];
4578
+ }
4579
+ iSources = (_m = vSettings.imageries) === null || _m === void 0 ? void 0 : _m.filter(function (x) {
4580
+ return imagery.find(function (y) {
4581
+ y.accountId === x.accountId && y.tilesetId === x.tilesetId;
4582
+ });
4583
+ });
4584
+ return [4 /*yield*/, exports.TileRenderEngine.Map.V2.Render({
4585
+ apiGetter: params.apiGetter,
4586
+ enabled: imagery,
4587
+ sources: iSources,
4588
+ viewer: params.manager.Viewer,
4589
+ })];
4590
+ case 3:
4591
+ _p.sent();
4592
+ curEnabled = params.manager.GetEnabledItemIds();
4593
+ newItemIds = (_o = bSettings === null || bSettings === void 0 ? void 0 : bSettings.menuItemIds) !== null && _o !== void 0 ? _o : [];
4594
+ _i = 0, curEnabled_1 = curEnabled;
4595
+ _p.label = 4;
4596
+ case 4:
4597
+ if (!(_i < curEnabled_1.length)) return [3 /*break*/, 7];
4598
+ id = curEnabled_1[_i];
4599
+ if (!(newItemIds.indexOf(id) === -1)) return [3 /*break*/, 6];
4600
+ return [4 /*yield*/, params.manager.RemoveItemById(id)];
4601
+ case 5:
4602
+ _p.sent();
4603
+ _p.label = 6;
4604
+ case 6:
4605
+ _i++;
4606
+ return [3 /*break*/, 4];
4607
+ case 7:
4608
+ if (!params.bookmarkId) return [3 /*break*/, 9];
4609
+ return [4 /*yield*/, exports.RenderHelper.RenderBookmarkItems({
4610
+ apiGetter: params.apiGetter,
4611
+ manager: params.manager,
4612
+ }, params.viewId, params.bookmarkId)];
4613
+ case 8:
4614
+ _p.sent();
4615
+ _p.label = 9;
4616
+ case 9: return [2 /*return*/];
4617
+ }
4618
+ });
4619
+ });
4620
+ }
4621
+ (function (ViewRenderEngine) {
4622
+ function Render(params) {
4623
+ return __awaiter(this, void 0, void 0, function () {
4624
+ var api, view, bookmark, version;
4625
+ return __generator(this, function (_a) {
4626
+ switch (_a.label) {
4627
+ case 0:
4628
+ api = params.apiGetter.getApi();
4629
+ return [4 /*yield*/, bruceModels.ProjectView.Get(api, params.viewId)];
4630
+ case 1:
4631
+ view = _a.sent();
4632
+ bookmark = null;
4633
+ if (!params.bookmarkId) return [3 /*break*/, 3];
4634
+ return [4 /*yield*/, bruceModels.ProjectViewBookmark.Get(api, params.viewId, params.bookmarkId)];
4635
+ case 2:
4636
+ bookmark = _a.sent();
4637
+ _a.label = 3;
4638
+ case 3:
4639
+ if (bookmark && view.DataVersion != bookmark.DataVersion) {
4640
+ throw new Error("View and bookmark settings version mismatch.");
4184
4641
  }
4185
- if (!params.bookmarkId) return [3 /*break*/, 7];
4186
- return [4 /*yield*/, exports.RenderHelper.RenderBookmarkItems({
4187
- apiGetter: params.apiGetter,
4188
- manager: params.manager,
4189
- }, params.viewId, params.bookmarkId)];
4642
+ version = view.DataVersion;
4643
+ if (!(version === 2)) return [3 /*break*/, 5];
4644
+ return [4 /*yield*/, renderV2(params, bookmark, view)];
4645
+ case 4:
4646
+ _a.sent();
4647
+ return [3 /*break*/, 7];
4648
+ case 5: return [4 /*yield*/, renderV1(params, bookmark, view)];
4190
4649
  case 6:
4191
- _f.sent();
4192
- _f.label = 7;
4650
+ _a.sent();
4651
+ _a.label = 7;
4193
4652
  case 7: return [2 /*return*/];
4194
4653
  }
4195
4654
  });