bruce-cesium 0.4.8 → 0.5.1

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, BatchedDataGetter, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, TilesetExtMapTiles, Camera, MathUtils } from 'bruce-models';
2
- import { Cartesian2, Cartographic, Math as Math$1, Color, HeightReference, Cartesian3, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, PolygonHierarchy, ShadowMode, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, HeadingPitchRange, OrthographicFrustum, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, createOsmBuildings, Cesium3DTileStyle, Rectangle } from 'cesium';
1
+ import { BruceEvent, Cartes, Carto, Geometry, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, DelayQueue, Entity as Entity$1, BatchedDataGetter, ObjectUtils, Tileset, EntityCoords, EntityFilterGetter, EntitySource, MenuItem, ProjectView, ProjectViewBookmark, ProjectViewTile, ProjectViewLegacyTile, TilesetExtMapTiles, ProgramKey, Camera, MathUtils } 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, OrthographicFrustum, HeadingPitchRange, createWorldTerrain, EllipsoidTerrainProvider, CesiumTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, Matrix4, Cesium3DTileset, EllipsoidGeodesic, createOsmBuildings, Cesium3DTileStyle, Rectangle } from 'cesium';
3
3
 
4
4
  var TIME_LAG = 300;
5
5
  var POSITION_CHECK_TIMER = 950;
@@ -3888,108 +3888,181 @@ function gatherEnabledImageries(viewer) {
3888
3888
  }
3889
3889
  return layers;
3890
3890
  }
3891
+ function findKey(apiGetter, keyId, defaultKey) {
3892
+ return __awaiter(this, void 0, void 0, function () {
3893
+ var key, pKey, e_1, doLog;
3894
+ return __generator(this, function (_a) {
3895
+ switch (_a.label) {
3896
+ case 0:
3897
+ key = null;
3898
+ _a.label = 1;
3899
+ case 1:
3900
+ _a.trys.push([1, 3, , 4]);
3901
+ return [4 /*yield*/, ProgramKey.Get(apiGetter.getApi(), keyId)];
3902
+ case 2:
3903
+ pKey = _a.sent();
3904
+ key = pKey.Key;
3905
+ return [3 /*break*/, 4];
3906
+ case 3:
3907
+ e_1 = _a.sent();
3908
+ doLog = true;
3909
+ if (e_1 && typeof e_1 === "object") {
3910
+ if (e_1.Code == "NotFound") {
3911
+ doLog = false;
3912
+ }
3913
+ }
3914
+ if (doLog) {
3915
+ console.error(e_1);
3916
+ }
3917
+ return [3 /*break*/, 4];
3918
+ case 4: return [2 /*return*/, key && key.length ? key : defaultKey];
3919
+ }
3920
+ });
3921
+ });
3922
+ }
3891
3923
  /**
3892
3924
  * Constructs an imagery provider for a default imagery type.
3893
3925
  * Warning: This does not add it to the viewer.
3926
+ * @param apiGetter
3894
3927
  * @param id
3895
3928
  * @returns
3896
3929
  */
