@cesium/engine 2.1.0 → 2.3.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 (240) hide show
  1. package/Build/Workers/{AttributeCompression-8a5a065e.js → AttributeCompression-f9f6c717.js} +1 -1
  2. package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-31fadcf0.js} +1 -1
  3. package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-995f0079.js} +1 -1
  4. package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-7eb1af60.js} +1 -1
  5. package/Build/Workers/{Color-f85df1be.js → Color-2dc49658.js} +1 -1
  6. package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-d7d972d6.js} +1 -1
  7. package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-1f5ef7b3.js} +1 -1
  8. package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-23c67a6c.js} +1 -1
  9. package/Build/Workers/{CylinderGeometryLibrary-135b0858.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
  10. package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-37014da4.js} +1 -1
  11. package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-92ab6b1e.js} +1 -1
  12. package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-12b6fef5.js} +1 -1
  13. package/Build/Workers/{EllipsoidGeodesic-dcff5cbd.js → EllipsoidGeodesic-5b3623dc.js} +1 -1
  14. package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-508da15c.js} +1 -1
  15. package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-40d97455.js} +1 -1
  16. package/Build/Workers/{EllipsoidRhumbLine-b672d507.js → EllipsoidRhumbLine-ef872433.js} +1 -1
  17. package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-46d4d9c2.js} +1 -1
  18. package/Build/Workers/{EncodedCartesian3-e8bbca36.js → EncodedCartesian3-57415c8a.js} +1 -1
  19. package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-38605e69.js} +32 -4
  20. package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-a466e9c7.js} +1 -1
  21. package/Build/Workers/{GeometryInstance-3fb607b7.js → GeometryInstance-34d9e21e.js} +1 -1
  22. package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-dcf79306.js} +1 -1
  23. package/Build/Workers/{IndexDatatype-b8f3e09d.js → IndexDatatype-2643aa47.js} +1 -1
  24. package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-88c49b2e.js} +1 -1
  25. package/Build/Workers/{Math-dad82b4d.js → Math-0a2ac845.js} +12 -2
  26. package/Build/Workers/{Matrix2-1e403d0e.js → Matrix2-e1298525.js} +1 -1
  27. package/Build/Workers/{Matrix3-fa806b97.js → Matrix3-41c58dde.js} +1 -1
  28. package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-2dd47921.js} +5 -3
  29. package/Build/Workers/{Plane-c27e1ac6.js → Plane-4c3d403b.js} +1 -1
  30. package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-59126025.js} +1 -1
  31. package/Build/Workers/PolygonPipeline-1fe328c0.js +1344 -0
  32. package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-896735cc.js} +1 -1
  33. package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-9c0639f7.js} +1 -1
  34. package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-fc1a47ff.js} +1 -1
  35. package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-a23c9ebe.js} +1 -1
  36. package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-51b8b33b.js} +1 -1
  37. package/Build/Workers/Transforms-bc45e707.js +14699 -0
  38. package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-007e9883.js} +1 -1
  39. package/Build/Workers/{WebMercatorProjection-76a3fcc0.js → WebMercatorProjection-13ed1a6e.js} +1 -1
  40. package/Build/Workers/{arrayRemoveDuplicates-fac118a8.js → arrayRemoveDuplicates-d2061e85.js} +1 -1
  41. package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
  42. package/Build/Workers/combineGeometry.js +1 -1
  43. package/Build/Workers/createBoxGeometry.js +1 -1
  44. package/Build/Workers/createBoxOutlineGeometry.js +1 -1
  45. package/Build/Workers/createCircleGeometry.js +1 -1
  46. package/Build/Workers/createCircleOutlineGeometry.js +1 -1
  47. package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
  48. package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
  49. package/Build/Workers/createCorridorGeometry.js +1 -1
  50. package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
  51. package/Build/Workers/createCylinderGeometry.js +1 -1
  52. package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
  53. package/Build/Workers/createEllipseGeometry.js +1 -1
  54. package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
  55. package/Build/Workers/createEllipsoidGeometry.js +1 -1
  56. package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
  57. package/Build/Workers/createFrustumGeometry.js +1 -1
  58. package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
  59. package/Build/Workers/createGeometry.js +1 -1
  60. package/Build/Workers/createGroundPolylineGeometry.js +1 -1
  61. package/Build/Workers/createPlaneGeometry.js +1 -1
  62. package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
  63. package/Build/Workers/createPolygonGeometry.js +1 -1
  64. package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
  65. package/Build/Workers/createPolylineGeometry.js +1 -1
  66. package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
  67. package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
  68. package/Build/Workers/createRectangleGeometry.js +1 -1
  69. package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
  70. package/Build/Workers/createSimplePolylineGeometry.js +1 -1
  71. package/Build/Workers/createSphereGeometry.js +1 -1
  72. package/Build/Workers/createSphereOutlineGeometry.js +1 -1
  73. package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
  74. package/Build/Workers/createVectorTileGeometries.js +1 -1
  75. package/Build/Workers/createVectorTilePoints.js +1 -1
  76. package/Build/Workers/createVectorTilePolygons.js +1 -1
  77. package/Build/Workers/createVectorTilePolylines.js +1 -1
  78. package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  79. package/Build/Workers/createVerticesFromHeightmap.js +5 -8
  80. package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
  81. package/Build/Workers/createWallGeometry.js +1 -1
  82. package/Build/Workers/createWallOutlineGeometry.js +1 -1
  83. package/Build/Workers/decodeDraco.js +1 -1
  84. package/Build/Workers/decodeI3S.js +1 -1
  85. package/Build/Workers/package.js +1 -1
  86. package/Build/Workers/transferTypedArrayTest.js +1 -1
  87. package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
  88. package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
  89. package/Source/Core/BingMapsGeocoderService.js +19 -1
  90. package/Source/Core/CartographicGeocoderService.js +15 -0
  91. package/Source/Core/CesiumTerrainProvider.js +571 -434
  92. package/Source/Core/Credit.js +1 -1
  93. package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
  94. package/Source/Core/EllipsoidTerrainProvider.js +17 -10
  95. package/Source/Core/FrustumGeometry.js +4 -3
  96. package/Source/Core/GeocoderService.js +32 -1
  97. package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
  98. package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
  99. package/Source/Core/Ion.js +1 -1
  100. package/Source/Core/IonGeocoderService.js +17 -2
  101. package/Source/Core/IonResource.js +14 -3
  102. package/Source/Core/OpenCageGeocoderService.js +18 -1
  103. package/Source/Core/OrientedBoundingBox.js +4 -2
  104. package/Source/Core/OrthographicFrustum.js +13 -0
  105. package/Source/Core/PeliasGeocoderService.js +14 -1
  106. package/Source/Core/PerspectiveFrustum.js +14 -0
  107. package/Source/Core/Request.js +3 -2
  108. package/Source/Core/RequestScheduler.js +10 -5
  109. package/Source/Core/Resource.js +230 -236
  110. package/Source/Core/TerrainProvider.js +9 -14
  111. package/Source/Core/TileProviderError.js +8 -8
  112. package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
  113. package/Source/Core/buildModuleUrl.js +4 -3
  114. package/Source/Core/createWorldTerrain.js +20 -2
  115. package/Source/Core/createWorldTerrainAsync.js +48 -0
  116. package/Source/Core/sampleTerrain.js +9 -10
  117. package/Source/Core/sampleTerrainMostDetailed.js +66 -72
  118. package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
  119. package/Source/DataSources/DataSourceDisplay.js +2 -2
  120. package/Source/DataSources/Entity.js +6 -1
  121. package/Source/DataSources/EntityCluster.js +126 -128
  122. package/Source/DataSources/ModelVisualizer.js +104 -34
  123. package/Source/DataSources/PolygonGraphics.js +1 -1
  124. package/Source/Renderer/UniformState.js +3 -2
  125. package/Source/Renderer/demodernizeShader.js +5 -5
  126. package/Source/Scene/ArcGisBaseMapType.js +12 -0
  127. package/Source/Scene/ArcGisMapServerImageryProvider.js +694 -376
  128. package/Source/Scene/ArcGisMapService.js +83 -0
  129. package/Source/Scene/BingMapsImageryProvider.js +511 -305
  130. package/Source/Scene/BufferLoader.js +29 -34
  131. package/Source/Scene/Camera.js +8 -7
  132. package/Source/Scene/Cesium3DTile.js +392 -254
  133. package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
  134. package/Source/Scene/Cesium3DTileContent.js +16 -0
  135. package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
  136. package/Source/Scene/Cesium3DTilePass.js +8 -11
  137. package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
  138. package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
  139. package/Source/Scene/Cesium3DTileset.js +756 -482
  140. package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
  141. package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
  142. package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
  143. package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
  144. package/Source/Scene/ClassificationPrimitive.js +7 -0
  145. package/Source/Scene/Composite3DTileContent.js +69 -26
  146. package/Source/Scene/CreditDisplay.js +132 -20
  147. package/Source/Scene/DepthPlane.js +1 -1
  148. package/Source/Scene/Empty3DTileContent.js +31 -1
  149. package/Source/Scene/Geometry3DTileContent.js +47 -7
  150. package/Source/Scene/Globe.js +5 -1
  151. package/Source/Scene/GlobeSurfaceTile.js +2 -1
  152. package/Source/Scene/GlobeSurfaceTileProvider.js +53 -30
  153. package/Source/Scene/GltfBufferViewLoader.js +47 -91
  154. package/Source/Scene/GltfDracoLoader.js +110 -112
  155. package/Source/Scene/GltfImageLoader.js +71 -78
  156. package/Source/Scene/GltfIndexBufferLoader.js +108 -121
  157. package/Source/Scene/GltfJsonLoader.js +87 -74
  158. package/Source/Scene/GltfLoader.js +381 -300
  159. package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
  160. package/Source/Scene/GltfTextureLoader.js +97 -96
  161. package/Source/Scene/GltfVertexBufferLoader.js +128 -133
  162. package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
  163. package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
  164. package/Source/Scene/GridImageryProvider.js +267 -104
  165. package/Source/Scene/GroundPolylinePrimitive.js +12 -1
  166. package/Source/Scene/GroundPrimitive.js +8 -1
  167. package/Source/Scene/I3SDataProvider.js +214 -113
  168. package/Source/Scene/I3SFeature.js +7 -6
  169. package/Source/Scene/I3SLayer.js +26 -37
  170. package/Source/Scene/I3SNode.js +59 -66
  171. package/Source/Scene/Imagery.js +6 -1
  172. package/Source/Scene/ImageryLayer.js +299 -48
  173. package/Source/Scene/ImageryLayerCollection.js +26 -0
  174. package/Source/Scene/ImageryProvider.js +129 -111
  175. package/Source/Scene/Implicit3DTileContent.js +72 -23
  176. package/Source/Scene/ImplicitSubtree.js +66 -45
  177. package/Source/Scene/IonImageryProvider.js +482 -275
  178. package/Source/Scene/MapboxImageryProvider.js +272 -112
  179. package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
  180. package/Source/Scene/MetadataSchemaLoader.js +26 -36
  181. package/Source/Scene/Model/B3dmLoader.js +42 -46
  182. package/Source/Scene/Model/GeoJsonLoader.js +8 -32
  183. package/Source/Scene/Model/I3dmLoader.js +48 -74
  184. package/Source/Scene/Model/MaterialPipelineStage.js +12 -12
  185. package/Source/Scene/Model/Model.js +514 -135
  186. package/Source/Scene/Model/Model3DTileContent.js +83 -31
  187. package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
  188. package/Source/Scene/Model/ModelDrawCommand.js +15 -26
  189. package/Source/Scene/Model/ModelUtility.js +16 -16
  190. package/Source/Scene/Model/PntsLoader.js +27 -32
  191. package/Source/Scene/Model/UniformType.js +1 -1
  192. package/Source/Scene/Multiple3DTileContent.js +134 -115
  193. package/Source/Scene/Picking.js +3 -2
  194. package/Source/Scene/PointCloud.js +11 -19
  195. package/Source/Scene/Primitive.js +20 -0
  196. package/Source/Scene/QuadtreePrimitive.js +5 -2
  197. package/Source/Scene/QuadtreeTileProvider.js +4 -8
  198. package/Source/Scene/ResourceCache.js +47 -105
  199. package/Source/Scene/ResourceCacheStatistics.js +24 -58
  200. package/Source/Scene/ResourceLoader.js +5 -17
  201. package/Source/Scene/ResourceLoaderState.js +12 -4
  202. package/Source/Scene/Scene.js +65 -0
  203. package/Source/Scene/SceneTransforms.js +3 -2
  204. package/Source/Scene/ScreenSpaceCameraController.js +2 -2
  205. package/Source/Scene/SingleTileImageryProvider.js +382 -209
  206. package/Source/Scene/Terrain.js +196 -0
  207. package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
  208. package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
  209. package/Source/Scene/Tileset3DTileContent.js +47 -5
  210. package/Source/Scene/TimeDynamicPointCloud.js +15 -2
  211. package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
  212. package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
  213. package/Source/Scene/Vector3DTileContent.js +47 -22
  214. package/Source/Scene/Vector3DTileGeometry.js +57 -52
  215. package/Source/Scene/Vector3DTilePoints.js +97 -81
  216. package/Source/Scene/Vector3DTilePolygons.js +118 -117
  217. package/Source/Scene/Vector3DTilePolylines.js +86 -82
  218. package/Source/Scene/Vector3DTilePrimitive.js +0 -1
  219. package/Source/Scene/VoxelContent.js +61 -63
  220. package/Source/Scene/VoxelPrimitive.js +39 -91
  221. package/Source/Scene/VoxelProvider.js +2 -2
  222. package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
  223. package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
  224. package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
  225. package/Source/Scene/createOsmBuildings.js +6 -0
  226. package/Source/Scene/createOsmBuildingsAsync.js +82 -0
  227. package/Source/Scene/createWorldImagery.js +14 -5
  228. package/Source/Scene/createWorldImageryAsync.js +39 -0
  229. package/Source/Shaders/AtmosphereCommon.glsl +51 -8
  230. package/Source/Shaders/AtmosphereCommon.js +51 -8
  231. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +1 -1
  232. package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +1 -1
  233. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +3 -3
  234. package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +3 -3
  235. package/Source/Widget/CesiumWidget.js +67 -27
  236. package/index.d.ts +2429 -1475
  237. package/index.js +324 -315
  238. package/package.json +4 -4
  239. package/Build/Workers/PolygonPipeline-d31ff61c.js +0 -1345
  240. package/Build/Workers/Transforms-9e9df299.js +0 -14714
