@cesium/engine 5.0.0 → 6.1.0

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 (116) hide show
  1. package/Build/Workers/{chunk-J2FHYK2Z.js → chunk-2GWOHAWL.js} +4 -4
  2. package/Build/Workers/{chunk-HV67ARO7.js → chunk-3R5RPSYS.js} +8 -8
  3. package/Build/Workers/{chunk-44B6FQSJ.js → chunk-4CHSBZNO.js} +11 -11
  4. package/Build/Workers/{chunk-QUCJGBCK.js → chunk-4EXWKTY2.js} +7 -7
  5. package/Build/Workers/{chunk-IC7G4BX2.js → chunk-4JETNOH2.js} +11 -11
  6. package/Build/Workers/{chunk-4RKE4B3G.js → chunk-4MPXTOW6.js} +7 -7
  7. package/Build/Workers/{chunk-HIDSEUWS.js → chunk-54GSYZWT.js} +5 -5
  8. package/Build/Workers/{chunk-PEVZYZBQ.js → chunk-5HUDPV54.js} +6 -6
  9. package/Build/Workers/{chunk-H5Q2JKIA.js → chunk-6JRDO2JP.js} +17 -17
  10. package/Build/Workers/{chunk-4AJR66C5.js → chunk-6LG4PY2M.js} +12 -12
  11. package/Build/Workers/{chunk-MG2TXIO5.js → chunk-7ISAYW2A.js} +15 -15
  12. package/Build/Workers/{chunk-4HN3N5SE.js → chunk-A3TYRSRJ.js} +4 -4
  13. package/Build/Workers/{chunk-OCIX2CQ7.js → chunk-AEADHPUM.js} +4 -4
  14. package/Build/Workers/{chunk-K3VEWONC.js → chunk-AI2FOC47.js} +10 -10
  15. package/Build/Workers/{chunk-KZFXE35V.js → chunk-BLXANKPB.js} +6 -6
  16. package/Build/Workers/{chunk-Z2MP3UBE.js → chunk-CHGQXPF3.js} +7 -7
  17. package/Build/Workers/{chunk-CROU4RHL.js → chunk-CKOGHQ6J.js} +5 -5
  18. package/Build/Workers/{chunk-DWJZFZ67.js → chunk-CZFGXAMG.js} +13 -13
  19. package/Build/Workers/{chunk-EHJQEARC.js → chunk-DD2PDL6D.js} +5 -5
  20. package/Build/Workers/{chunk-IQN2LMGD.js → chunk-DHO4HQHW.js} +1 -1
  21. package/Build/Workers/{chunk-ULLMQNFQ.js → chunk-DNCKFFNR.js} +3 -3
  22. package/Build/Workers/{chunk-X2KIWBTW.js → chunk-E5HIGWSZ.js} +5 -5
  23. package/Build/Workers/{chunk-4QGPYV3W.js → chunk-EEL3YC6V.js} +4 -4
  24. package/Build/Workers/{chunk-YLMDWSXO.js → chunk-EH2PEDWL.js} +2 -2
  25. package/Build/Workers/{chunk-AQQGAFKX.js → chunk-F66GYWDZ.js} +5 -5
  26. package/Build/Workers/{chunk-TXOGSFHZ.js → chunk-FMN2NHBU.js} +1 -1
  27. package/Build/Workers/{chunk-PMDLIBEQ.js → chunk-FNHGOHCI.js} +7 -7
  28. package/Build/Workers/{chunk-5E3V7Y4R.js → chunk-HX5XY3NH.js} +6 -6
  29. package/Build/Workers/{chunk-QDUOGCCO.js → chunk-I5XKU3UZ.js} +11 -11
  30. package/Build/Workers/{chunk-3TSHZWOZ.js → chunk-ICD3BWBC.js} +2 -2
  31. package/Build/Workers/{chunk-RCI7BSOM.js → chunk-IDAL54EF.js} +14 -10
  32. package/Build/Workers/{chunk-MYDS6HBL.js → chunk-IQCBK4CE.js} +7 -7
  33. package/Build/Workers/{chunk-SVTSC7FX.js → chunk-JY6WB2NK.js} +13 -13
  34. package/Build/Workers/{chunk-2U6EBIRX.js → chunk-KFCTEEBD.js} +10 -10
  35. package/Build/Workers/{chunk-Y24CDOJC.js → chunk-LID3UUML.js} +6 -6
  36. package/Build/Workers/{chunk-UM7FIUQW.js → chunk-MMNPUV23.js} +2 -2
  37. package/Build/Workers/{chunk-EVLKHUAE.js → chunk-N3OQDJDV.js} +13 -13
  38. package/Build/Workers/{chunk-GPO47TW4.js → chunk-N73NY3KY.js} +1 -1
  39. package/Build/Workers/{chunk-MRCFDEKH.js → chunk-N7FIYNQV.js} +4 -4
  40. package/Build/Workers/{chunk-FOOYJER7.js → chunk-P2BTKBVY.js} +10 -10
  41. package/Build/Workers/{chunk-6I22NWKQ.js → chunk-PNAD2XAN.js} +6 -6
  42. package/Build/Workers/{chunk-VN2IHJKM.js → chunk-QX5ASOZZ.js} +14 -14
  43. package/Build/Workers/{chunk-UFIT5XDI.js → chunk-R5NOUYKW.js} +7 -7
  44. package/Build/Workers/{chunk-YNZ4DMR7.js → chunk-TDVU7NH7.js} +6 -6
  45. package/Build/Workers/{chunk-P32XMW4I.js → chunk-TIEL2RYB.js} +15 -15
  46. package/Build/Workers/{chunk-GLCRFDOB.js → chunk-U5O26DDO.js} +2 -2
  47. package/Build/Workers/{chunk-CTJCECTX.js → chunk-UJ76JVUZ.js} +5 -5
  48. package/Build/Workers/{chunk-7N67FBLW.js → chunk-ULABUYF6.js} +18 -18
  49. package/Build/Workers/{chunk-VWSD2XV5.js → chunk-VIAGIVGP.js} +8 -8
  50. package/Build/Workers/{chunk-6EHT6GS3.js → chunk-WYMW5NZB.js} +2 -2
  51. package/Build/Workers/{chunk-V5S5N2IS.js → chunk-XKGSTUQO.js} +9 -9
  52. package/Build/Workers/{chunk-TXYJOVQK.js → chunk-XNRYWRVT.js} +1 -1
  53. package/Build/Workers/{chunk-2ZI7FZ3Q.js → chunk-YK5RU5AO.js} +2 -2
  54. package/Build/Workers/{chunk-UMLTOPAE.js → chunk-ZERWARDV.js} +1 -1
  55. package/Build/Workers/combineGeometry.js +23 -23
  56. package/Build/Workers/createBoxGeometry.js +17 -17
  57. package/Build/Workers/createBoxOutlineGeometry.js +15 -15
  58. package/Build/Workers/createCircleGeometry.js +25 -25
  59. package/Build/Workers/createCircleOutlineGeometry.js +18 -18
  60. package/Build/Workers/createCoplanarPolygonGeometry.js +32 -32
  61. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +30 -30
  62. package/Build/Workers/createCorridorGeometry.js +29 -29
  63. package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
  64. package/Build/Workers/createCylinderGeometry.js +19 -19
  65. package/Build/Workers/createCylinderOutlineGeometry.js +17 -17
  66. package/Build/Workers/createEllipseGeometry.js +25 -25
  67. package/Build/Workers/createEllipseOutlineGeometry.js +18 -18
  68. package/Build/Workers/createEllipsoidGeometry.js +18 -18
  69. package/Build/Workers/createEllipsoidOutlineGeometry.js +17 -17
  70. package/Build/Workers/createFrustumGeometry.js +17 -17
  71. package/Build/Workers/createFrustumOutlineGeometry.js +17 -17
  72. package/Build/Workers/createGeometry.js +23 -23
  73. package/Build/Workers/createGroundPolylineGeometry.js +21 -21
  74. package/Build/Workers/createPlaneGeometry.js +15 -15
  75. package/Build/Workers/createPlaneOutlineGeometry.js +14 -14
  76. package/Build/Workers/createPolygonGeometry.js +40 -38
  77. package/Build/Workers/createPolygonOutlineGeometry.js +29 -29
  78. package/Build/Workers/createPolylineGeometry.js +24 -24
  79. package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
  80. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
  81. package/Build/Workers/createRectangleGeometry.js +26 -26
  82. package/Build/Workers/createRectangleOutlineGeometry.js +19 -19
  83. package/Build/Workers/createSimplePolylineGeometry.js +22 -22
  84. package/Build/Workers/createSphereGeometry.js +18 -18
  85. package/Build/Workers/createSphereOutlineGeometry.js +17 -17
  86. package/Build/Workers/createTaskProcessorWorker.js +3 -3
  87. package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
  88. package/Build/Workers/createVectorTileGeometries.js +23 -23
  89. package/Build/Workers/createVectorTilePoints.js +12 -12
  90. package/Build/Workers/createVectorTilePolygons.js +21 -21
  91. package/Build/Workers/createVectorTilePolylines.js +14 -14
  92. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +21 -21
  93. package/Build/Workers/createVerticesFromHeightmap.js +21 -21
  94. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +18 -18
  95. package/Build/Workers/createWallGeometry.js +23 -23
  96. package/Build/Workers/createWallOutlineGeometry.js +22 -22
  97. package/Build/Workers/decodeDraco.js +11 -11
  98. package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
  99. package/Build/Workers/decodeI3S.js +9 -9
  100. package/Build/Workers/transcodeKTX2.js +7 -7
  101. package/Build/Workers/transferTypedArrayTest.js +1 -1
  102. package/Build/Workers/upsampleQuantizedTerrainMesh.js +21 -21
  103. package/README.md +1 -1
  104. package/Source/Core/EllipsoidRhumbLine.js +10 -4
  105. package/Source/Core/GoogleMaps.js +8 -23
  106. package/Source/Core/Ion.js +1 -1
  107. package/Source/Core/PolygonGeometry.js +7 -6
  108. package/Source/DataSources/EntityCluster.js +1 -1
  109. package/Source/Renderer/UniformState.js +8 -18
  110. package/Source/Scene/ArcGisMapService.js +1 -1
  111. package/Source/Scene/BingMapsImageryProvider.js +27 -6
  112. package/Source/Scene/LabelCollection.js +2 -1
  113. package/Source/Scene/createGooglePhotorealistic3DTileset.js +38 -9
  114. package/index.d.ts +18 -3
  115. package/index.js +341 -341
  116. package/package.json +1 -1