3897
- function renderDefaultMapTile(id) {
3898
- var provider;
3899
- switch (id) {
3900
- case ProjectViewTile.EDefaultImagery.BingMapsAerial:
3901
- // TODO: Read account key if available.
3902
- provider = new BingMapsImageryProvider({
3903
- url: "https://dev.virtualearth.net",
3904
- mapStyle: BingMapsStyle.AERIAL,
3905
- key: DEFAULT_BING_KEY
3906
- });
3907
- break;
3908
- case ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels:
3909
- // TODO: Read account key if available.
3910
- provider = new BingMapsImageryProvider({
3911
- url: "https://dev.virtualearth.net",
3912
- mapStyle: BingMapsStyle.AERIAL_WITH_LABELS,
3913
- key: DEFAULT_BING_KEY
3914
- });
3915
- break;
3916
- case ProjectViewTile.EDefaultImagery.BingMapsRoads:
3917
- // TODO: Read account key if available.
3918
- provider = new BingMapsImageryProvider({
3919
- url: "https://dev.virtualearth.net",
3920
- mapStyle: BingMapsStyle.ROAD_ON_DEMAND,
3921
- key: DEFAULT_BING_KEY
3922
- });
3923
- break;
3924
- case ProjectViewTile.EDefaultImagery.MapboxSatellite:
3925
- // TODO: Read account key if available.
3926
- provider = new MapboxImageryProvider({
3927
- mapId: "mapbox.satellite",
3928
- accessToken: DEFAULT_MAPBOX_KEY
3929
- });
3930
- break;
3931
- case ProjectViewTile.EDefaultImagery.MapBoxStreets:
3932
- // TODO: Read account key if available.
3933
- provider = new MapboxImageryProvider({
3934
- mapId: "satellite-streets-v11",
3935
- accessToken: DEFAULT_MAPBOX_KEY
3936
- });
3937
- break;
3938
- case ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic:
3939
- // TODO: Read account key if available.
3940
- provider = new MapboxImageryProvider({
3941
- mapId: "streets-v11",
3942
- accessToken: DEFAULT_MAPBOX_KEY
3943
- });
3944
- break;
3945
- case ProjectViewTile.EDefaultImagery.EsriWorldImagery:
3946
- provider = new ArcGisMapServerImageryProvider({
3947
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
3948
- enablePickFeatures: false
3949
- });
3950
- break;
3951
- case ProjectViewTile.EDefaultImagery.EsriWorldStreetMap:
3952
- provider = new ArcGisMapServerImageryProvider({
3953
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
3954
- enablePickFeatures: false
3955
- });
3956
- break;
3957
- case ProjectViewTile.EDefaultImagery.EsriNationalGeographic:
3958
- provider = new ArcGisMapServerImageryProvider({
3959
- url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
3960
- enablePickFeatures: false
3961
- });
3962
- break;
3963
- case ProjectViewTile.EDefaultImagery.OpenStreetMap:
3964
- provider = new OpenStreetMapImageryProvider({
3965
- url: "https://a.tile.openstreetmap.org/"
3966
- });
3967
- break;
3968
- case ProjectViewTile.EDefaultImagery.StamenWaterColor:
3969
- provider = new OpenStreetMapImageryProvider({
3970
- url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
3971
- });
3972
- break;
3973
- case ProjectViewTile.EDefaultImagery.StamenToner:
3974
- provider = new OpenStreetMapImageryProvider({
3975
- url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
3976
- });
3977
- break;
3978
- case ProjectViewTile.EDefaultImagery.Grid:
3979
- provider = new GridImageryProvider({
3980
- tilingScheme: new GeographicTilingScheme(),
3981
- cells: 0,
3982
- color: Color.fromCssColorString("rgb(97, 151, 237)"),
3983
- glowColor: Color.fromCssColorString("rgb(54, 54, 54)"),
3984
- glowWidth: 4,
3985
- backgroundColor: Color.TRANSPARENT,
3986
- tileWidth: 256,
3987
- tileHeight: 256,
3988
- canvasSize: 256
3989
- });
3990
- break;
3991
- }
3992
- return provider;
3930
+ function renderDefaultMapTile(apiGetter, id) {
3931
+ return __awaiter(this, void 0, void 0, function () {
3932
+ var provider, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
3933
+ return __generator(this, function (_v) {
3934
+ switch (_v.label) {
3935
+ case 0:
3936
+ _a = id;
3937
+ switch (_a) {
3938
+ case ProjectViewTile.EDefaultImagery.BingMapsAerial: return [3 /*break*/, 1];
3939
+ case ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels: return [3 /*break*/, 3];
3940
+ case ProjectViewTile.EDefaultImagery.BingMapsRoads: return [3 /*break*/, 5];
3941
+ case ProjectViewTile.EDefaultImagery.MapboxSatellite: return [3 /*break*/, 7];
3942
+ case ProjectViewTile.EDefaultImagery.MapBoxStreets: return [3 /*break*/, 9];
3943
+ case ProjectViewTile.EDefaultImagery.MapBoxStreetsClassic: return [3 /*break*/, 11];
3944
+ case ProjectViewTile.EDefaultImagery.EsriWorldImagery: return [3 /*break*/, 13];
3945
+ case ProjectViewTile.EDefaultImagery.EsriWorldStreetMap: return [3 /*break*/, 14];
3946
+ case ProjectViewTile.EDefaultImagery.EsriNationalGeographic: return [3 /*break*/, 15];
3947
+ case ProjectViewTile.EDefaultImagery.OpenStreetMap: return [3 /*break*/, 16];
3948
+ case ProjectViewTile.EDefaultImagery.StamenWaterColor: return [3 /*break*/, 17];
3949
+ case ProjectViewTile.EDefaultImagery.StamenToner: return [3 /*break*/, 18];
3950
+ case ProjectViewTile.EDefaultImagery.Grid: return [3 /*break*/, 19];
3951
+ }
3952
+ return [3 /*break*/, 20];
3953
+ case 1:
3954
+ _c = (_b = BingMapsImageryProvider).bind;
3955
+ _d = {
3956
+ url: "https://dev.virtualearth.net",
3957
+ mapStyle: BingMapsStyle.AERIAL
3958
+ };
3959
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
3960
+ case 2:
3961
+ provider = new (_c.apply(_b, [void 0, (_d.key = _v.sent(),
3962
+ _d)]))();
3963
+ return [3 /*break*/, 20];
3964
+ case 3:
3965
+ _f = (_e = BingMapsImageryProvider).bind;
3966
+ _g = {
3967
+ url: "https://dev.virtualearth.net",
3968
+ mapStyle: BingMapsStyle.AERIAL_WITH_LABELS
3969
+ };
3970
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
3971
+ case 4:
3972
+ provider = new (_f.apply(_e, [void 0, (_g.key = _v.sent(),
3973
+ _g)]))();
3974
+ return [3 /*break*/, 20];
3975
+ case 5:
3976
+ _j = (_h = BingMapsImageryProvider).bind;
3977
+ _k = {
3978
+ url: "https://dev.virtualearth.net",
3979
+ mapStyle: BingMapsStyle.ROAD_ON_DEMAND
3980
+ };
3981
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.BingMaps, DEFAULT_BING_KEY)];
3982
+ case 6:
3983
+ provider = new (_j.apply(_h, [void 0, (_k.key = _v.sent(),
3984
+ _k)]))();
3985
+ return [3 /*break*/, 20];
3986
+ case 7:
3987
+ _m = (_l = MapboxImageryProvider).bind;
3988
+ _o = {
3989
+ mapId: "mapbox.satellite"
3990
+ };
3991
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, DEFAULT_MAPBOX_KEY)];
3992
+ case 8:
3993
+ provider = new (_m.apply(_l, [void 0, (_o.accessToken = _v.sent(),
3994
+ _o)]))();
3995
+ return [3 /*break*/, 20];
3996
+ case 9:
3997
+ _q = (_p = MapboxStyleImageryProvider).bind;
3998
+ _r = {
3999
+ styleId: "satellite-streets-v11"
4000
+ };
4001
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, DEFAULT_MAPBOX_KEY)];
4002
+ case 10:
4003
+ provider = new (_q.apply(_p, [void 0, (_r.accessToken = _v.sent(),
4004
+ _r)]))();
4005
+ return [3 /*break*/, 20];
4006
+ case 11:
4007
+ _t = (_s = MapboxStyleImageryProvider).bind;
4008
+ _u = {
4009
+ styleId: "streets-v11"
4010
+ };
4011
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, DEFAULT_MAPBOX_KEY)];
4012
+ case 12:
4013
+ provider = new (_t.apply(_s, [void 0, (_u.accessToken = _v.sent(),
4014
+ _u)]))();
4015
+ return [3 /*break*/, 20];
4016
+ case 13:
4017
+ provider = new ArcGisMapServerImageryProvider({
4018
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer",
4019
+ enablePickFeatures: false
4020
+ });
4021
+ return [3 /*break*/, 20];
4022
+ case 14:
4023
+ provider = new ArcGisMapServerImageryProvider({
4024
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
4025
+ enablePickFeatures: false
4026
+ });
4027
+ return [3 /*break*/, 20];
4028
+ case 15:
4029
+ provider = new ArcGisMapServerImageryProvider({
4030
+ url: "https://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/",
4031
+ enablePickFeatures: false
4032
+ });
4033
+ return [3 /*break*/, 20];
4034
+ case 16:
4035
+ provider = new OpenStreetMapImageryProvider({
4036
+ url: "https://a.tile.openstreetmap.org/"
4037
+ });
4038
+ return [3 /*break*/, 20];
4039
+ case 17:
4040
+ provider = new OpenStreetMapImageryProvider({
4041
+ url: "https://stamen-tiles.a.ssl.fastly.net/watercolor/"
4042
+ });
4043
+ return [3 /*break*/, 20];
4044
+ case 18:
4045
+ provider = new OpenStreetMapImageryProvider({
4046
+ url: "https://stamen-tiles.a.ssl.fastly.net/toner/"
4047
+ });
4048
+ return [3 /*break*/, 20];
4049
+ case 19:
4050
+ provider = new GridImageryProvider({
4051
+ tilingScheme: new GeographicTilingScheme(),
4052
+ cells: 0,
4053
+ color: Color.fromCssColorString("rgb(97, 151, 237)"),
4054
+ glowColor: Color.fromCssColorString("rgb(54, 54, 54)"),
4055
+ glowWidth: 4,
4056
+ backgroundColor: Color.TRANSPARENT,
4057
+ tileWidth: 256,
4058
+ tileHeight: 256,
4059
+ canvasSize: 256
4060
+ });
4061
+ return [3 /*break*/, 20];
4062
+ case 20: return [2 /*return*/, provider];
4063
+ }
4064
+ });
4065
+ });
3993
4066
  }