@@ -1,7 +1,8 @@
1
+ import Check from "../Core/Check.js";
1
2
  import Credit from "../Core/Credit.js";
2
3
  import defaultValue from "../Core/defaultValue.js";
3
4
  import defined from "../Core/defined.js";
4
- import DeveloperError from "../Core/DeveloperError.js";
5
+ import deprecationWarning from "../Core/deprecationWarning.js";
5
6
  import Event from "../Core/Event.js";
6
7
  import GeographicTilingScheme from "../Core/GeographicTilingScheme.js";
7
8
  import Rectangle from "../Core/Rectangle.js";
@@ -16,6 +17,8 @@ import ImageryProvider from "./ImageryProvider.js";
16
17
  * Initialization options for the SingleTileImageryProvider constructor
17
18
  *
18
19
  * @property {Resource|string} url The url for the tile.
20
+ * @property {number} [tileWidth] The width of the tile, in pixels.
21
+ * @property {number} [tileHeight] The height of the tile, in pixels.
19
22
  * @property {Rectangle} [rectangle=Rectangle.MAX_VALUE] The rectangle, in radians, covered by the image.
20
23
  * @property {Credit|string} [credit] A credit for the data source, which is displayed on the canvas.
21
24
  * @property {Ellipsoid} [ellipsoid] The ellipsoid. If not specified, the WGS84 ellipsoid is used.
