bruce-cesium 0.1.3 → 0.1.5

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.
@@ -1,5 +1,5 @@
1
- import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, EntityFilterGetter, BatchedDataGetter, ObjectUtils, Tileset, MenuItem, ProjectView, ProjectViewBookmark } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Entity, Primitive, Cesium3DTileFeature, Color, HeightReference, Cartesian3, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, HeadingPitchRange, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, createWorldTerrain, CesiumTerrainProvider, EllipsoidTerrainProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
1
+ import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, EntityFilterGetter, BatchedDataGetter, ObjectUtils, Tileset, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTileSource, Camera } from 'bruce-models';
2
+ import { Viewer, ArcGisMapServerImageryProvider, ScreenSpaceEventType, Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, createWorldTerrain, CesiumTerrainProvider, EllipsoidTerrainProvider, OrthographicFrustum, Matrix4, Cesium3DTileset, EllipsoidGeodesic } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -3132,13 +3132,21 @@ function prepLegacyName(name) {
3132
3132
  name = name.replace(/" "/g, "");
3133
3133
  name = name.replace(re, "");
3134
3134
  name = name.toLowerCase();
3135
+ if (name === "cwt") {
3136
+ name = "cesiumworldterrain";
3137
+ }
3135
3138
  return name;
3136
3139
  }
3140
+ var EDefaultTerrain;
3141
+ (function (EDefaultTerrain) {
3142
+ EDefaultTerrain["CesiumWorldTerrain"] = "cesiumworldterrain";
3143
+ EDefaultTerrain["Linz"] = "linz";
3144
+ EDefaultTerrain["FlatTerrain"] = "flatterrain";
3145
+ })(EDefaultTerrain || (EDefaultTerrain = {}));
3137
3146
  var DEFAULT_TERRAIN_NAMES = [
3138
- "cesiumworldterrain",
3139
- "linz",
3140
- "flatterrain",
3141
- "grid"
3147
+ EDefaultTerrain.CesiumWorldTerrain,
3148
+ EDefaultTerrain.Linz,
3149
+ EDefaultTerrain.FlatTerrain
3142
3150
  ];
3143
3151
  function isDefaultTerrain(name) {
3144
3152
  name = prepLegacyName(name);
@@ -3168,20 +3176,36 @@ function createImageryBId(source) {
3168
3176
  }
3169
3177
  return "";
3170
3178
  }
3179
+ var EDefaultImagery;
3180
+ (function (EDefaultImagery) {
3181
+ EDefaultImagery["BingMapsAerial"] = "bingmapsaerial";
3182
+ EDefaultImagery["BingMapsAerialWithLabels"] = "bingmapsaerialwithlabels";
3183
+ EDefaultImagery["BingMapsRoads"] = "bingmapsroads";
3184
+ EDefaultImagery["MapboxSatellite"] = "mapboxsatellite";
3185
+ EDefaultImagery["MapBoxStreets"] = "mapboxstreets";
3186
+ EDefaultImagery["MapBoxStreetsClassic"] = "mapboxstreetsclassic";
3187
+ EDefaultImagery["EsriWorldImagery"] = "esriworldimagery";
3188
+ EDefaultImagery["EsriWorldStreetMap"] = "esriworldstreetmap";
3189
+ EDefaultImagery["EsriNationalGeographic"] = "esrinationalgeographic";
3190
+ EDefaultImagery["OpenStreetMap"] = "openstreetmap";
3191
+ EDefaultImagery["StamenWaterColor"] = "stamenwatercolor";
3192
+ EDefaultImagery["StamenToner"] = "stamentoner";
3193
+ EDefaultImagery["Grid"] = "grid";
3194
+ })(EDefaultImagery || (EDefaultImagery = {}));
3171
3195
  var DEFAULT_IMAGERY_NAMES = [
3172
- "bingmapsaerial",
3173
- "bingmapsaerialwithlabels",
3174
- "bingmapsroads",
3175
- "mapboxsatellite",
3176
- "mapboxstreets",
3177
- "mapboxstreetsclassic",
3178
- "esriworldimagery",
3179
- "esriworldstreetmap",
3180
- "esrinationalgeographic",
3181
- "openstreetmap",
3182
- "stamenwatercolor",
3183
- "stamentoner",
3184
- "grid"
3196
+ EDefaultImagery.BingMapsAerial,
3197
+ EDefaultImagery.BingMapsAerialWithLabels,
3198
+ EDefaultImagery.BingMapsRoads,
3199
+ EDefaultImagery.MapboxSatellite,
3200
+ EDefaultImagery.MapBoxStreets,
3201
+ EDefaultImagery.MapBoxStreetsClassic,
3202
+ EDefaultImagery.EsriWorldImagery,
3203
+ EDefaultImagery.EsriWorldStreetMap,
3204
+ EDefaultImagery.EsriNationalGeographic,
3205
+ EDefaultImagery.OpenStreetMap,
3206
+ EDefaultImagery.StamenWaterColor,
3207
+ EDefaultImagery.StamenToner,
3208
+ EDefaultImagery.Grid
3185
3209
  ];