@@ -4,7 +4,7 @@ import Resource from "./Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhYjVkZWE2Yi05ZjlmLTQyOTAtYjFkOC0xMmFmZTYyMjhmZGIiLCJpZCI6MjU5LCJpYXQiOjE2OTYyNjgyMzN9.iKIgzd7PueqxXsUNSIhk5C6n8uiugH-Dxy9uhOdJ5Zg";
7
+ "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyMzVjZDg3Yi0wMjVkLTQ0MzctOTZjOC1jZjMwNjkzZmI5MWUiLCJpZCI6MjU5LCJpYXQiOjE2OTg4NTM0MDl9.L_g01CjNKNVijEJ_8kOxiO02OADnuSjRFLkZWvhupcc";
8
8
  /**
9
9
  * Default settings for accessing the Cesium ion API.
10
10
  *
@@ -636,7 +636,7 @@ function createGeometryFromPositionsExtruded(
636
636
  }
637
637
 
638
638
  let outerRing = hierarchy.outerRing;
639
- let tangentPlane = EllipsoidTangentPlane.fromPoints(outerRing, ellipsoid);
639
+ const tangentPlane = EllipsoidTangentPlane.fromPoints(outerRing, ellipsoid);
640
640
  let positions2D = tangentPlane.projectPointsOntoPlane(
641
641
  outerRing,
642
642
  createGeometryFromPositionsExtrudedPositions
@@ -664,8 +664,6 @@ function createGeometryFromPositionsExtruded(
664
664
  const holes = hierarchy.holes;
665
665
  for (i = 0; i < holes.length; i++) {
666
666
  let hole = holes[i];
667
-
668
- tangentPlane = EllipsoidTangentPlane.fromPoints(hole, ellipsoid);
669
667
  positions2D = tangentPlane.projectPointsOntoPlane(
670
668
  hole,
671
669
  createGeometryFromPositionsExtrudedPositions
@@ -1331,7 +1329,7 @@ function getTangentPlane(rectangle, positions, ellipsoid) {
1331
1329
  }
1332
1330
 
1333
1331
  const scratchCartographicCyllindrical = new Cartographic();
1334
- function createProjectTo2d(rectangle, ellipsoid) {
1332
+ function createProjectTo2d(rectangle, outerPositions, ellipsoid) {
1335
1333
  return (positions, results) => {
1336
1334
  // If the polygon positions span a large enough extent, use a specialized projection
1337
1335
  if (rectangle.height >= CesiumMath.PI || rectangle.width >= CesiumMath.PI) {
@@ -1360,7 +1358,10 @@ function createProjectTo2d(rectangle, ellipsoid) {
1360
1358
  }
1361
1359
 
1362
1360
  // Use a local tangent plane for smaller extents
1363
- const tangentPlane = EllipsoidTangentPlane.fromPoints(positions, ellipsoid);
1361
+ const tangentPlane = EllipsoidTangentPlane.fromPoints(
1362
+ outerPositions,
1363
+ ellipsoid
1364
+ );
1364
1365
  return tangentPlane.projectPointsOntoPlane(positions, results);
1365
1366
  };
1366
1367
  }
@@ -1466,7 +1467,7 @@ PolygonGeometry.createGeometry = function (polygonGeometry) {
1466
1467
  const results = PolygonGeometryLibrary.polygonsFromHierarchy(
1467
1468
  polygonHierarchy,
1468
1469
  hasTextureCoordinates,
1469
- createProjectTo2d(rectangle, ellipsoid),
1470
+ createProjectTo2d(rectangle, outerPositions, ellipsoid),
1470
1471
  !perPositionHeight,
1471
1472
  ellipsoid,
1472
1473
  createSplitPolygons(rectangle, ellipsoid, arcType, perPositionHeight)
@@ -648,7 +648,7 @@ function createGetEntity(
648
648
 
649
649
  const unusedIndices = this[unusedIndicesProperty];
650
650
  if (unusedIndices.length > 0) {
651
- index = unusedIndices.pop();
651
+ index = unusedIndices.shift();
652
652
  entityItem = collection.get(index);
653
653
  } else {
654
654
  entityItem = collection.add();
@@ -1513,7 +1513,6 @@ function cleanNormal(uniformState) {
1513
1513
 
1514
1514
  const m = uniformState._normal;
1515
1515
  Matrix4.getMatrix3(uniformState.inverseModelView, m);
1516
- Matrix3.getRotation(m, m);
1517
1516
  Matrix3.transpose(m, m);
1518
1517
  }
1519
1518
  }
@@ -1524,7 +1523,6 @@ function cleanNormal3D(uniformState) {
1524
1523
 
1525
1524
  const m = uniformState._normal3D;
1526
1525
  Matrix4.getMatrix3(uniformState.inverseModelView3D, m);
1527
- Matrix3.getRotation(m, m);
1528
1526
  Matrix3.transpose(m, m);
1529
1527
  }
1530
1528
  }
@@ -1532,28 +1530,20 @@ function cleanNormal3D(uniformState) {
1532
1530
  function cleanInverseNormal(uniformState) {
1533
1531
  if (uniformState._inverseNormalDirty) {
1534
1532
  uniformState._inverseNormalDirty = false;
1535
- Matrix4.getMatrix3(
1536
- uniformState.inverseModelView,
1537
- uniformState._inverseNormal
1538
- );
1539
- Matrix3.getRotation(
1540
- uniformState._inverseNormal,
1541
- uniformState._inverseNormal
1542
- );
1533
+
1534
+ const m = uniformState._inverseNormal;
1535
+ Matrix4.getMatrix3(uniformState.modelView, m);
1536
+ Matrix3.transpose(m, m);
1543
1537
  }
1544
1538
  }
1545
1539
 
1546
1540
  function cleanInverseNormal3D(uniformState) {
1547
1541
  if (uniformState._inverseNormal3DDirty) {
1548
1542
  uniformState._inverseNormal3DDirty = false;
1549
- Matrix4.getMatrix3(
1550
- uniformState.inverseModelView3D,
1551
- uniformState._inverseNormal3D
1552
- );
1553
- Matrix3.getRotation(
1554
- uniformState._inverseNormal3D,
1555
- uniformState._inverseNormal3D
1556
- );
1543
+
1544
+ const m = uniformState._inverseNormal3D;
1545
+ Matrix4.getMatrix3(uniformState.modelView3D, m);
1546
+ Matrix3.transpose(m, m);
1557
1547
  }
1558
1548
  }
1559
1549
 
@@ -4,7 +4,7 @@ import Resource from "../Core/Resource.js";
4
4
 
5
5
  let defaultTokenCredit;
6
6
  const defaultAccessToken =
7
- "AAPK4db83df15a06415e9b7d45d826eec992u0REAmuLmykhOFOk_4e61HgsO_e3C_qGUgiWNGElpjpiMfO9_Qg5ZRyy8POvB5EF";
7
+ "AAPK72121c3f05244af285ad75999db084bfDGkWA0QECX6QWOdaQmarXC21i1ogkvj8XCctaZExrW8Hw1AT58yG7twH3VFzZl13";
8
8
  /**
9
9
  * Default options for accessing the ArcGIS image tile service.
10
10
  *
@@ -24,6 +24,7 @@ import ImageryProvider from "./ImageryProvider.js";
24
24
  * @property {string} [tileProtocol] The protocol to use when loading tiles, e.g. 'http' or 'https'.
25
25
  * By default, tiles are loaded using the same protocol as the page.
26
26
  * @property {BingMapsStyle} [mapStyle=BingMapsStyle.AERIAL] The type of Bing Maps imagery to load.
27
+ * @property {string} [mapLayer] Additional display layer options as defined on {@link https://learn.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata#template-parameters}
27
28
  * @property {string} [culture=''] The culture to use when requesting Bing Maps imagery. Not
28
29
  * all cultures are supported. See {@link http://msdn.microsoft.com/en-us/library/hh441729.aspx}
29
30
  * for information on the supported cultures.
@@ -209,6 +210,7 @@ function BingMapsImageryProvider(options) {
209
210
  this._defaultMagnificationFilter = undefined;
210
211
 
211
212
  this._mapStyle = defaultValue(options.mapStyle, BingMapsStyle.AERIAL);
213
+ this._mapLayer = options.mapLayer;
212
214
  this._culture = defaultValue(options.culture, "");
213
215
  this._key = options.key;
214
216
 
@@ -287,6 +289,18 @@ Object.defineProperties(BingMapsImageryProvider.prototype, {
287
289
  },
288
290
  },
289
291
 
292
+ /**
293
+ * Gets the additional map layer options as defined in {@link https://learn.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata#template-parameters}/
294
+ * @memberof BingMapsImageryProvider.prototype
295
+ * @type {string}
296
+ * @readonly
297
+ */
298
+ mapLayer: {
299
+ get: function () {
300
+ return this._mapLayer;
301
+ },
302
+ },
303
+
290
304
  /**
291
305
  * The culture to use when requesting Bing Maps imagery. Not
292
306
  * all cultures are supported. See {@link http://msdn.microsoft.com/en-us/library/hh441729.aspx}
@@ -426,7 +440,7 @@ Object.defineProperties(BingMapsImageryProvider.prototype, {
426
440
  */