@@ -41,99 +44,17 @@ import ImageryProvider from "./ImageryProvider.js";
41
44
  */
42
45
  function SingleTileImageryProvider(options) {
43
46
  options = defaultValue(options, defaultValue.EMPTY_OBJECT);
44
- //>>includeStart('debug', pragmas.debug);
45
- if (!defined(options.url)) {
46
- throw new DeveloperError("options.url is required.");
47
- }
48
- //>>includeEnd('debug');
49
-
50
- /**
51
- * The default alpha blending value of this provider, with 0.0 representing fully transparent and
52
- * 1.0 representing fully opaque.
53
- *
54
- * @type {number|undefined}
55
- * @default undefined
56
- */
57
- this.defaultAlpha = undefined;
58
-
59
- /**
60
- * The default alpha blending value on the night side of the globe of this provider, with 0.0 representing fully transparent and
61
- * 1.0 representing fully opaque.
62
- *
63
- * @type {number|undefined}
64
- * @default undefined
65
- */
66
- this.defaultNightAlpha = undefined;
67
-
68
- /**
69
- * The default alpha blending value on the day side of the globe of this provider, with 0.0 representing fully transparent and
70
- * 1.0 representing fully opaque.
71
- *
72
- * @type {number|undefined}
73
- * @default undefined
74
- */
75
- this.defaultDayAlpha = undefined;
76
-
77
- /**
78
- * The default brightness of this provider. 1.0 uses the unmodified imagery color. Less than 1.0
79
- * makes the imagery darker while greater than 1.0 makes it brighter.
80
- *
81
- * @type {number|undefined}
82
- * @default undefined
83
- */
84
- this.defaultBrightness = undefined;
85
-
86
- /**
87
- * The default contrast of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces
88
- * the contrast while greater than 1.0 increases it.
89
- *
90
- * @type {number|undefined}
91
- * @default undefined
92
- */
93
- this.defaultContrast = undefined;
94
-
95
- /**
96
- * The default hue of this provider in radians. 0.0 uses the unmodified imagery color.
97
- *
98
- * @type {number|undefined}
99
- * @default undefined
100
- */
101
- this.defaultHue = undefined;
102
-
103
- /**
104
- * The default saturation of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces the
105
- * saturation while greater than 1.0 increases it.
106
- *
107
- * @type {number|undefined}
108
- * @default undefined
109
- */
110
- this.defaultSaturation = undefined;
111
-
112
- /**
113
- * The default gamma correction to apply to this provider. 1.0 uses the unmodified imagery color.
114
- *
115
- * @type {number|undefined}
116
- * @default undefined
117
- */
118
- this.defaultGamma = undefined;
119
-
120
- /**
121
- * The default texture minification filter to apply to this provider.
122
- *
123
- * @type {TextureMinificationFilter}
124
- * @default undefined
125
- */
126
- this.defaultMinificationFilter = undefined;
127
47
 
128
- /**
129
- * The default texture magnification filter to apply to this provider.
130
- *
131
- * @type {TextureMagnificationFilter}
132
- * @default undefined
133
- */
134
- this.defaultMagnificationFilter = undefined;
135
-
136
- const resource = Resource.createIfNeeded(options.url);
48
+ this._defaultAlpha = undefined;
49
+ this._defaultNightAlpha = undefined;
50
+ this._defaultDayAlpha = undefined;
51
+ this._defaultBrightness = undefined;
52
+ this._defaultContrast = undefined;
53
+ this._defaultHue = undefined;
54
+ this._defaultSaturation = undefined;
55
+ this._defaultGamma = undefined;
56
+ this._defaultMinificationFilter = undefined;
57
+ this._defaultMagnificationFilter = undefined;
137
58
 
138
59
  const rectangle = defaultValue(options.rectangle, Rectangle.MAX_VALUE);
139
60
  const tilingScheme = new GeographicTilingScheme({
@@ -143,12 +64,10 @@ function SingleTileImageryProvider(options) {
143
64
  ellipsoid: options.ellipsoid,
144
65
  });
145
66
  this._tilingScheme = tilingScheme;
146
- this._resource = resource;
147
67
  this._image = undefined;
148
68
  this._texture = undefined;
149
- this._tileWidth = 0;
150
- this._tileHeight = 0;
151
69
 
70
+ this._hasError = false;
152
71
  this._errorEvent = new Event();
153
72
 
154
73
  this._ready = false;
@@ -159,42 +78,43 @@ function SingleTileImageryProvider(options) {
159
78
  }
160
79
  this._credit = credit;
161
80
 
162
- const that = this;
163
- let error;
81
+ //>>includeStart('debug', pragmas.debug);
82
+ Check.defined("options.url", options.url);
83
+ //>>includeEnd('debug');
164
84
 
165
- function success(image) {
166
- that._image = image;
167
- that._tileWidth = image.width;
168
- that._tileHeight = image.height;
169
- that._ready = true;
170
- TileProviderError.reportSuccess(that._errorEvent);
171
- return Promise.resolve(true);
172
- }
85
+ const resource = Resource.createIfNeeded(options.url);
86
+ this._resource = resource;
173
87
 
174
- function failure(e) {
175
- const message = `Failed to load image ${resource.url}.`;
176
- error = TileProviderError.reportError(
177
- error,
178
- that,
179
- that._errorEvent,
180
- message,
181
- 0,
182
- 0,
183
- 0
184
- );
185
- if (error.retry) {
186
- return doRequest();
187
- }
188
- return Promise.reject(new RuntimeError(message));
88
+ // After ready promise and the deprecation warning for these properties are removed,
89
+ // the if check is not needed, and this can become a top-level block
90
+ if (defined(options.tileWidth) || defined(options.tileHeight)) {
91
+ //>>includeStart('debug', pragmas.debug);
92
+ Check.typeOf.number("options.tileWidth", options.tileWidth);
93
+ Check.typeOf.number("options.tileHeight", options.tileHeight);
94
+ //>>includeEnd('debug');
95
+
96
+ this._tileWidth = options.tileWidth;
97
+ this._tileHeight = options.tileHeight;
98
+ this._ready = true;
99
+ this._readyPromise = Promise.resolve(true);
100
+ return;
189
101
  }
190
102
 
191
- function doRequest() {
192
- return ImageryProvider.loadImage(null, resource)
193
- .then(success)
194
- .catch(failure);
195
- }
103
+ deprecationWarning(
104
+ "SingleTileImageryProvider options",
105
+ "options.tileHeight and options.tileWidth became required in CesiumJS 1.104. Omitting these properties will result in an error in 1.107. Provide options.tileHeight and options.tileWidth, or use SingleTileImageryProvider.fromUrl instead."
106
+ );
196
107
 
197
- this._readyPromise = doRequest();
108
+ this._tileWidth = 0;
109
+ this._tileHeight = 0;
110
+ this._readyPromise = doRequest(resource, this).then((image) => {
111
+ TileProviderError.reportSuccess(this._errorEvent);
112
+ this._image = image;
113
+ this._tileWidth = image.width;
114
+ this._tileHeight = image.height;
115
+ this._ready = true;
116
+ return true;
117
+ });
198
118
  }
199
119
 
200
120
  Object.defineProperties(SingleTileImageryProvider.prototype, {
@@ -223,113 +143,67 @@ Object.defineProperties(SingleTileImageryProvider.prototype, {
223
143
  },
224
144
 
225
145
  /**
226
- * Gets the width of each tile, in pixels. This function should
227
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
146
+ * Gets the width of each tile, in pixels.
228
147
  * @memberof SingleTileImageryProvider.prototype
229
148
  * @type {number}
230
149
  * @readonly
231
150
  */
232
151
  tileWidth: {
233
152
  get: function () {
234
- //>>includeStart('debug', pragmas.debug);
235
- if (!this._ready) {
236
- throw new DeveloperError(
237
- "tileWidth must not be called before the imagery provider is ready."
238
- );
239
- }
240
- //>>includeEnd('debug');
241
-
242
153
  return this._tileWidth;
243
154
  },
244
155
  },
245
156
 
246
157
  /**
247
- * Gets the height of each tile, in pixels. This function should
248
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
158
+ * Gets the height of each tile, in pixels.
249
159
  * @memberof SingleTileImageryProvider.prototype
250
160
  * @type {number}
251
161
  * @readonly
252
162
  */
253
163
  tileHeight: {
254
164
  get: function () {
255
- //>>includeStart('debug', pragmas.debug);
256
- if (!this._ready) {
257
- throw new DeveloperError(
258
- "tileHeight must not be called before the imagery provider is ready."
259
- );
260
- }
261
- //>>includeEnd('debug');
262
-
263
165
  return this._tileHeight;
264
166
  },
265
167
  },
266
168
 
267
169
  /**
268
- * Gets the maximum level-of-detail that can be requested. This function should
269
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
170
+ * Gets the maximum level-of-detail that can be requested.
270
171
  * @memberof SingleTileImageryProvider.prototype
271
172
  * @type {number|undefined}
272
173
  * @readonly
273
174
  */
274
175
  maximumLevel: {
275
176
  get: function () {
276
- //>>includeStart('debug', pragmas.debug);
277
- if (!this._ready) {
278
- throw new DeveloperError(
279
- "maximumLevel must not be called before the imagery provider is ready."
280
- );
281
- }
282
- //>>includeEnd('debug');
283
-
284
177
  return 0;
285
178
  },
286
179
  },
287
180
 
288
181
  /**
289
- * Gets the minimum level-of-detail that can be requested. This function should
290
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
182
+ * Gets the minimum level-of-detail that can be requested.
291
183
  * @memberof SingleTileImageryProvider.prototype
292
184
  * @type {number}
293
185
  * @readonly
294
186
  */
295
187
  minimumLevel: {
296
188
  get: function () {
297
- //>>includeStart('debug', pragmas.debug);
298
- if (!this._ready) {
299
- throw new DeveloperError(
300
- "minimumLevel must not be called before the imagery provider is ready."
301
- );
302
- }
303
- //>>includeEnd('debug');
304
-
305
189
  return 0;
306
190
  },
307
191
  },
308
192
 
309
193
  /**
310
- * Gets the tiling scheme used by this provider. This function should
311
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
194
+ * Gets the tiling scheme used by this provider.
312
195
  * @memberof SingleTileImageryProvider.prototype
313
196
  * @type {TilingScheme}
314
197
  * @readonly
315
198
  */
316
199
  tilingScheme: {
317
200
  get: function () {
318
- //>>includeStart('debug', pragmas.debug);
319
- if (!this._ready) {
320
- throw new DeveloperError(
321
- "tilingScheme must not be called before the imagery provider is ready."
322
- );
323
- }
324
- //>>includeEnd('debug');
325
-
326
201
  return this._tilingScheme;
327
202
  },
328
203
  },
329
204
 
330
205
  /**
331
- * Gets the rectangle, in radians, of the imagery provided by this instance. This function should
332
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
206
+ * Gets the rectangle, in radians, of the imagery provided by this instance.
333
207
  * @memberof SingleTileImageryProvider.prototype
334
208
  * @type {Rectangle}
335
209
  * @readonly
@@ -343,22 +217,13 @@ Object.defineProperties(SingleTileImageryProvider.prototype, {
343
217
  /**
344
218
  * Gets the tile discard policy. If not undefined, the discard policy is responsible
345
219
  * for filtering out "missing" tiles via its shouldDiscardImage function. If this function
346
- * returns undefined, no tiles are filtered. This function should
347
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
220
+ * returns undefined, no tiles are filtered.
348
221
  * @memberof SingleTileImageryProvider.prototype
349
222
  * @type {TileDiscardPolicy}
350
223
  * @readonly
351
224
  */
352
225
  tileDiscardPolicy: {
353
226
  get: function () {
354
- //>>includeStart('debug', pragmas.debug);
355
- if (!this._ready) {
356
- throw new DeveloperError(
357
- "tileDiscardPolicy must not be called before the imagery provider is ready."
358
- );
359
- }
360
- //>>includeEnd('debug');
361
-
362
227
  return undefined;
363
228
  },
364
229
  },
@@ -382,9 +247,14 @@ Object.defineProperties(SingleTileImageryProvider.prototype, {
382
247
  * @memberof SingleTileImageryProvider.prototype
383
248
  * @type {boolean}
384
249
  * @readonly
250
+ * @deprecated
385
251
  */
386
252
  ready: {
387
253
  get: function () {
254
+ deprecationWarning(
255
+ "SingleTileImageryProvider.ready",
256
+ "SingleTileImageryProvider.ready was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use SingleTileImageryProvider.fromUrl instead."
257
+ );
388
258
  return this._ready;
389
259
  },
390
260
  },
@@ -394,16 +264,21 @@ Object.defineProperties(SingleTileImageryProvider.prototype, {
394
264
  * @memberof SingleTileImageryProvider.prototype
395
265
  * @type {Promise<boolean>}
396
266
  * @readonly
267
+ * @deprecated
397
268
  */
398
269
  readyPromise: {
399
270
  get: function () {
271
+ deprecationWarning(
272
+ "SingleTileImageryProvider.readyPromise",
273
+ "SingleTileImageryProvider.readyPromise was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use SingleTileImageryProvider.fromUrl instead."
274
+ );
400
275
  return this._readyPromise;
401
276
  },
402
277
  },
403
278
 
404
279
  /**
405
280
  * Gets the credit to display when this imagery provider is active. Typically this is used to credit
406
- * the source of the imagery. This function should not be called before {@link SingleTileImageryProvider#ready} returns true.
281
+ * the source of the imagery.
407
282
  * @memberof SingleTileImageryProvider.prototype
408
283
  * @type {Credit}
409
284
  * @readonly
@@ -429,8 +304,316 @@ Object.defineProperties(SingleTileImageryProvider.prototype, {
429
304
  return true;
430
305
  },
431
306
  },
307
+
308
+ /**
309
+ * The default alpha blending value of this provider, with 0.0 representing fully transparent and
310
+ * 1.0 representing fully opaque.
311
+ * @memberof SingleTileImageryProvider.prototype
312
+ * @type {Number|undefined}
313
+ * @deprecated
314
+ */
315
+ defaultAlpha: {
316
+ get: function () {
317
+ deprecationWarning(
318
+ "SingleTileImageryProvider.defaultAlpha",
319
+ "SingleTileImageryProvider.defaultAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.alpha instead."
320
+ );
321
+ return this._defaultAlpha;
322
+ },
323
+ set: function (value) {
324
+ deprecationWarning(
325
+ "SingleTileImageryProvider.defaultAlpha",
326
+ "SingleTileImageryProvider.defaultAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.alpha instead."
327
+ );
328
+ this._defaultAlpha = value;
329
+ },
330
+ },
331
+
332
+ /**
333
+ * The default alpha blending value on the night side of the globe of this provider, with 0.0 representing fully transparent and
334
+ * 1.0 representing fully opaque.
335
+ * @memberof SingleTileImageryProvider.prototype
336
+ * @type {Number|undefined}
337
+ * @deprecated
338
+ */
339
+ defaultNightAlpha: {
340
+ get: function () {
341
+ deprecationWarning(
342
+ "SingleTileImageryProvider.defaultNightAlpha",
343
+ "SingleTileImageryProvider.defaultNightAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.nightAlpha instead."
344
+ );
345
+ return this._defaultNightAlpha;
346
+ },
347
+ set: function (value) {
348
+ deprecationWarning(
349
+ "SingleTileImageryProvider.defaultNightAlpha",
350
+ "SingleTileImageryProvider.defaultNightAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.nightAlpha instead."
351
+ );
352
+ this._defaultNightAlpha = value;
353
+ },
354
+ },
355
+
356
+ /**
357
+ * The default alpha blending value on the day side of the globe of this provider, with 0.0 representing fully transparent and
358
+ * 1.0 representing fully opaque.
359
+ * @memberof SingleTileImageryProvider.prototype
360
+ * @type {Number|undefined}
361
+ * @deprecated
362
+ */
363
+ defaultDayAlpha: {
364
+ get: function () {
365
+ deprecationWarning(
366
+ "SingleTileImageryProvider.defaultDayAlpha",
367
+ "SingleTileImageryProvider.defaultDayAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.dayAlpha instead."
368
+ );
369
+ return this._defaultDayAlpha;
370
+ },
371
+ set: function (value) {
372
+ deprecationWarning(
373
+ "SingleTileImageryProvider.defaultDayAlpha",
374
+ "SingleTileImageryProvider.defaultDayAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.dayAlpha instead."
375
+ );
376
+ this._defaultDayAlpha = value;
377
+ },
378
+ },
379
+
380
+ /**
381
+ * The default brightness of this provider. 1.0 uses the unmodified imagery color. Less than 1.0
382
+ * makes the imagery darker while greater than 1.0 makes it brighter.
383
+ * @memberof SingleTileImageryProvider.prototype
384
+ * @type {Number|undefined}
385
+ * @deprecated
386
+ */
387
+ defaultBrightness: {
388
+ get: function () {
389
+ deprecationWarning(
390
+ "SingleTileImageryProvider.defaultBrightness",
391
+ "SingleTileImageryProvider.defaultBrightness was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.brightness instead."
392
+ );
393
+ return this._defaultBrightness;
394
+ },
395
+ set: function (value) {
396
+ deprecationWarning(
397
+ "SingleTileImageryProvider.defaultBrightness",
398
+ "SingleTileImageryProvider.defaultBrightness was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.brightness instead."
399
+ );
400
+ this._defaultBrightness = value;
401
+ },
402
+ },
403
+
404
+ /**
405
+ * The default contrast of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces
406
+ * the contrast while greater than 1.0 increases it.
407
+ * @memberof SingleTileImageryProvider.prototype
408
+ * @type {Number|undefined}
409
+ * @deprecated
410
+ */
411
+ defaultContrast: {
412
+ get: function () {
413
+ deprecationWarning(
414
+ "SingleTileImageryProvider.defaultContrast",
415
+ "SingleTileImageryProvider.defaultContrast was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.contrast instead."
416
+ );
417
+ return this._defaultContrast;
418
+ },
419
+ set: function (value) {
420
+ deprecationWarning(
421
+ "SingleTileImageryProvider.defaultContrast",
422
+ "SingleTileImageryProvider.defaultContrast was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.contrast instead."
423
+ );
424
+ this._defaultContrast = value;
425
+ },
426
+ },
427
+
428
+ /**
429
+ * The default hue of this provider in radians. 0.0 uses the unmodified imagery color.
430
+ * @memberof SingleTileImageryProvider.prototype
431
+ * @type {Number|undefined}
432
+ * @deprecated
433
+ */
434
+ defaultHue: {
435
+ get: function () {
436
+ deprecationWarning(
437
+ "SingleTileImageryProvider.defaultHue",
438
+ "SingleTileImageryProvider.defaultHue was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.hue instead."
439
+ );
440
+ return this._defaultHue;
441
+ },
442
+ set: function (value) {
443
+ deprecationWarning(
444
+ "SingleTileImageryProvider.defaultHue",
445
+ "SingleTileImageryProvider.defaultHue was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.hue instead."
446
+ );
447
+ this._defaultHue = value;
448
+ },
449
+ },
450
+
451
+ /**
452
+ * The default saturation of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces the
453
+ * saturation while greater than 1.0 increases it.
454
+ * @memberof SingleTileImageryProvider.prototype
455
+ * @type {Number|undefined}
456
+ * @deprecated
457
+ */
458
+ defaultSaturation: {
459
+ get: function () {
460
+ deprecationWarning(
461
+ "SingleTileImageryProvider.defaultSaturation",
462
+ "SingleTileImageryProvider.defaultSaturation was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.saturation instead."
463
+ );
464
+ return this._defaultSaturation;
465
+ },
466
+ set: function (value) {
467
+ deprecationWarning(
468
+ "SingleTileImageryProvider.defaultSaturation",
469
+ "SingleTileImageryProvider.defaultSaturation was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.saturation instead."
470
+ );
471
+ this._defaultSaturation = value;
472
+ },
473
+ },
474
+
475
+ /**
476
+ * The default gamma correction to apply to this provider. 1.0 uses the unmodified imagery color.
477
+ * @memberof SingleTileImageryProvider.prototype
478
+ * @type {Number|undefined}
479
+ * @deprecated
480
+ */
481
+ defaultGamma: {
482
+ get: function () {
483
+ deprecationWarning(
484
+ "SingleTileImageryProvider.defaultGamma",
485
+ "SingleTileImageryProvider.defaultGamma was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.gamma instead."
486
+ );
487
+ return this._defaultGamma;
488
+ },
489
+ set: function (value) {
490
+ deprecationWarning(
491
+ "SingleTileImageryProvider.defaultGamma",
492
+ "SingleTileImageryProvider.defaultGamma was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.gamma instead."
493
+ );
494
+ this._defaultGamma = value;
495
+ },
496
+ },
497
+
498
+ /**
499
+ * The default texture minification filter to apply to this provider.
500
+ * @memberof SingleTileImageryProvider.prototype
501
+ * @type {TextureMinificationFilter}
502
+ * @deprecated
503
+ */
504
+ defaultMinificationFilter: {
505
+ get: function () {
506
+ deprecationWarning(
507
+ "SingleTileImageryProvider.defaultMinificationFilter",
508
+ "SingleTileImageryProvider.defaultMinificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.minificationFilter instead."
509
+ );
510
+ return this._defaultMinificationFilter;
511
+ },
512
+ set: function (value) {
513
+ deprecationWarning(
514
+ "SingleTileImageryProvider.defaultMinificationFilter",
515
+ "SingleTileImageryProvider.defaultMinificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.minificationFilter instead."
516
+ );
517
+ this._defaultMinificationFilter = value;
518
+ },
519
+ },
520
+
521
+ /**
522
+ * The default texture magnification filter to apply to this provider.
523
+ * @memberof SingleTileImageryProvider.prototype
524
+ * @type {TextureMagnificationFilter}
525
+ * @deprecated
526
+ */
527
+ defaultMagnificationFilter: {
528
+ get: function () {
529
+ deprecationWarning(
530
+ "SingleTileImageryProvider.defaultMagnificationFilter",
531
+ "SingleTileImageryProvider.defaultMagnificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.magnificationFilter instead."
532
+ );
533
+ return this._defaultMagnificationFilter;
534
+ },
535
+ set: function (value) {
536
+ deprecationWarning(
537
+ "SingleTileImageryProvider.defaultMagnificationFilter",
538
+ "SingleTileImageryProvider.defaultMagnificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.magnificationFilter instead."
539
+ );
540
+ this._defaultMagnificationFilter = value;
541
+ },
542
+ },
432
543
  });
433
544
 
545
+ function failure(resource, error, provider, previousError) {
546
+ let message = `Failed to load image ${resource.url}`;
547
+ if (defined(error) && defined(error.message)) {
548
+ message += `: ${error.message}`;
549
+ }
550
+
551
+ const reportedError = TileProviderError.reportError(
552
+ previousError,
553
+ provider,
554
+ defined(provider) ? provider._errorEvent : undefined,
555
+ message,
556
+ 0,
557
+ 0,
558
+ 0,
559
+ error
560
+ );
561
+ if (reportedError.retry) {
562
+ return doRequest(resource, provider, reportedError);
563
+ }
564
+
565
+ if (defined(provider)) {
566
+ provider._hasError = true;
567
+ }
568
+ throw new RuntimeError(message);
569
+ }
570
+
571
+ async function doRequest(resource, provider, previousError) {
572
+ try {
573
+ const image = await ImageryProvider.loadImage(null, resource);
574
+ return image;
575
+ } catch (error) {
576
+ return failure(resource, error, provider, previousError);
577
+ }
578
+ }
579
+
580
+ /**
581
+ * @typedef {Object} SingleTileImageryProvider.fromUrlOptions
582
+ *
583
+ * Initialization options for the SingleTileImageryProvider constructor when using SingleTileImageryProvider.fromUrl
584
+ *
585
+ * @property {Rectangle} [rectangle=Rectangle.MAX_VALUE] The rectangle, in radians, covered by the image.
586
+ * @property {Credit|String} [credit] A credit for the data source, which is displayed on the canvas.
587
+ * @property {Ellipsoid} [ellipsoid] The ellipsoid. If not specified, the WGS84 ellipsoid is used.
588
+ */
589
+
590
+ /**
591
+ * Creates a provider for a single, top-level imagery tile. The single image is assumed to use a
592
+ * @param {Resource|String} url The url for the tile
593
+ * @param {SingleTileImageryProvider.fromUrlOptions} [options] Object describing initialization options.
594
+ *
595
+ * @example
596
+ * const provider = await SingleTileImageryProvider.fromUrl("https://yoururl.com/image.png");
597
+ */
598
+ SingleTileImageryProvider.fromUrl = async function (url, options) {
599
+ //>>includeStart('debug', pragmas.debug);
600
+ Check.defined("url", url);
601
+ //>>includeEnd('debug');
602
+
603
+ const resource = Resource.createIfNeeded(url);
604
+ const image = await doRequest(resource);
605
+
606
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
607
+ const provider = new SingleTileImageryProvider({
608
+ ...options,
609
+ url: url,
610
+ tileWidth: image.width,
611
+ tileHeight: image.height,
612
+ });
613
+ provider._image = image;
614
+ return provider;
615
+ };
616
+
434
617
  /**
435
618
  * Gets the credits to be displayed when a given tile is displayed.
436
619
  *
@@ -438,44 +621,34 @@ Object.defineProperties(SingleTileImageryProvider.prototype, {
438
621
  * @param {number} y The tile Y coordinate.
439
622
  * @param {number} level The tile level;
440
623
  * @returns {Credit[]} The credits to be displayed when the tile is displayed.
441
- *
442
- * @exception {DeveloperError} <code>getTileCredits</code> must not be called before the imagery provider is ready.
443
624
  */
444
625
  SingleTileImageryProvider.prototype.getTileCredits = function (x, y, level) {
445
626
  return undefined;
446
627
  };
447
628
 
448
629
  /**
449
- * Requests the image for a given tile. This function should
450
- * not be called before {@link SingleTileImageryProvider#ready} returns true.
630
+ * Requests the image for a given tile.
451
631
  *
452
632
  * @param {number} x The tile X coordinate.
453
633
  * @param {number} y The tile Y coordinate.
454
634
  * @param {number} level The tile level.
455
635
  * @param {Request} [request] The request object. Intended for internal use only.
456
- * @returns {Promise<ImageryTypes>|undefined} The resolved image
457
- *
458
- * @exception {DeveloperError} <code>requestImage</code> must not be called before the imagery provider is ready.
636
+ * @returns {Promise.<ImageryTypes>|undefined} The resolved image
459
637
  */
460
- SingleTileImageryProvider.prototype.requestImage = function (
638
+ SingleTileImageryProvider.prototype.requestImage = async function (
461
639
  x,
462
640
  y,
463
641
  level,
464
642
  request
465
643
  ) {
466
- //>>includeStart('debug', pragmas.debug);
467
- if (!this._ready) {
468
- throw new DeveloperError(
469
- "requestImage must not be called before the imagery provider is ready."
470
- );
471
- }
472
- //>>includeEnd('debug');
473
-
474
- if (!defined(this._image)) {
475
- return;
644
+ if (!this._hasError && !defined(this._image)) {
645
+ const image = await doRequest(this._resource, this);
646
+ this._image = image;
647
+ TileProviderError.reportSuccess(this._errorEvent);
648
+ return image;
476
649
  }
477
650
 
478
- return Promise.resolve(this._image);
651
+ return this._image;
479
652
  };
480
653
 
481
654
  /**