bruce-cesium 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, EntityRelationType, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, EntityRelation, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, OrthographicFrustum, JulianDate, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileStyle, Cesium3DTileset, IonResource, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, CallbackProperty, KmlDataSource, createOsmBuildings } from 'cesium';
2
+ import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, OrthographicFrustum, JulianDate, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileStyle, Cesium3DTileset, IonResource, EllipsoidGeodesic, sampleTerrainMostDetailed, PolygonPipeline, CallbackProperty, ColorMaterialProperty, Rectangle, Matrix3, EasingFunction, GeometryInstance, createOsmBuildings, KmlDataSource } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -234,14 +234,18 @@ var ViewerUtils;
234
234
  * @param viewer
235
235
  */
236
236
  function InitViewer(params) {
237
- var viewer = params.viewer;
238
- ViewerUtils.DestroyWidget(viewer.timeline);
239
- ViewerUtils.DestroyWidget(viewer.vrButton);
240
- ViewerUtils.DestroyWidget(viewer.sceneModePicker);
241
- ViewerUtils.DestroyWidget(viewer.homeButton);
242
- ViewerUtils.DestroyWidget(viewer.fullscreenButton);
243
- ViewerUtils.DestroyWidget(viewer.baseLayerPicker);
244
- ViewerUtils.StyleContainer({ viewer: viewer });
237
+ var viewer = params.viewer, destroyWidgets = params.destroyWidgets, styleContainer = params.styleContainer;
238
+ if (destroyWidgets != false) {
239
+ ViewerUtils.DestroyWidget(viewer.timeline);
240
+ ViewerUtils.DestroyWidget(viewer.vrButton);
241
+ ViewerUtils.DestroyWidget(viewer.sceneModePicker);
242
+ ViewerUtils.DestroyWidget(viewer.homeButton);
243
+ ViewerUtils.DestroyWidget(viewer.fullscreenButton);
244
+ ViewerUtils.DestroyWidget(viewer.baseLayerPicker);
245
+ }
246
+ if (styleContainer != false) {
247
+ ViewerUtils.StyleContainer({ viewer: viewer });
248
+ }
245
249
  }
246
250
  ViewerUtils.InitViewer = InitViewer;