3186
3210
  function isDefaultImagery(name) {
3187
3211
  name = prepLegacyName(name);
@@ -3233,7 +3257,7 @@ var TileRenderEngine;
3233
3257
  // TODO: Rest of defaults.
3234
3258
  // TODO: Should be enum.
3235
3259
  switch (prepLegacyName(tile.Name)) {
3236
- case "bingmapsaerial":
3260
+ case EDefaultImagery.BingMapsAerial:
3237
3261
  // TODO: Read account key if available.
3238
3262
  provider = new BingMapsImageryProvider({
3239
3263
  url: "https://dev.virtualearth.net",
@@ -3241,18 +3265,89 @@ var TileRenderEngine;
3241
3265
  key: DEFAULT_BING_KEY
3242
3266
  });
3243
3267
  break;
3244
- case "mapboxsatellite":
3268
+ case EDefaultImagery.BingMapsAerialWithLabels:
3269
+ // TODO: Read account key if available.
3270
+ provider = new BingMapsImageryProvider({
3271
+ url: "https://dev.virtualearth.net",
3272
+ mapStyle: BingMapsStyle.AERIAL_WITH_LABELS,
3273
+ key: DEFAULT_BING_KEY
3274
+ });
3275
+ break;
3276
+ case EDefaultImagery.BingMapsRoads:
3277
+ // TODO: Read account key if available.
3278
+ provider = new BingMapsImageryProvider({
3279
+ url: "https://dev.virtualearth.net",
3280
+ mapStyle: BingMapsStyle.ROAD_ON_DEMAND,
3281
+ key: DEFAULT_BING_KEY
3282
+ });
3283
+ break;
3284
+ case EDefaultImagery.MapboxSatellite:
3245
3285
  // TODO: Read account key if available.
3246
3286
  provider = new MapboxImageryProvider({
3247
3287
  mapId: "mapbox.satellite",
3248
3288
  accessToken: DEFAULT_MAPBOX_KEY
3249
3289
  });
3250
3290
  break;
3251
- case "openstreetmap":
3291
+ case EDefaultImagery.MapBoxStreets:
3292
+ // TODO: Read account key if available.
3293
+ provider = new MapboxImageryProvider({
3294
+ mapId: "satellite-streets-v11",
3295
+ accessToken: DEFAULT_MAPBOX_KEY
3296
+ });
3297
+ break;
3298
+ case EDefaultImagery.MapBoxStreetsClassic:
3299
+ // TODO: Read account key if available.
3300
+ provider = new MapboxImageryProvider({
3301
+ mapId: "streets-v11",
3302
+ accessToken: DEFAULT_MAPBOX_KEY
3303
+ });
3304
+ break;
3305
+ case EDefaultImagery.EsriWorldImagery:
3306
+ provider = new ArcGisMapServerImageryProvider({
3307
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
3308
+ enablePickFeatures: false
3309
+ });
3310
+ break;
3311
+ case EDefaultImagery.EsriWorldStreetMap:
3312
+ provider = new ArcGisMapServerImageryProvider({
3313
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
3314
+ enablePickFeatures: false
3315
+ });
3316
+ break;
3317
+ case EDefaultImagery.EsriNationalGeographic:
3318
+ provider = new ArcGisMapServerImageryProvider({
3319
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
3320
+ enablePickFeatures: false
3321
+ });
3322
+ break;
3323
+ case EDefaultImagery.OpenStreetMap:
3252
3324
  provider = new OpenStreetMapImageryProvider({
3253
3325
  url: "https://a.tile.openstreetmap.org/"
3254
3326
  });
3255
3327
  break;
3328
+ case EDefaultImagery.StamenWaterColor:
3329
+ provider = new OpenStreetMapImageryProvider({
3330
+ url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
3331
+ });
3332
+ break;
3333
+ case EDefaultImagery.StamenToner:
3334
+ provider = new OpenStreetMapImageryProvider({
3335
+ url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
3336
+ });
3337
+ break;
3338
+ case EDefaultImagery.Grid:
3339
+ provider = new GridImageryProvider({
3340
+ tilingScheme: new GeographicTilingScheme(),
3341
+ cells: 0,
3342
+ color: Color.fromCssColorString("rgb(97, 151, 237)"),
3343
+ glowColor: Color.fromCssColorString("rgb(54, 54, 54)"),
3344
+ glowWidth: 4,
3345
+ backgroundColor: Color.TRANSPARENT,
3346
+ tileWidth: 256,
3347
+ tileHeight: 256,
3348
+ canvasSize: 256
3349
+ });
3350
+ break;
3256
3351
  }
3257
3352
  if (provider) {
3258
3353
  layer = new ImageryLayer(provider);
@@ -3268,7 +3363,6 @@ var TileRenderEngine;
3268
3363
  if (max != undefined && max <= -1) {
3269
3364
  max = undefined;
3270
3365
  }
3271
- // TODO: Should be enum.
3272
3366
  switch (tile.Type) {
3273
3367
  case "BruceImagery":
3274
3368
  provider = new UrlTemplateImageryProvider({
@@ -3324,20 +3418,20 @@ var TileRenderEngine;
3324
3418
  return layer;
3325
3419
  }
3326
3420
  function RenderLegacyView(params) {
3327
- var _a, _b, _c, _d;
3421
+ var _a, _b, _c, _d, _e;
3328
3422
  return __awaiter(this, void 0, void 0, function () {
3329
3423
  var view, bookmark, data, dataNames, i, source, tiles, i, name_1, j, tile, enabled, layers, _loop_1, i, i, tile, layer, i, layer;
3330
- return __generator(this, function (_e) {
3331
- switch (_e.label) {
3424
+ return __generator(this, function (_f) {
3425
+ switch (_f.label) {
3332
3426
  case 0: return [4 /*yield*/, ProjectView.Get(params.api, params.viewId)];
3333
3427
  case 1:
3334
- view = _e.sent();
3428
+ view = _f.sent();
3335
3429
  bookmark = null;
3336
3430
  if (!params.bookmarkId) return [3 /*break*/, 3];
3337
3431
  return [4 /*yield*/, ProjectViewBookmark.Get(params.api, params.viewId, params.bookmarkId)];
3338
3432
  case 2:
3339
- bookmark = _e.sent();
3340
- _e.label = 3;
3433
+ bookmark = _f.sent();
3434
+ _f.label = 3;
3341
3435
  case 3:
3342
3436
  data = [];
3343
3437
  dataNames = [];
@@ -3351,6 +3445,9 @@ var TileRenderEngine;
3351
3445
  dataNames.push(view.Settings.DefaultMapTiles);
3352
3446
  }
3353
3447
  tiles = (_d = (_c = view.Settings) === null || _c === void 0 ? void 0 : _c.CesiumMapSources) !== null && _d !== void 0 ? _d : [];
3448
+ return [4 /*yield*/, ProjectViewTileSource.MergeMapTemplateData(tiles, ((_e = view.Settings) === null || _e === void 0 ? void 0 : _e.CesiumMapSources) == null)];
3449
+ case 4:
3450
+ _f.sent();
3354
3451
  for (i = 0; i < dataNames.length; i++) {
3355
3452
  name_1 = dataNames[i];
3356
3453
  for (j = 0; j < tiles.length; j++) {
@@ -3444,19 +3541,18 @@ var TileRenderEngine;
3444
3541
  if (isDefaultTerrain(params.data.Name)) {
3445
3542
  var name_2 = prepLegacyName(params.data.Name);
3446
3543
  switch (name_2) {
3447
- // TODO: Should be enum.
3448
- case "cesiumworldterrain":
3544
+ case EDefaultTerrain.CesiumWorldTerrain:
3449
3545
  provider = createWorldTerrain({
3450
3546
  requestVertexNormals: true
3451
3547
  });
3452
3548
  break;
3453
- case "linz":
3549
+ case EDefaultTerrain.Linz:
3454
3550
  provider = new CesiumTerrainProvider({
3455
3551
  url: "https://s3-ap-southeast-2.amazonaws.com/digitalnewzealand/PROD/Tilesets/nz-dem",
3456
3552
  requestVertexNormals: true
3457
3553
  });
3458
3554
  break;
3459
- case "flatterrain":
3555
+ case EDefaultTerrain.FlatTerrain:
3460
3556
  provider = new EllipsoidTerrainProvider();
3461
3557
  break;
3462
3558
  }
@@ -3480,45 +3576,38 @@ var TileRenderEngine;
3480
3576
  var ViewRenderEngine;
3481
3577
  (function (ViewRenderEngine) {
3482
3578
  function Render(params) {
3483
- var _a, _b, _c, _d, _e, _f, _g;
3579
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
3484
3580
  return __awaiter(this, void 0, void 0, function () {
3485
- var view, bookmark, terrainTile, terrainTileName, i, tile, camera, pos, go, enabledItems, newItemIds, _i, enabledItems_1, id;
3486
- return __generator(this, function (_h) {
3487
- switch (_h.label) {
3488
- case 0: return [4 /*yield*/, TileRenderEngine.Map.RenderLegacyView({
3489
- api: params.api,
3490
- bookmarkId: params.bookmarkId,
3491
- viewer: params.manager.Viewer,
3492
- viewId: params.viewId,
3493
- ignoreIds: []
3494
- })];
3581
+ var view, bookmark, terrainTiles, terrainTile, terrainTileName, i, tile, frustum, scene, curFrustum, camera, pos, go, enabledItems, newItemIds, _i, enabledItems_1, id;
3582
+ return __generator(this, function (_l) {
3583
+ switch (_l.label) {
3584
+ case 0: return [4 /*yield*/, ProjectView.Get(params.api, params.viewId)];
3495
3585
  case 1:
3496
- _h.sent();
3497
- return [4 /*yield*/, ProjectView.Get(params.api, params.viewId)];
3498
- case 2:
3499
- view = _h.sent();
3586
+ view = _l.sent();
3500
3587
  bookmark = null;
3501
- if (!params.bookmarkId) return [3 /*break*/, 4];
3588
+ if (!params.bookmarkId) return [3 /*break*/, 3];
3502
3589
  return [4 /*yield*/, ProjectViewBookmark.Get(params.api, params.viewId, params.bookmarkId)];
3590
+ case 2:
3591
+ bookmark = _l.sent();
3592
+ _l.label = 3;
3503
3593
  case 3:
3504
- bookmark = _h.sent();
3505
- _h.label = 4;
3506
- case 4:
3594
+ terrainTiles = (_b = (_a = view.Settings) === null || _a === void 0 ? void 0 : _a.CesiumTerrainSources) !== null && _b !== void 0 ? _b : [];
3507
3595
  terrainTile = null;
3508
3596
  terrainTileName = null;
3509
- if ((_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _a === void 0 ? void 0 : _a.terrain) {
3597
+ if ((_c = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _c === void 0 ? void 0 : _c.terrain) {
3510
3598
  terrainTileName = bookmark.Settings.terrain;
3511
3599
  }
3512
3600
  else {
3513
- terrainTileName = (_b = view.Settings) === null || _b === void 0 ? void 0 : _b.DefaultTerrain;
3601
+ terrainTileName = (_d = view.Settings) === null || _d === void 0 ? void 0 : _d.DefaultTerrain;
3514
3602
  }
3515
- if ((_c = view.Settings) === null || _c === void 0 ? void 0 : _c.CesiumTerrainSources) {
3516
- for (i = 0; i < view.Settings.CesiumTerrainSources.length; i++) {
3517
- tile = view.Settings.CesiumTerrainSources[i];
3518
- if (TileRenderEngine.CompareLegacyNames(tile.Name, terrainTileName)) {
3519
- terrainTile = tile;
3520
- break;
3521
- }
3603
+ return [4 /*yield*/, ProjectViewTileSource.MergeTerrainTemplateData(terrainTiles, ((_e = view.Settings) === null || _e === void 0 ? void 0 : _e.CesiumTerrainSources) == null)];
3604
+ case 4:
3605
+ _l.sent();
3606
+ for (i = 0; i < terrainTiles.length; i++) {
3607
+ tile = terrainTiles[i];
3608
+ if (TileRenderEngine.CompareLegacyNames(tile.Name, terrainTileName)) {
3609
+ terrainTile = tile;
3610
+ break;
3522
3611
  }
3523
3612
  }
3524
3613
  if (terrainTile) {
@@ -3527,6 +3616,32 @@ var ViewRenderEngine;
3527
3616
  viewer: params.manager.Viewer,
3528
3617
  });
3529
3618
  }
3619
+ return [4 /*yield*/, TileRenderEngine.Map.RenderLegacyView({
3620
+ api: params.api,
3621
+ bookmarkId: params.bookmarkId,
3622
+ viewer: params.manager.Viewer,
3623
+ viewId: params.viewId,
3624
+ ignoreIds: []
3625
+ })];
3626
+ case 5:
3627
+ _l.sent();
3628
+ frustum = (_f = bookmark.Settings) === null || _f === void 0 ? void 0 : _f.cameraFrustum;
3629
+ if (frustum == null) {
3630
+ frustum = Camera.EFrustum.Perspective;
3631
+ }
3632
+ scene = params.manager.Viewer.scene;
3633
+ curFrustum = scene.camera.frustum instanceof OrthographicFrustum ? Camera.EFrustum.Orthographic : Camera.EFrustum.Perspective;
3634
+ if (curFrustum != frustum) {
3635
+ if (frustum == Camera.EFrustum.Perspective) {
3636
+ scene.camera.switchToPerspectiveFrustum();
3637
+ scene.screenSpaceCameraController.enableTilt = true;
3638
+ }
3639
+ else {
3640
+ scene.camera.switchToOrthographicFrustum();
3641
+ scene.screenSpaceCameraController.enableTilt = false;
3642
+ }
3643
+ params.skipTransition = true;
3644
+ }
3530
3645
  camera = bookmark.Camera;
3531
3646
  pos = Cartesian3.fromDegrees(+camera.position.longitude, +camera.position.latitude, +camera.position.height);
3532
3647
  params.manager.Viewer.scene.camera.flyTo({
@@ -3538,32 +3653,32 @@ var ViewRenderEngine;
3538
3653
  },
3539
3654
  duration: params.skipTransition ? 0 : 2
3540
3655
  });
3541
- go = (_d = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _d === void 0 ? void 0 : _d.groundOcclusion;
3656
+ go = (_g = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _g === void 0 ? void 0 : _g.groundOcclusion;
3542
3657
  if (go == null) {
3543
- go = (_e = view.Settings) === null || _e === void 0 ? void 0 : _e.GroundOcclusion;
3658
+ go = (_h = view.Settings) === null || _h === void 0 ? void 0 : _h.GroundOcclusion;
3544
3659
  }
3545
3660
  if (go == null) {
3546
3661
  go = false;
3547
3662
  }
3548
3663
  params.manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
3549
3664
  enabledItems = params.manager.GetEnabledItemIds();
3550
- newItemIds = (_g = (_f = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _f === void 0 ? void 0 : _f.selectedItemIds) !== null && _g !== void 0 ? _g : [];
3665
+ newItemIds = (_k = (_j = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _j === void 0 ? void 0 : _j.selectedItemIds) !== null && _k !== void 0 ? _k : [];
3551
3666
  for (_i = 0, enabledItems_1 = enabledItems; _i < enabledItems_1.length; _i++) {
3552
3667
  id = enabledItems_1[_i];
3553
3668
  if (newItemIds.indexOf(id) === -1) {
3554
3669
  params.manager.RemoveItemById(id);
3555
3670
  }
3556
3671
  }
3557
- if (!params.bookmarkId) return [3 /*break*/, 6];
3672
+ if (!params.bookmarkId) return [3 /*break*/, 7];
3558
3673
  return [4 /*yield*/, RenderHelper.RenderBookmarkItems({
3559
3674
  api: params.api,
3560
3675
  apiGetter: params.apiGetter,
3561
3676
  manager: params.manager,
3562
3677
  }, params.viewId, params.bookmarkId)];
3563
- case 5:
3564
- _h.sent();
3565
- _h.label = 6;
3566
- case 6: return [2 /*return*/];
3678
+ case 6:
3679
+ _l.sent();
3680
+ _l.label = 7;
3681
+ case 7: return [2 /*return*/];
3567
3682
  }
3568
3683
  });
3569
3684
  });