3994
4067
  /**
3995
4068
  * Maps a legacy imagery's name to a default imagery id.
@@ -4055,82 +4128,112 @@ var TileRenderEngine;
4055
4128
  var V1;
4056
4129
  (function (V1) {
4057
4130
  function Render(params) {
4058
- var enabled = gatherEnabledImageries(params.viewer);
4059
- var tile = params.data;
4060
- var bId = createLegacyImageryId(tile);
4061
- var layer = enabled.find(function (x) { return x._bId == bId; });
4062
- if (layer) ;
4063
- else if (isLegacyImageryDefault(tile.Name)) {
4064
- var defaultId = legacyMapIdToDefaultId(tile.Name);
4065
- var provider = renderDefaultMapTile(defaultId);
4066
- if (provider) {
4067
- layer = new ImageryLayer(provider);
4068
- }
4069
- }
4070
- else if (tile.SourceUrl) {
4071
- var provider = null;
4072
- var min = tile.Minimum;
4073
- var max = tile.Maximum;
4074
- if (min != undefined && min <= -1) {
4075
- min = undefined;
4076
- }
4077
- if (max != undefined && max <= -1) {
4078
- max = undefined;
4079
- }
4080
- switch (tile.Type) {
4081
- case "BruceImagery":
4082
- provider = new UrlTemplateImageryProvider({
4083
- url: tile.SourceUrl,
4084
- tileHeight: 256,
4085
- tileWidth: 256
4086
- });
4087
- break;
4088
- case "ArcGisImagery":
4089
- provider = new OpenStreetMapImageryProvider({
4090
- url: tile.SourceUrl,
4091
- fileExtension: tile.FileExtension,
4092
- minimumLevel: min,
4093
- maximumLevel: max
4094
- });
4095
- break;
4096
- case "TileMapImagery":
4097
- provider = new TileMapServiceImageryProvider({
4098
- url: tile.SourceUrl,
4099
- fileExtension: tile.FileExtension,
4100
- minimumLevel: min,
4101
- maximumLevel: max
4102
- });
4103
- break;
4104
- case "OpenStreetMapImagery":
4105
- provider = new OpenStreetMapImageryProvider({
4106
- url: tile.SourceUrl,
4107
- fileExtension: tile.FileExtension,
4108
- minimumLevel: min,
4109
- maximumLevel: max
4110
- });
4111
- break;
4112
- case "MapBoxImagery":
4113
- // TODO: Read default account key when missing.
4114
- provider = new UrlTemplateImageryProvider({
4115
- url: "https://api.mapbox.com/styles/v1/"
4116
- + tile.MapBoxUsername + "/" + tile.MapBoxID +
4117
- "/tiles/256/{z}/{x}/{y}?access_token="
4118
- + tile.ProgramKey
4119
- });
4120
- break;
4121
- }
4122
- if (provider) {
4123
- layer = new ImageryLayer(provider);
4124
- }
4125
- }
4126
- if (layer) {
4127
- layer._bId = bId;
4128
- layer._bName = tile.Name;
4129
- if (!params.viewer.imageryLayers.contains(layer)) {
4130
- params.viewer.imageryLayers.add(layer);
4131
- }
4132
- }
4133
- return layer;
4131
+ return __awaiter(this, void 0, void 0, function () {
4132
+ var enabled, tile, bId, layer, defaultId, provider, provider, min, max, _a, mapboxKey, _b;
4133
+ return __generator(this, function (_c) {
4134
+ switch (_c.label) {
4135
+ case 0:
4136
+ enabled = gatherEnabledImageries(params.viewer);
4137
+ tile = params.data;
4138
+ bId = createLegacyImageryId(tile);
4139
+ layer = enabled.find(function (x) { return x._bId == bId; });
4140
+ if (!layer) return [3 /*break*/, 1];
4141
+ return [3 /*break*/, 13];
4142
+ case 1:
4143
+ if (!isLegacyImageryDefault(tile.Name)) return [3 /*break*/, 3];
4144
+ defaultId = legacyMapIdToDefaultId(tile.Name);
4145
+ return [4 /*yield*/, renderDefaultMapTile(params.apiGetter, defaultId)];
4146
+ case 2:
4147
+ provider = _c.sent();
4148
+ if (provider) {
4149
+ layer = new ImageryLayer(provider);
4150
+ }
4151
+ return [3 /*break*/, 13];
4152
+ case 3:
4153
+ if (!tile.SourceUrl) return [3 /*break*/, 13];
4154
+ provider = null;
4155
+ min = tile.Minimum;
4156
+ max = tile.Maximum;
4157
+ if (min != undefined && min <= -1) {
4158
+ min = undefined;
4159
+ }
4160
+ if (max != undefined && max <= -1) {
4161
+ max = undefined;
4162
+ }
4163
+ _a = tile.Type;
4164
+ switch (_a) {
4165
+ case "BruceImagery": return [3 /*break*/, 4];
4166
+ case "ArcGisImagery": return [3 /*break*/, 5];
4167
+ case "TileMapImagery": return [3 /*break*/, 6];
4168
+ case "OpenStreetMapImagery": return [3 /*break*/, 7];
4169
+ case "MapBoxImagery": return [3 /*break*/, 8];
4170
+ }
4171
+ return [3 /*break*/, 12];
4172
+ case 4:
4173
+ provider = new UrlTemplateImageryProvider({
4174
+ url: tile.SourceUrl,
4175
+ tileHeight: 256,
4176
+ tileWidth: 256
4177
+ });
4178
+ return [3 /*break*/, 12];
4179
+ case 5:
4180
+ provider = new OpenStreetMapImageryProvider({
4181
+ url: tile.SourceUrl,
4182
+ fileExtension: tile.FileExtension,
4183
+ minimumLevel: min,
4184
+ maximumLevel: max
4185
+ });
4186
+ return [3 /*break*/, 12];
4187
+ case 6:
4188
+ provider = new TileMapServiceImageryProvider({
4189
+ url: tile.SourceUrl,
4190
+ fileExtension: tile.FileExtension,
4191
+ minimumLevel: min,
4192
+ maximumLevel: max
4193
+ });
4194
+ return [3 /*break*/, 12];
4195
+ case 7:
4196
+ provider = new OpenStreetMapImageryProvider({
4197
+ url: tile.SourceUrl,
4198
+ fileExtension: tile.FileExtension,
4199
+ minimumLevel: min,
4200
+ maximumLevel: max
4201
+ });
4202
+ return [3 /*break*/, 12];
4203
+ case 8:
4204
+ if (!tile.ProgramKey) return [3 /*break*/, 9];
4205
+ _b = tile.ProgramKey;
4206
+ return [3 /*break*/, 11];
4207
+ case 9: return [4 /*yield*/, findKey(params.apiGetter, ProgramKey.EProgramId.Mapbox, null)];
4208
+ case 10:
4209
+ _b = _c.sent();
4210
+ _c.label = 11;
4211
+ case 11:
4212
+ mapboxKey = _b;
4213
+ provider = new UrlTemplateImageryProvider({
4214
+ url: "https://api.mapbox.com/styles/v1/"
4215
+ + tile.MapBoxUsername + "/" + tile.MapBoxID +
4216
+ "/tiles/256/{z}/{x}/{y}?access_token="
4217
+ + mapboxKey
4218
+ });
4219
+ return [3 /*break*/, 12];
4220
+ case 12:
4221
+ if (provider) {
4222
+ layer = new ImageryLayer(provider);
4223
+ }
4224
+ _c.label = 13;
4225
+ case 13:
4226
+ if (layer) {
4227
+ layer._bId = bId;
4228
+ layer._bName = tile.Name;
4229
+ if (!params.viewer.imageryLayers.contains(layer)) {
4230
+ params.viewer.imageryLayers.add(layer);
4231
+ }
4232
+ }
4233
+ return [2 /*return*/, layer];
4234
+ }
4235
+ });
4236
+ });
4134
4237
  }