427
441
  hasAlphaChannel: {
428
442
  get: function () {
429
- return false;
443
+ return defined(this.mapLayer);
430
444
  },
431
445
  },
432
446
  });
@@ -475,13 +489,20 @@ BingMapsImageryProvider.fromUrl = async function (url, options) {
475
489
  const mapStyle = defaultValue(options.mapStyle, BingMapsStyle.AERIAL);
476
490
  const resource = Resource.createIfNeeded(url);
477
491
  resource.appendForwardSlash();
492
+
493
+ const queryParameters = {
494
+ incl: "ImageryProviders",
495
+ key: options.key,
496
+ uriScheme: tileProtocol,
497
+ };
498
+
499
+ if (defined(options.mapLayer)) {
500
+ queryParameters.mapLayer = options.mapLayer;
501
+ }
502
+
478
503
  const metadataResource = resource.getDerivedResource({
479
504
  url: `REST/v1/Imagery/Metadata/${mapStyle}`,
480
- queryParameters: {
481
- incl: "ImageryProviders",
482
- key: options.key,
483
- uriScheme: tileProtocol,
484
- },
505
+ queryParameters: queryParameters,
485
506
  });
486
507
 
487
508
  const provider = new BingMapsImageryProvider(options);
@@ -143,7 +143,7 @@ function rebindAllGlyphs(labelCollection, label) {
143
143
  glyphs.length = textLength;
144
144
 
145
145
  const showBackground =
146
- label._showBackground && text.split("\n").join("").length > 0;
146
+ label.show && label._showBackground && text.split("\n").join("").length > 0;
147
147
  let backgroundBillboard = label._backgroundBillboard;
148
148
  const backgroundBillboardCollection =
149
149
  labelCollection._backgroundBillboardCollection;
@@ -181,6 +181,7 @@ function rebindAllGlyphs(labelCollection, label) {
181
181
  label._distanceDisplayCondition;
182
182
  backgroundBillboard.disableDepthTestDistance =
183
183
  label._disableDepthTestDistance;
184
+ backgroundBillboard.clusterShow = label.clusterShow;
184
185
  }
185
186
 
186
187
  const glyphTextureCache = labelCollection._glyphTextureCache;
@@ -1,6 +1,7 @@
1
1
  import Cesium3DTileset from "./Cesium3DTileset.js";
2
2
  import defaultValue from "../Core/defaultValue.js";
3
3
  import defined from "../Core/defined.js";
4
+ import IonResource from "../Core/IonResource.js";
4
5
  import GoogleMaps from "../Core/GoogleMaps.js";
5
6
  import Resource from "../Core/Resource.js";
6
7
 
@@ -16,6 +17,17 @@ import Resource from "../Core/Resource.js";
16
17
  * @see GoogleMaps
17
18
  *
18
19
  * @example
20
+ * const viewer = new Cesium.Viewer("cesiumContainer");
21
+ *
22
+ * try {
23
+ * const tileset = await Cesium.createGooglePhotorealistic3DTileset();
24
+ * viewer.scene.primitives.add(tileset));
25
+ * } catch (error) {
26
+ * console.log(`Error creating tileset: ${error}`);
27
+ * }
28
+ *
29
+ * @example
30
+ * // Use your own Google Maps API key
19
31
  * Cesium.GoogleMaps.defaultApiKey = "your-api-key";
20
32
  *
21
33
  * const viewer = new Cesium.Viewer("cesiumContainer");
@@ -28,22 +40,24 @@ import Resource from "../Core/Resource.js";
28
40
  * }