247
251
  function DestroyWidget(widget) {
@@ -677,6 +681,8 @@ var EntityUtils;
677
681
  */
678
682
  function GetPos(params) {
679
683
  var viewer = params.viewer, entity = params.entity, visualRegister = params.visualRegister;
684
+ // TODO: Tidy this up, move to a separate function.
685
+ // We need a generic "get pos AS blah height reference" function.
680
686
  function evaluateRendered() {
681
687
  var rego = visualRegister ? visualRegister.GetRego({
682
688
  entityId: entity.Bruce.ID,
@@ -4790,7 +4796,8 @@ function createFilterGetterCacheKey(params) {
4790
4796
  cacheKey += params.api.GetBaseUrl();
4791
4797
  cacheKey += params.typeId;
4792
4798
  cacheKey += params.batchSize;
4793
- cacheKey += JSON.stringify(params.attrFilter);
4799
+ // This could potentially crash, but if it crashes here then it would crash during API request anyways.
4800
+ cacheKey += JSON.stringify(params.attrFilter ? params.attrFilter : {});
4794
4801
  return cacheKey;
4795
4802
  }
4796
4803
  var SharedGetters;
@@ -5842,9 +5849,10 @@ var RelationsRenderManager;
5842
5849
  var MenuItemManager;
5843
5850
  (function (MenuItemManager) {
5844
5851
  var Manager = /** @class */ (function () {
5845
- function Manager(viewer, visualsRegister) {
5852
+ function Manager(params) {
5846
5853
  this.items = [];
5847
5854
  this.onUpdate = null;
5855
+ var viewer = params.viewer, visualsRegister = params.visualsRegister;
5848
5856
  this.viewer = viewer;
5849
5857
  if (!visualsRegister) {
5850
5858
  visualsRegister = new VisualsRegister.Register(viewer);
@@ -5881,12 +5889,10 @@ var MenuItemManager;
5881
5889
  * Renders a given menu item and all ids children.
5882
5890
  * Will return the enabled item id.
5883
5891
  * @param params
5884
- * @param recursive
5885
5892
  * @returns
5886
5893
  */
5887
- Manager.prototype.RenderItem = function (params, recursive) {
5894
+ Manager.prototype.RenderItem = function (params) {
5888
5895
  var _a, _b, _c;
5889
- if (recursive === void 0) { recursive = true; }
5890
5896
  return __awaiter(this, void 0, void 0, function () {
5891
5897
  var rItem, isFolder, i, childId;
5892
5898
  return __generator(this, function (_d) {
@@ -6014,7 +6020,7 @@ var MenuItemManager;
6014
6020
  _d.label = 2;
6015
6021
  case 2:
6016
6022
  isFolder = !params.item.Type || params.item.Type == MenuItem.EType.None;
6017
- if (!(params.item.Children && recursive && isFolder)) return [3 /*break*/, 6];
6023
+ if (!(params.item.Children && params.recursive != false && isFolder)) return [3 /*break*/, 6];
6018
6024
  i = 0;
6019
6025
  _d.label = 3;
6020
6026
  case 3:
@@ -6042,17 +6048,20 @@ var MenuItemManager;
6042
6048
  * @param id
6043
6049
  * @param recursive
6044
6050
  */
6045
- Manager.prototype.RemoveItemById = function (id, recursive) {
6051
+ Manager.prototype.RemoveItemById = function (params) {
6046
6052
  var _a, _b;
6047
- if (recursive === void 0) { recursive = true; }
6048
6053
  return __awaiter(this, void 0, void 0, function () {
6049
- var item, _loop_1, this_1, i;
6054
+ var id, recursive, item, _loop_1, this_1, i;
6050
6055
  return __generator(this, function (_c) {
6051
6056
  switch (_c.label) {
6052
6057
  case 0:
6058
+ id = params.menuItemId, recursive = params.recursive;
6053
6059
  if (this.viewer.isDestroyed()) {
6054
6060
  return [2 /*return*/];
6055
6061
  }
6062
+ if (recursive == null) {
6063
+ recursive = true;
6064
+ }
6056
6065
  item = this.items.find(function (x) { return x.id === id; });
6057
6066
  if (!item) return [3 /*break*/, 5];
6058
6067
  if (!recursive) return [3 /*break*/, 4];
@@ -6063,7 +6072,9 @@ var MenuItemManager;
6063
6072
  case 0:
6064
6073
  child = this_1.items.find(function (x) { return x.id === item.childIds[i]; });
6065
6074
  if (!child) return [3 /*break*/, 2];
6066
- return [4 /*yield*/, this_1.RemoveItemById(child.id)];
6075
+ return [4 /*yield*/, this_1.RemoveItemById({
6076
+ menuItemId: child.id
6077
+ })];
6067
6078
  case 1:
6068
6079
  _a.sent();
6069
6080
  _a.label = 2;
@@ -6108,15 +6119,15 @@ var MenuItemManager;
6108
6119
  * Rerenders given entities.
6109
6120
  * If no menu items are specified then the rerender is called on all enabled menu items.
6110
6121
  * It is highly recommended to supply menu item ids.
6111
- * @param entityIds
6112
- * @param menuItemIds
6122
+ * @param params
6113
6123
  */
6114
- Manager.prototype.ReRender = function (entityIds, menuItemIds) {
6124
+ Manager.prototype.ReRender = function (params) {
6115
6125
  return __awaiter(this, void 0, void 0, function () {
6116
- var items, i, item;
6126
+ var entityIds, menuItemIds, items, i, item;
6117
6127
  return __generator(this, function (_a) {
6118
6128
  switch (_a.label) {
6119
6129
  case 0:
6130
+ entityIds = params.entityIds, menuItemIds = params.menuItemIds;
6120
6131
  if (!(entityIds === null || entityIds === void 0 ? void 0 : entityIds.length)) {
6121
6132
  return [2 /*return*/];
6122
6133
  }
@@ -6458,6 +6469,14 @@ var MenuItemCreator;
6458
6469
  });
6459
6470
  }
6460
6471
  MenuItemCreator.RenderBookmarkItems = RenderBookmarkItems;
6472
+ function RenderRelations(params) {
6473
+ return __awaiter(this, void 0, void 0, function () {
6474
+ return __generator(this, function (_a) {
6475
+ return [2 /*return*/];
6476
+ });
6477
+ });
6478
+ }
6479
+ MenuItemCreator.RenderRelations = RenderRelations;
6461
6480
  })(MenuItemCreator || (MenuItemCreator = {}));
6462
6481
 
6463
6482
  var DEFAULT_BING_KEY = "AqL0uYT5T84jiJeX55_b9zJeeP3MX2p1WLOHH4ljIEPZ7ZL2M81bYLzyYeSwuzzl";
@@ -7424,37 +7443,61 @@ var TileRenderEngine;
7424
7443
  // TODO: Move these to the data model.
7425
7444
  var MIN_SHADOW_SIZE = 2048;
7426
7445
  var MAX_SHADOW_SIZE = 32768;
7446
+ var RELATION_MENU_ITEM_ID = "BOOKMARK_ENTITY_RELATIONS";
7447
+ /**
7448
+ * Renders DATA_VERSION = 1 navigator.
7449
+ * @param params
7450
+ * @param bookmark
7451
+ * @param view
7452
+ */
7427
7453
  function renderLegacyNavigator(params, bookmark, view) {
7428
- var _a, _b;
7454
+ var _a, _b, _c, _d, _e;
7429
7455
  return __awaiter(this, void 0, void 0, function () {
7430
- var vSettings, bSettings, frustum, scene, curFrustum, camera, pos, go, enabledItems, newItemIds, _i, enabledItems_1, id;
7431
- return __generator(this, function (_c) {
7432
- switch (_c.label) {
7456
+ var vSettings, bSettings, manager, VR, scene, baseColor, frustum, curFrustum, camera, pos, go, fxaa, pointer, clock, timeStr, enabledItems, newItemIds, _i, enabledItems_1, id, menuItem;
7457
+ return __generator(this, function (_f) {
7458
+ switch (_f.label) {
7433
7459
  case 0:
7434
7460
  vSettings = view.Settings;
7435
7461
  bSettings = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings;
7462
+ manager = params.manager;
7463
+ VR = manager.VisualsRegister;
7464
+ scene = manager.Viewer.scene;
7436
7465
  return [4 /*yield*/, TileRenderEngine.Terrain.LegacyNavigator.RenderView({
7437
7466
  apiGetter: params.apiGetter,
7438
7467
  bookmarkId: params.bookmarkId,
7439
- viewer: params.manager.Viewer,
7468
+ viewer: manager.Viewer,
7440
7469
  viewId: params.viewId,
7441
7470
  })];
7442
7471
  case 1:
7443
- _c.sent();
7472
+ _f.sent();
7444
7473
  return [4 /*yield*/, TileRenderEngine.Map.LegacyNavigator.RenderView({
7445
7474
  apiGetter: params.apiGetter,
7446
7475
  bookmarkId: params.bookmarkId,
7447
- viewer: params.manager.Viewer,
7476
+ viewer: manager.Viewer,
7448
7477
  viewId: params.viewId,
7449
7478
  ignoreIds: []
7450
7479
  })];
7451
7480
  case 2:
7452
- _c.sent();
7481
+ _f.sent();
7482
+ baseColor = bSettings === null || bSettings === void 0 ? void 0 : bSettings.globeColor;
7483
+ if (baseColor == null) {
7484
+ // TODO: Need global default.
7485
+ baseColor = "#0326BE";
7486
+ }
7487
+ scene.globe.baseColor = Color.fromCssColorString(baseColor);
7488
+ // TODO: Other scene settings.
7489
+ // TODO: Rendered relationships.
7490
+ VR.ClearHidden();
7491
+ if ((_a = bSettings.hiddenEntityIds) === null || _a === void 0 ? void 0 : _a.length) {
7492
+ VR.SetHidden({
7493
+ entityIds: bSettings.hiddenEntityIds,
7494
+ hidden: true
7495
+ });
7496
+ }
7453
7497
  frustum = bSettings === null || bSettings === void 0 ? void 0 : bSettings.cameraFrustum;
7454
7498
  if (frustum == null) {
7455
7499
  frustum = Camera.EFrustum.Perspective;
7456
7500
  }
7457
- scene = params.manager.Viewer.scene;
7458
7501
  curFrustum = scene.camera.frustum instanceof OrthographicFrustum ? Camera.EFrustum.Orthographic : Camera.EFrustum.Perspective;
7459
7502
  if (curFrustum != frustum) {
7460
7503
  if (frustum == Camera.EFrustum.Perspective) {
@@ -7470,7 +7513,7 @@ function renderLegacyNavigator(params, bookmark, view) {
7470
7513
  if (!params.skipCamera) {
7471
7514
  camera = bookmark.Camera;
7472
7515
  pos = Cartesian3.fromDegrees(+camera.position.longitude, +camera.position.latitude, +camera.position.height);
7473
- params.manager.Viewer.scene.camera.flyTo({
7516
+ manager.Viewer.scene.camera.flyTo({
7474
7517
  destination: pos,
7475
7518
  orientation: {
7476
7519
  heading: +camera.heading,
@@ -7480,41 +7523,83 @@ function renderLegacyNavigator(params, bookmark, view) {
7480
7523
  duration: params.skipTransition ? 0 : 2
7481
7524
  });
7482
7525
  }
7483
- go = (_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _a === void 0 ? void 0 : _a.groundOcclusion;
7526
+ go = (_b = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _b === void 0 ? void 0 : _b.groundOcclusion;
7484
7527
  if (go == null) {
7485
7528
  go = vSettings === null || vSettings === void 0 ? void 0 : vSettings.GroundOcclusion;
7486
7529
  }
7487
7530
  if (go == null) {
7488
7531
  go = false;
7489
7532
  }
7490
- params.manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
7491
- enabledItems = params.manager.GetEnabledItemIds();
7492
- newItemIds = (_b = bSettings === null || bSettings === void 0 ? void 0 : bSettings.selectedItemIds) !== null && _b !== void 0 ? _b : [];
7493
- for (_i = 0, enabledItems_1 = enabledItems; _i < enabledItems_1.length; _i++) {
7494
- id = enabledItems_1[_i];
7495
- if (newItemIds.indexOf(id) === -1) {
7496
- params.manager.RemoveItemById(id);
7497
- }
7533
+ manager.Viewer.scene.globe.depthTestAgainstTerrain = go;
7534
+ fxaa = manager.Viewer.scene.postProcessStages.fxaa;
7535
+ fxaa.enabled = true;
7536
+ pointer = (_c = bSettings === null || bSettings === void 0 ? void 0 : bSettings.timelineSettings) === null || _c === void 0 ? void 0 : _c.timelinePointer;
7537
+ if (pointer != null) {
7538
+ clock = manager.Viewer.clock;
7539
+ timeStr = JulianDate.toIso8601(pointer);
7540
+ clock.currentTime = JulianDate.fromIso8601(timeStr);
7498
7541
  }
7499
- if (!params.bookmarkId) return [3 /*break*/, 4];
7542
+ enabledItems = manager.GetEnabledItemIds();
7543
+ newItemIds = (_d = bSettings === null || bSettings === void 0 ? void 0 : bSettings.selectedItemIds) !== null && _d !== void 0 ? _d : [];
7544
+ _i = 0, enabledItems_1 = enabledItems;
7545
+ _f.label = 3;
7546
+ case 3:
7547
+ if (!(_i < enabledItems_1.length)) return [3 /*break*/, 6];
7548
+ id = enabledItems_1[_i];
7549
+ if (!(newItemIds.indexOf(id) === -1 ||
7550
+ id == RELATION_MENU_ITEM_ID)) return [3 /*break*/, 5];
7551
+ return [4 /*yield*/, params.manager.RemoveItemById({
7552
+ menuItemId: id
7553
+ })];
7554
+ case 4:
7555
+ _f.sent();
7556
+ _f.label = 5;
7557
+ case 5:
7558
+ _i++;
7559
+ return [3 /*break*/, 3];
7560
+ case 6:
7561
+ if (!params.bookmarkId) return [3 /*break*/, 8];
7500
7562
  return [4 /*yield*/, MenuItemCreator.RenderBookmarkItems({
7501
7563
  apiGetter: params.apiGetter,
7502
- manager: params.manager,
7564
+ manager: manager,
7503
7565
  view: view,
7504
7566
  bookmark: bookmark
7505
7567
  })];
7506
- case 3:
7507
- _c.sent();
7508
- _c.label = 4;
7509
- case 4: return [2 /*return*/];
7568
+ case 7:
7569
+ _f.sent();
7570
+ _f.label = 8;
7571
+ case 8:
7572
+ if (!((_e = bSettings.drawnRelationEntityIDs) === null || _e === void 0 ? void 0 : _e.length)) return [3 /*break*/, 10];
7573
+ menuItem = {
7574
+ id: RELATION_MENU_ITEM_ID,
7575
+ Caption: "Entity relations",
7576
+ BruceEntity: {
7577
+ EntityIds: bSettings.drawnRelationEntityIDs
7578
+ },
7579
+ Type: MenuItem.EType.Relations
7580
+ };
7581
+ return [4 /*yield*/, params.manager.RenderItem({
7582
+ apiGetter: params.apiGetter,
7583
+ item: menuItem
7584
+ })];
7585
+ case 9:
7586
+ _f.sent();
7587
+ _f.label = 10;
7588
+ case 10: return [2 /*return*/];
7510
7589
  }
7511
7590
  });
7512
7591
  });
7513
7592
  }
7593
+ /**
7594
+ * Renders DATA_VERSION > 1 navigator.
7595
+ * @param params
7596
+ * @param bookmark
7597
+ * @param view
7598
+ */
7514
7599
  function renderNavigator(params, bookmark, view) {
7515
7600
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
7516
7601
  return __awaiter(this, void 0, void 0, function () {
7517
- var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, gOcclusion, hillShades, baseColor, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock, terrain, selectedIds, i, id, imagery, RELATION_MENU_ITEM_ID, renderedRelationEntityIds, curEnabled, newItemIds, _i, curEnabled_1, id, menuItem;
7602
+ var viewer, scene, vSettings, bSettings, defaults, camera, newLens, curLens, transition, pos, gOcclusion, hillShades, baseColor, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock, terrain, selectedIds, i, id, imagery, renderedRelationEntityIds, curEnabled, newItemIds, _i, curEnabled_1, id, menuItem;
7518
7603
  return __generator(this, function (_2) {
7519
7604
  switch (_2.label) {
7520
7605
  case 0:
@@ -7729,7 +7814,6 @@ function renderNavigator(params, bookmark, view) {
7729
7814
  })];
7730
7815
  case 3:
7731
7816
  _2.sent();
7732
- RELATION_MENU_ITEM_ID = "BOOKMARK_ENTITY_RELATIONS";
7733
7817
  renderedRelationEntityIds = bSettings.renderedEntityRelations;
7734
7818
  if (!renderedRelationEntityIds) {
7735
7819
  renderedRelationEntityIds = [];
@@ -7743,7 +7827,9 @@ function renderNavigator(params, bookmark, view) {
7743
7827
  id = curEnabled_1[_i];
7744
7828
  if (!(newItemIds.indexOf(id) === -1 ||
7745
7829
  id == RELATION_MENU_ITEM_ID)) return [3 /*break*/, 6];
7746
- return [4 /*yield*/, params.manager.RemoveItemById(id)];
7830
+ return [4 /*yield*/, params.manager.RemoveItemById({
7831
+ menuItemId: id
7832
+ })];
7747
7833
  case 5:
7748
7834
  _2.sent();
7749
7835
  _2.label = 6;
@@ -7826,9 +7912,6 @@ var ViewRenderEngine;
7826
7912
  bookmark = _b;
7827
7913
  _c.label = 7;
7828
7914
  case 7:
7829
- if (bookmark && view.DataVersion != bookmark.DataVersion) {
7830
- throw new Error("View and bookmark settings version mismatch.");
7831
- }
7832
7915
  version = view.DataVersion;
7833
7916
  if (!(version == 1)) return [3 /*break*/, 9];
7834
7917
  return [4 /*yield*/, renderLegacyNavigator(params, bookmark, view)];
@@ -7849,7 +7932,8 @@ var ViewRenderEngine;
7849
7932
 
7850
7933
  var ViewUtils;
7851
7934
  (function (ViewUtils) {
7852
- function GatherLegacyMapTiles(viewer) {
7935
+ function GatherLegacyMapTiles(params) {
7936
+ var viewer = params.viewer;
7853
7937
  var collection = viewer.imageryLayers;
7854
7938
  var tiles = [];
7855
7939
  for (var i = 0; i < collection.length; i++) {
@@ -7866,15 +7950,22 @@ var ViewUtils;
7866
7950
  });
7867
7951
  }
7868
7952
  }
7869
- return tiles.reverse();
7953
+ return {
7954
+ imagery: tiles.reverse()
7955
+ };
7870
7956
  }
7871
7957
  ViewUtils.GatherLegacyMapTiles = GatherLegacyMapTiles;
7872
- function GatherLegacyTerrainTile(viewer) {
7958
+ function GatherLegacyTerrainTile(params) {
7959
+ var viewer = params.viewer;
7873
7960
  var enabled = viewer.terrainProvider;
7874
7961
  if (enabled === null || enabled === void 0 ? void 0 : enabled._bName) {
7875
- return enabled._bName;
7962
+ return {
7963
+ terrain: enabled._bName
7964
+ };
7876
7965
  }
7877
- return "flatterrain";
7966
+ return {
7967
+ terrain: "flatterrain"
7968
+ };
7878
7969
  }
7879
7970
  ViewUtils.GatherLegacyTerrainTile = GatherLegacyTerrainTile;
7880
7971
  function GatherMapTiles(params) {