4135
4238
  V1.Render = Render;
4136
4239
  function RenderView(params) {
@@ -4199,17 +4302,26 @@ var TileRenderEngine;
4199
4302
  _loop_1(i);
4200
4303
  }
4201
4304
  }
4202
- for (i = 0; i < data.length; i++) {
4203
- tile = data[i];
4204
- layer = Render({
4305
+ i = 0;
4306
+ _b.label = 5;
4307
+ case 5:
4308
+ if (!(i < data.length)) return [3 /*break*/, 8];
4309
+ tile = data[i];
4310
+ return [4 /*yield*/, Render({
4205
4311
  apiGetter: params.apiGetter,
4206
4312
  viewer: params.viewer,
4207
4313
  data: tile,
4208
- });
4209
- if (layer) {
4210
- layers.push(layer);
4211
- }
4314
+ })];
4315
+ case 6:
4316
+ layer = _b.sent();
4317
+ if (layer) {
4318
+ layers.push(layer);
4212
4319
  }
4320
+ _b.label = 7;
4321
+ case 7:
4322
+ i++;
4323
+ return [3 /*break*/, 5];
4324
+ case 8:
4213
4325
  // Sort currently enabled (after new ones added) to match desired order.
4214
4326
  enabled = gatherEnabledImageries(params.viewer);
4215
4327
  enabled.sort(function (a, b) {
@@ -4248,9 +4360,9 @@ var TileRenderEngine;
4248
4360
  (function (V2) {
4249
4361
  function GetOrCreateLayer(viewer, apiGetter, meta) {
4250
4362
  return __awaiter(this, void 0, void 0, function () {
4251
- var enabled, i, layer, layerMeta, defaultImg, provider, api, tileset, settings, layer;
4252
- return __generator(this, function (_a) {
4253
- switch (_a.label) {
4363
+ var enabled, i, layer, layerMeta, defaultImg, provider, api, tileset, settings, _a, _b, _c, _d, mapboxKey, _e, layer;
4364
+ return __generator(this, function (_f) {
4365
+ switch (_f.label) {
4254
4366
  case 0:
4255
4367
  enabled = gatherEnabledImageries(viewer);
4256
4368
  for (i = 0; i < enabled.length; i++) {
@@ -4262,62 +4374,83 @@ var TileRenderEngine;
4262
4374
  }
4263
4375
  defaultImg = meta.accountId ? null : ProjectViewTile.DefaultImagery.find(function (x) { return x.id === meta.tilesetId; });
4264
4376
  provider = null;
4265
- if (!defaultImg) return [3 /*break*/, 1];
4266
- provider = renderDefaultMapTile(defaultImg.id);
4267
- return [3 /*break*/, 3];
4377
+ if (!defaultImg) return [3 /*break*/, 2];
4378
+ return [4 /*yield*/, renderDefaultMapTile(apiGetter, defaultImg.id)];
4268
4379
  case 1:
4380
+ provider = _f.sent();
4381
+ return [3 /*break*/, 15];
4382
+ case 2:
4269
4383
  api = apiGetter.getApi(meta.accountId);
4270
4384
  return [4 /*yield*/, Tileset.Get(api, meta.tilesetId)];
4271
- case 2:
4272
- tileset = _a.sent();
4273
- if (tileset.type === Tileset.EType.GeoMap) {
4274
- provider = new TileMapServiceImageryProvider({
4275
- url: Tileset.GetPublicFileUrl(api, meta.tilesetId, ""),
4276
- fileExtension: ".png"
4277
- });
4278
- }
4279
- else if (tileset.type === Tileset.EType.ExternalGeoMap) {
4280
- settings = tileset.settings;
4281
- switch (settings.mapType) {
4282
- case TilesetExtMapTiles.EType.CesiumIon:
4283
- provider = new IonImageryProvider({
4284
- assetId: settings.ionId,
4285
- // TODO
4286
- accessToken: null
4287
- });
4288
- break;
4289
- case TilesetExtMapTiles.EType.MapBoxImagery:
4290
- // TODO: Read default account key when missing.
4291
- provider = new UrlTemplateImageryProvider({
4292
- url: "https://api.mapbox.com/styles/v1/"
4293
- + settings.mapBoxAccount + "/" + settings.mapBoxStyleId +
4294
- "/tiles/256/{z}/{x}/{y}?access_token="
4295
- + settings.mapBoxKey
4296
- });
4297
- break;
4298
- case TilesetExtMapTiles.EType.OpenStreetMapImagery:
4299
- provider = new OpenStreetMapImageryProvider({
4300
- url: settings.url,
4301
- fileExtension: settings.sourceExt
4302
- });
4303
- break;
4304
- case TilesetExtMapTiles.EType.TileMapImagery:
4305
- provider = new TileMapServiceImageryProvider({
4306
- url: settings.url,
4307
- fileExtension: settings.sourceExt
4308
- });
4309
- break;
4310
- }
4385
+ case 3:
4386
+ tileset = _f.sent();
4387
+ if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 4];
4388
+ provider = new TileMapServiceImageryProvider({
4389
+ url: Tileset.GetPublicFileUrl(api, meta.tilesetId, ""),
4390
+ fileExtension: ".png"
4391
+ });
4392
+ return [3 /*break*/, 15];
4393
+ case 4:
4394
+ if (!(tileset.type === Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 14];
4395
+ settings = tileset.settings;
4396
+ _a = settings.mapType;
4397
+ switch (_a) {
4398
+ case TilesetExtMapTiles.EType.CesiumIon: return [3 /*break*/, 5];
4399
+ case TilesetExtMapTiles.EType.MapBoxImagery: return [3 /*break*/, 7];
4400
+ case TilesetExtMapTiles.EType.OpenStreetMapImagery: return [3 /*break*/, 11];
4401
+ case TilesetExtMapTiles.EType.TileMapImagery: return [3 /*break*/, 12];
4311
4402
  }
4312
- else if (tileset.type === Tileset.EType.EntitiesMap) {
4403
+ return [3 /*break*/, 13];
4404
+ case 5:
4405
+ _c = (_b = IonImageryProvider).bind;
4406
+ _d = {
4407
+ assetId: settings.ionId
4408
+ };
4409
+ return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.CesiumIon, null)];
4410
+ case 6:
4411
+ provider = new (_c.apply(_b, [void 0, (_d.accessToken = _f.sent(),
4412
+ _d)]))();
4413
+ return [3 /*break*/, 13];
4414
+ case 7:
4415
+ if (!settings.mapBoxKey) return [3 /*break*/, 8];
4416
+ _e = settings.mapBoxKey;
4417
+ return [3 /*break*/, 10];
4418
+ case 8: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, null)];
4419
+ case 9:
4420
+ _e = _f.sent();
4421
+ _f.label = 10;
4422
+ case 10:
4423
+ mapboxKey = _e;
4424
+ provider = new UrlTemplateImageryProvider({
4425
+ url: "https://api.mapbox.com/styles/v1/"
4426
+ + settings.mapBoxAccount + "/" + settings.mapBoxStyleId +
4427
+ "/tiles/256/{z}/{x}/{y}?access_token="
4428
+ + mapboxKey
4429
+ });
4430
+ return [3 /*break*/, 13];
4431
+ case 11:
4432
+ provider = new OpenStreetMapImageryProvider({
4433
+ url: settings.url,
4434
+ fileExtension: settings.sourceExt
4435
+ });
4436
+ return [3 /*break*/, 13];
4437
+ case 12:
4438
+ provider = new TileMapServiceImageryProvider({
4439
+ url: settings.url,
4440
+ fileExtension: settings.sourceExt
4441
+ });
4442
+ return [3 /*break*/, 13];
4443
+ case 13: return [3 /*break*/, 15];
4444
+ case 14:
4445
+ if (tileset.type === Tileset.EType.EntitiesMap) {
4313
4446
  provider = new UrlTemplateImageryProvider({
4314
4447
  url: Tileset.GetPublicFileUrl(api, meta.tilesetId, "{z}/{x}/{y}.png"),
4315
4448
  tileHeight: 256,
4316
4449
  tileWidth: 256
4317
4450
  });
4318
4451
  }
4319
- _a.label = 3;
4320
- case 3:
4452
+ _f.label = 15;
4453
+ case 15:
4321
4454
  if (provider) {
4322
4455
  layer = viewer.imageryLayers.addImageryProvider(provider);
4323
4456
  layer._bMeta = meta;