29
41
  */
30
42
  async function createGooglePhotorealistic3DTileset(key, options) {
31
- key = defaultValue(key, GoogleMaps.defaultApiKey);
32
-
33
- let credits;
34
- const credit = GoogleMaps.getDefaultApiKeyCredit(key);
35
- if (defined(credit)) {
36
- credits = [credit];
37
- }
38
-
39
43
  options = defaultValue(options, {});
40
- options.showCreditsOnScreen = true;
41
44
  options.cacheBytes = defaultValue(options.cacheBytes, 1536 * 1024 * 1024);
42
45
  options.maximumCacheOverflowBytes = defaultValue(
43
46
  options.maximumCacheOverflowBytes,
44
47
  1024 * 1024 * 1024
45
48
  );
46
49
 
50
+ key = defaultValue(key, GoogleMaps.defaultApiKey);
51
+ if (!defined(key)) {
52
+ return requestCachedIonTileset(options);
53
+ }
54
+
55
+ let credits;
56
+ const credit = GoogleMaps.getDefaultCredit();
57
+ if (defined(credit)) {
58
+ credits = [credit];
59
+ }
60
+
47
61
  const resource = new Resource({
48
62
  url: `${GoogleMaps.mapTilesApiEndpoint}3dtiles/root.json`,
49
63
  queryParameters: {
@@ -55,4 +69,19 @@ async function createGooglePhotorealistic3DTileset(key, options) {
55
69
  return Cesium3DTileset.fromUrl(resource, options);
56
70
  }
57
71
 
72
+ const metadataCache = {};
73
+ async function requestCachedIonTileset(options) {
74
+ const ionAssetId = 2275207;
75
+ const cacheKey = ionAssetId;
76
+
77
+ let promise = metadataCache[cacheKey];
78
+ if (!defined(promise)) {
79
+ promise = IonResource.fromAssetId(ionAssetId);
80
+ metadataCache[cacheKey] = promise;
81
+ }
82
+
83
+ const resource = await promise;
84
+ return Cesium3DTileset.fromUrl(resource, options);
85
+ }
86
+
58
87
  export default createGooglePhotorealistic3DTileset;
package/index.d.ts CHANGED
@@ -7568,15 +7568,14 @@ export class GoogleEarthEnterpriseTerrainProvider {
7568
7568
  /**
7569
7569
  * Default settings for accessing the Google Maps API.
7570
7570
  * <br/>
7571
- * An API key is only required if you are using any Google Maps APIs, such as {@link createGooglePhotorealistic3DTileset}.
7572
- * A default key is provided for evaluation purposes only.
7571
+ * An API key is only required if you are directly using any Google Maps APIs, such as through {@link createGooglePhotorealistic3DTileset}.
7573
7572
  * Follow instructions for managing API keys for the Google Maps Platform at {@link https://developers.google.com/maps/documentation/embed/get-api-key}
7574
7573
  */
7575
7574
  export namespace GoogleMaps {
7576
7575
  /**
7577
7576
  * Gets or sets the default Google Maps API key.
7578
7577
  */
7579
- var defaultApiKey: string;
7578
+ var defaultApiKey: undefined | string;
7580
7579
  /**
7581
7580
  * Gets or sets the default Google Map Tiles API endpoint.
7582
7581
  */
@@ -26115,6 +26114,7 @@ export namespace BingMapsImageryProvider {
26115
26114
  * @property [tileProtocol] - The protocol to use when loading tiles, e.g. 'http' or 'https'.
26116
26115
  * By default, tiles are loaded using the same protocol as the page.
26117
26116
  * @property [mapStyle = BingMapsStyle.AERIAL] - The type of Bing Maps imagery to load.
26117
+ * @property [mapLayer] - Additional display layer options as defined on {@link https://learn.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata#template-parameters}
26118
26118
  * @property [culture = ''] - The culture to use when requesting Bing Maps imagery. Not
26119
26119
  * all cultures are supported. See {@link http://msdn.microsoft.com/en-us/library/hh441729.aspx}
26120
26120
  * for information on the supported cultures.
@@ -26128,6 +26128,7 @@ export namespace BingMapsImageryProvider {
26128
26128
  key?: string;
26129
26129
  tileProtocol?: string;
26130
26130
  mapStyle?: BingMapsStyle;
26131
+ mapLayer?: string;
26131
26132
  culture?: string;
26132
26133
  ellipsoid?: Ellipsoid;
26133
26134
  tileDiscardPolicy?: TileDiscardPolicy;
@@ -26166,6 +26167,10 @@ export class BingMapsImageryProvider {
26166
26167
  * Gets the type of Bing Maps imagery to load.
26167
26168
  */
26168
26169
  readonly mapStyle: BingMapsStyle;
26170
+ /**
26171
+ * Gets the additional map layer options as defined in {@link https://learn.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata#template-parameters}/
26172
+ */
26173
+ readonly mapLayer: string;
26169
26174
  /**
26170
26175
  * The culture to use when requesting Bing Maps imagery. Not
26171
26176
  * all cultures are supported. See {@link http://msdn.microsoft.com/en-us/library/hh441729.aspx}
@@ -42241,6 +42246,16 @@ export function createElevationBandMaterial(options: {
42241
42246
  /**
42242
42247
  * Creates a {@link Cesium3DTileset} instance for the Google Photorealistic 3D Tiles tileset.
42243
42248
  * @example
42249
+ * const viewer = new Cesium.Viewer("cesiumContainer");
42250
+ *
42251
+ * try {
42252
+ * const tileset = await Cesium.createGooglePhotorealistic3DTileset();
42253
+ * viewer.scene.primitives.add(tileset));
42254
+ * } catch (error) {
42255
+ * console.log(`Error creating tileset: ${error}`);
42256
+ * }
42257
+ * @example
42258
+ * // Use your own Google Maps API key
42244
42259
  * Cesium.GoogleMaps.defaultApiKey = "your-api-key";
42245
42260
  *
42246
42261
  * const viewer = new Cesium.Viewer("cesiumContainer");