@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,10 +1,11 @@
1
1
  import Cartesian2 from "../Core/Cartesian2.js";
2
2
  import Cartesian3 from "../Core/Cartesian3.js";
3
3
  import Cartographic from "../Core/Cartographic.js";
4
+ import Check from "../Core/Check.js";
4
5
  import Credit from "../Core/Credit.js";
5
6
  import defaultValue from "../Core/defaultValue.js";
6
7
  import defined from "../Core/defined.js";
7
- import DeveloperError from "../Core/DeveloperError.js";
8
+ import deprecationWarning from "../Core/deprecationWarning.js";
8
9
  import Event from "../Core/Event.js";
9
10
  import GeographicProjection from "../Core/GeographicProjection.js";
10
11
  import GeographicTilingScheme from "../Core/GeographicTilingScheme.js";
@@ -15,17 +16,20 @@ import RuntimeError from "../Core/RuntimeError.js";
15
16
  import TileProviderError from "../Core/TileProviderError.js";
16
17
  import WebMercatorProjection from "../Core/WebMercatorProjection.js";
17
18
  import WebMercatorTilingScheme from "../Core/WebMercatorTilingScheme.js";
19
+ import ArcGisMapService from "./ArcGisMapService.js";
18
20
  import DiscardMissingTileImagePolicy from "./DiscardMissingTileImagePolicy.js";
19
21
  import ImageryLayerFeatureInfo from "./ImageryLayerFeatureInfo.js";
20
22
  import ImageryProvider from "./ImageryProvider.js";
23
+ import ArcGisBaseMapType from "./ArcGisBaseMapType.js";
24
+ import DeveloperError from "../Core/DeveloperError.js";
21
25
 
22
26
  /**
23
27
  * @typedef {object} ArcGisMapServerImageryProvider.ConstructorOptions
24
28
  *
25
29
  * Initialization options for the ArcGisMapServerImageryProvider constructor
26
30
  *
27
- * @property {Resource|string} url The URL of the ArcGIS MapServer service.
28
- * @property {string} [token] The ArcGIS token used to authenticate with the ArcGIS MapServer service.
31
+ * @property {Resource|string} [url] The URL of the ArcGIS MapServer service. Deprecated.
32
+ * @property {string} [token] The ArcGIS token used to authenticate with the ArcGIS MapServer service. Deprecated.
29
33
  * @property {TileDiscardPolicy} [tileDiscardPolicy] The policy that determines if a tile
30
34
  * is invalid and should be discarded. If this value is not specified, a default
31
35
  * {@link DiscardMissingTileImagePolicy} is used for tiled map servers, and a
@@ -38,8 +42,7 @@ import ImageryProvider from "./ImageryProvider.js";
38
42
  * that no tiles are discarded, construct and pass a {@link NeverTileDiscardPolicy} for this
39
43
  * parameter.
40
44
  * @property {boolean} [usePreCachedTilesIfAvailable=true] If true, the server's pre-cached
41
- * tiles are used if they are available. If false, any pre-cached tiles are ignored and the
42
- * 'export' service is used.
45
+ * tiles are used if they are available. Exporting Tiles is only supported with deprecated APIs.
43
46
  * @property {string} [layers] A comma-separated list of the layers to show, or undefined if all layers should be shown.
44
47
  * @property {boolean} [enablePickFeatures=true] If true, {@link ArcGisMapServerImageryProvider#pickFeatures} will invoke
45
48
  * the Identify service on the MapServer and return the features included in the response. If false,
@@ -58,142 +61,278 @@ import ImageryProvider from "./ImageryProvider.js";
58
61
  * @property {number} [tileHeight=256] The height of each tile in pixels. This parameter is ignored when accessing a tiled server.
59
62
  * @property {number} [maximumLevel] The maximum tile level to request, or undefined if there is no maximum. This parameter is ignored when accessing
60
63
  * a tiled server.
64
+ *
65
+ *
61
66
  */
62
67
 
63
68
  /**
64
- * Provides tiled imagery hosted by an ArcGIS MapServer. By default, the server's pre-cached tiles are
65
- * used, if available.
69
+ * Used to track creation details while fetching initial metadata
66
70
  *
67
- * @alias ArcGisMapServerImageryProvider
68
71
  * @constructor
72
+ * @private
69
73
  *
70
- * @param {ArcGisMapServerImageryProvider.ConstructorOptions} options Object describing initialization options
71
- *
72
- * @see BingMapsImageryProvider
73
- * @see GoogleEarthEnterpriseMapsProvider
74
- * @see OpenStreetMapImageryProvider
75
- * @see SingleTileImageryProvider
76
- * @see TileMapServiceImageryProvider
77
- * @see WebMapServiceImageryProvider
78
- * @see WebMapTileServiceImageryProvider
79
- * @see UrlTemplateImageryProvider
80
- *
81
- *
82
- * @example
83
- * const esri = new Cesium.ArcGisMapServerImageryProvider({
84
- * url : 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
85
- * });
86
- *
87
- * @see {@link https://developers.arcgis.com/rest/|ArcGIS Server REST API}
88
- * @see {@link http://www.w3.org/TR/cors/|Cross-Origin Resource Sharing}
74
+ * @param {ArcGisMapServerImageryProvider.ConstructorOptions} options An object describing initialization options
89
75
  */
90
- function ArcGisMapServerImageryProvider(options) {
91
- options = defaultValue(options, defaultValue.EMPTY_OBJECT);
76
+ function ImageryProviderBuilder(options) {
77
+ this.useTiles = defaultValue(options.usePreCachedTilesIfAvailable, true);
92
78
 
93
- //>>includeStart('debug', pragmas.debug);
94
- if (!defined(options.url)) {
95
- throw new DeveloperError("options.url is required.");
79
+ const ellipsoid = options.ellipsoid;
80
+ this.tilingScheme = defaultValue(
81
+ options.tilingScheme,
82
+ new GeographicTilingScheme({ ellipsoid: ellipsoid })
83
+ );
84
+ this.rectangle = defaultValue(options.rectangle, this.tilingScheme.rectangle);
85
+ this.ellipsoid = ellipsoid;
86
+
87
+ let credit = options.credit;
88
+ if (typeof credit === "string") {
89
+ credit = new Credit(credit);
96
90
  }
97
- //>>includeEnd('debug');
91
+ this.credit = credit;
92
+ this.tileCredits = undefined;
93
+ this.tileDiscardPolicy = options.tileDiscardPolicy;
98
94
 
99
- /**
100
- * The default alpha blending value of this provider, with 0.0 representing fully transparent and
101
- * 1.0 representing fully opaque.
102
- *
103
- * @type {number|undefined}
104
- * @default undefined
105
- */
106
- this.defaultAlpha = undefined;
95
+ this.tileWidth = defaultValue(options.tileWidth, 256);
96
+ this.tileHeight = defaultValue(options.tileHeight, 256);
97
+ this.maximumLevel = options.maximumLevel;
98
+ }
107
99
 
108
- /**
109
- * The default alpha blending value on the night side of the globe of this provider, with 0.0 representing fully transparent and
110
- * 1.0 representing fully opaque.
111
- *
112
- * @type {number|undefined}
113
- * @default undefined
114
- */
115
- this.defaultNightAlpha = undefined;
100
+ /**
101
+ * Complete ArcGisMapServerImageryProvider creation based on builder values.
102
+ *
103
+ * @private
104
+ *
105
+ * @param {ArcGisMapServerImageryProvider} provider
106
+ */
107
+ ImageryProviderBuilder.prototype.build = function (provider) {
108
+ provider._useTiles = this.useTiles;
109
+ provider._tilingScheme = this.tilingScheme;
110
+ provider._rectangle = this.rectangle;
111
+ provider._credit = this.credit;
112
+ provider._tileCredits = this.tileCredits;
113
+ provider._tileDiscardPolicy = this.tileDiscardPolicy;
114
+ provider._tileWidth = this.tileWidth;
115
+ provider._tileHeight = this.tileHeight;
116
+ provider._maximumLevel = this.maximumLevel;
117
+
118
+ // Install the default tile discard policy if none has been supplied.
119
+ if (this.useTiles && !defined(this.tileDiscardPolicy)) {
120
+ provider._tileDiscardPolicy = new DiscardMissingTileImagePolicy({
121
+ missingImageUrl: buildImageResource(provider, 0, 0, this.maximumLevel)
122
+ .url,
123
+ pixelsToCheck: [
124
+ new Cartesian2(0, 0),
125
+ new Cartesian2(200, 20),
126
+ new Cartesian2(20, 200),
127
+ new Cartesian2(80, 110),
128
+ new Cartesian2(160, 130),
129
+ ],
130
+ disableCheckIfAllPixelsAreTransparent: true,
131
+ });
132
+ }
116
133
 
117
- /**
118
- * The default alpha blending value on the day side of the globe of this provider, with 0.0 representing fully transparent and
119
- * 1.0 representing fully opaque.
120
- *
121
- * @type {number|undefined}
122
- * @default undefined
123
- */
124
- this.defaultDayAlpha = undefined;
134
+ provider._ready = true;
135
+ };
125
136
 
126
- /**
127
- * The default brightness of this provider. 1.0 uses the unmodified imagery color. Less than 1.0
128
- * makes the imagery darker while greater than 1.0 makes it brighter.
129
- *
130
- * @type {number|undefined}
131
- * @default undefined
132
- */
133
- this.defaultBrightness = undefined;
137
+ function metadataSuccess(data, imageryProviderBuilder) {
138
+ const tileInfo = data.tileInfo;
139
+ if (!defined(tileInfo)) {
140
+ imageryProviderBuilder.useTiles = false;
141
+ } else {
142
+ imageryProviderBuilder.tileWidth = tileInfo.rows;
143
+ imageryProviderBuilder.tileHeight = tileInfo.cols;
134
144
 
135
- /**
136
- * The default contrast of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces
137
- * the contrast while greater than 1.0 increases it.
138
- *
139
- * @type {number|undefined}
140
- * @default undefined
141
- */
142
- this.defaultContrast = undefined;
145
+ if (
146
+ tileInfo.spatialReference.wkid === 102100 ||
147
+ tileInfo.spatialReference.wkid === 102113
148
+ ) {
149
+ imageryProviderBuilder.tilingScheme = new WebMercatorTilingScheme({
150
+ ellipsoid: imageryProviderBuilder.ellipsoid,
151
+ });
152
+ } else if (data.tileInfo.spatialReference.wkid === 4326) {
153
+ imageryProviderBuilder.tilingScheme = new GeographicTilingScheme({
154
+ ellipsoid: imageryProviderBuilder.ellipsoid,
155
+ });
156
+ } else {
157
+ const message = `Tile spatial reference WKID ${data.tileInfo.spatialReference.wkid} is not supported.`;
158
+ throw new RuntimeError(message);
159
+ }
160
+ imageryProviderBuilder.maximumLevel = data.tileInfo.lods.length - 1;
143
161
 
144
- /**
145
- * The default hue of this provider in radians. 0.0 uses the unmodified imagery color.
146
- *
147
- * @type {number|undefined}
148
- * @default undefined
149
- */
150
- this.defaultHue = undefined;
162
+ if (defined(data.fullExtent)) {
163
+ if (
164
+ defined(data.fullExtent.spatialReference) &&
165
+ defined(data.fullExtent.spatialReference.wkid)
166
+ ) {
167
+ if (
168
+ data.fullExtent.spatialReference.wkid === 102100 ||
169
+ data.fullExtent.spatialReference.wkid === 102113
170
+ ) {
171
+ const projection = new WebMercatorProjection();
172
+ const extent = data.fullExtent;
173
+ const sw = projection.unproject(
174
+ new Cartesian3(
175
+ Math.max(
176
+ extent.xmin,
177
+ -imageryProviderBuilder.tilingScheme.ellipsoid.maximumRadius *
178
+ Math.PI
179
+ ),
180
+ Math.max(
181
+ extent.ymin,
182
+ -imageryProviderBuilder.tilingScheme.ellipsoid.maximumRadius *
183
+ Math.PI
184
+ ),
185
+ 0.0
186
+ )
187
+ );
188
+ const ne = projection.unproject(
189
+ new Cartesian3(
190
+ Math.min(
191
+ extent.xmax,
192
+ imageryProviderBuilder.tilingScheme.ellipsoid.maximumRadius *
193
+ Math.PI
194
+ ),
195
+ Math.min(
196
+ extent.ymax,
197
+ imageryProviderBuilder.tilingScheme.ellipsoid.maximumRadius *
198
+ Math.PI
199
+ ),
200
+ 0.0
201
+ )
202
+ );
203
+ imageryProviderBuilder.rectangle = new Rectangle(
204
+ sw.longitude,
205
+ sw.latitude,
206
+ ne.longitude,
207
+ ne.latitude
208
+ );
209
+ } else if (data.fullExtent.spatialReference.wkid === 4326) {
210
+ imageryProviderBuilder.rectangle = Rectangle.fromDegrees(
211
+ data.fullExtent.xmin,
212
+ data.fullExtent.ymin,
213
+ data.fullExtent.xmax,
214
+ data.fullExtent.ymax
215
+ );
216
+ } else {
217
+ const extentMessage = `fullExtent.spatialReference WKID ${data.fullExtent.spatialReference.wkid} is not supported.`;
218
+ throw new RuntimeError(extentMessage);
219
+ }
220
+ }
221
+ } else {
222
+ imageryProviderBuilder.rectangle =
223
+ imageryProviderBuilder.tilingScheme.rectangle;
224
+ }
151
225
 
152
- /**
153
- * The default saturation of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces the
154
- * saturation while greater than 1.0 increases it.
155
- *
156
- * @type {number|undefined}
157
- * @default undefined
158
- */
159
- this.defaultSaturation = undefined;
226
+ imageryProviderBuilder.useTiles = true;
227
+ }
160
228
 
161
- /**
162
- * The default gamma correction to apply to this provider. 1.0 uses the unmodified imagery color.
163
- *
164
- * @type {number|undefined}
165
- * @default undefined
166
- */
167
- this.defaultGamma = undefined;
229
+ if (defined(data.copyrightText) && data.copyrightText.length > 0) {
230
+ if (defined(imageryProviderBuilder.credit)) {
231
+ imageryProviderBuilder.tileCredits = [new Credit(data.copyrightText)];
232
+ } else {
233
+ imageryProviderBuilder.credit = new Credit(data.copyrightText);
234
+ }
235
+ }
236
+ }
168
237
 
169
- /**
170
- * The default texture minification filter to apply to this provider.
171
- *
172
- * @type {TextureMinificationFilter}
173
- * @default undefined
174
- */
175
- this.defaultMinificationFilter = undefined;
238
+ function metadataFailure(resource, error, provider) {
239
+ let message = `An error occurred while accessing ${resource.url}`;
240
+ if (defined(error) && defined(error.message)) {
241
+ message += `: ${error.message}`;
242
+ }
176
243
 
177
- /**
178
- * The default texture magnification filter to apply to this provider.
179
- *
180
- * @type {TextureMagnificationFilter}
181
- * @default undefined
182
- */
183
- this.defaultMagnificationFilter = undefined;
244
+ // When readyPromise is deprecated, TileProviderError.reportError,
245
+ // and related parameters can be removed
246
+ TileProviderError.reportError(
247
+ undefined,
248
+ provider,
249
+ defined(provider) ? provider._errorEvent : undefined,
250
+ message,
251
+ undefined,
252
+ undefined,
253
+ undefined,
254
+ error
255
+ );
184
256
 
185
- const resource = Resource.createIfNeeded(options.url);
186
- resource.appendForwardSlash();
257
+ throw new RuntimeError(message);
258
+ }
187
259
 
188
- if (defined(options.token)) {
189
- resource.setQueryParameters({
190
- token: options.token,
191
- });
260
+ async function requestMetadata(resource, imageryProviderBuilder, provider) {
261
+ const jsonResource = resource.getDerivedResource({
262
+ queryParameters: {
263
+ f: "json",
264
+ },
265
+ });
266
+
267
+ try {
268
+ const data = await jsonResource.fetchJson();
269
+ metadataSuccess(data, imageryProviderBuilder);
270
+ } catch (error) {
271
+ metadataFailure(resource, error, provider);
192
272
  }
273
+ }
193
274
 
194
- this._resource = resource;
195
- this._tileDiscardPolicy = options.tileDiscardPolicy;
275
+ /**
276
+ * <div class="notice">
277
+ * This object is normally not instantiated directly, use {@link ArcGisMapServerImageryProvider.fromBasemapType} or {@link ArcGisMapServerImageryProvider.fromUrl}.
278
+ * </div>
279
+ *
280
+ * Provides tiled imagery hosted by an ArcGIS MapServer. By default, the server's pre-cached tiles are
281
+ * used, if available.
282
+ *
283
+ * <br/>
284
+ *
285
+ * An {@link https://developers.arcgis.com/documentation/mapping-apis-and-services/security| ArcGIS Access Token } is required to authenticate requests to an ArcGIS Image Tile service.
286
+ * To access secure ArcGIS resources, it's required to create an ArcGIS developer
287
+ * account or an ArcGIS online account, then implement an authentication method to obtain an access token.
288
+ *
289
+ * @alias ArcGisMapServerImageryProvider
290
+ * @constructor
291
+ *
292
+ * @param {ArcGisMapServerImageryProvider.ConstructorOptions} [options] Object describing initialization options
293
+ *
294
+ * @see ArcGisMapServerImageryProvider.fromBasemapType
295
+ * @see ArcGisMapServerImageryProvider.fromUrl
296
+ *
297
+ * @example
298
+ * // Set the default access token for accessing ArcGIS Image Tile service
299
+ * Cesium.ArcGisMapService.defaultAccessToken = "<ArcGIS Access Token>";
300
+ *
301
+ * // Add a base layer from a default ArcGIS basemap
302
+ * const viewer = new Cesium.Viewer("cesiumContainer", {
303
+ * baseLayer: Cesium.ImageryLayer.fromProviderAsync(
304
+ * Cesium.ArcGisMapServerImageryProvider.fromBasemapType(
305
+ * Cesium.ArcGisBaseMapType.SATELLITE
306
+ * )
307
+ * ),
308
+ * });
309
+ *
310
+ * @example
311
+ * // Create an imagery provider from the url directly
312
+ * const esri = await Cesium.ArcGisMapServerImageryProvider.fromUrl(
313
+ * "https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer", {
314
+ * token: "<ArcGIS Access Token>"
315
+ * });
316
+ *
317
+ * @see {@link https://developers.arcgis.com/rest/|ArcGIS Server REST API}
318
+ * @see {@link https://developers.arcgis.com/documentation/mapping-apis-and-services/security| ArcGIS Access Token }
319
+
320
+ */
321
+ function ArcGisMapServerImageryProvider(options) {
322
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
323
+
324
+ this._defaultAlpha = undefined;
325
+ this._defaultNightAlpha = undefined;
326
+ this._defaultDayAlpha = undefined;
327
+ this._defaultBrightness = undefined;
328
+ this._defaultContrast = undefined;
329
+ this._defaultHue = undefined;
330
+ this._defaultSaturation = undefined;
331
+ this._defaultGamma = undefined;
332
+ this._defaultMinificationFilter = undefined;
333
+ this._defaultMagnificationFilter = undefined;
196
334
 
335
+ this._tileDiscardPolicy = options.tileDiscardPolicy;
197
336
  this._tileWidth = defaultValue(options.tileWidth, 256);
198
337
  this._tileHeight = defaultValue(options.tileHeight, 256);
199
338
  this._maximumLevel = options.maximumLevel;
@@ -207,12 +346,13 @@ function ArcGisMapServerImageryProvider(options) {
207
346
  this._tilingScheme.rectangle
208
347
  );
209
348
  this._layers = options.layers;
349
+ this._credit = options.credit;
350
+ this._tileCredits = undefined;
210
351
 
211
352
  let credit = options.credit;
212
353
  if (typeof credit === "string") {
213
354
  credit = new Credit(credit);
214
355
  }
215
- this._credit = credit;
216
356
 
217
357
  /**
218
358
  * Gets or sets a value indicating whether feature picking is enabled. If true, {@link ArcGisMapServerImageryProvider#pickFeatures} will
@@ -228,175 +368,150 @@ function ArcGisMapServerImageryProvider(options) {
228
368
 
229
369
  this._ready = false;
230
370
 
231
- // Grab the details of this MapServer.
232
- const that = this;
233
- let metadataError;
371
+ if (defined(options.url)) {
372
+ deprecationWarning(
373
+ "ArcGisMapServerImageryProvider options.url",
374
+ "options.url was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ArcGisMapServerImageryProvider.fromUrl instead."
375
+ );
376
+ const resource = Resource.createIfNeeded(options.url);
377
+ resource.appendForwardSlash();
378
+
379
+ this._tileDiscardPolicy = options.tileDiscardPolicy;
234
380
 
235
- function metadataSuccess(data) {
236
- const tileInfo = data.tileInfo;
237
- if (!defined(tileInfo)) {
238
- that._useTiles = false;
381
+ if (defined(options.token)) {
382
+ resource.setQueryParameters({
383
+ token: options.token,
384
+ });
385
+ }
386
+
387
+ this._resource = resource;
388
+ const imageryProviderBuilder = new ImageryProviderBuilder(options);
389
+ if (imageryProviderBuilder.useTiles) {
390
+ this._readyPromise = requestMetadata(
391
+ resource,
392
+ imageryProviderBuilder,
393
+ this
394
+ ).then(() => {
395
+ imageryProviderBuilder.build(this);
396
+ return true;
397
+ });
239
398
  } else {
240
- that._tileWidth = tileInfo.rows;
241
- that._tileHeight = tileInfo.cols;
399
+ imageryProviderBuilder.build(this);
400
+ this._readyPromise = Promise.resolve(true);
401
+ }
402
+ }
403
+ }
242
404
 
243
- if (
244
- tileInfo.spatialReference.wkid === 102100 ||
245
- tileInfo.spatialReference.wkid === 102113
246
- ) {
247
- that._tilingScheme = new WebMercatorTilingScheme({
248
- ellipsoid: options.ellipsoid,
249
- });
250
- } else if (data.tileInfo.spatialReference.wkid === 4326) {
251
- that._tilingScheme = new GeographicTilingScheme({
252
- ellipsoid: options.ellipsoid,
253
- });
254
- } else {
255
- const message = `Tile spatial reference WKID ${data.tileInfo.spatialReference.wkid} is not supported.`;
256
- metadataError = TileProviderError.reportError(
257
- metadataError,
258
- that,
259
- that._errorEvent,
260
- message,
261
- undefined,
262
- undefined,
263
- undefined
405
+ /**
406
+ * Creates an {@link ImageryProvider} which provides tiled imagery from an ArcGIS base map.
407
+ * @param {ArcGisBaseMapType} style The style of the ArcGIS base map imagery. Valid options are {@link ArcGisBaseMapType.SATELLITE}, {@link ArcGisBaseMapType.OCEANS}, and {@link ArcGisBaseMapType.HILLSHADE}.
408
+ * @param {ArcGisMapServerImageryProvider.ConstructorOptions} [options] Object describing initialization options.
409
+ * @returns {Promise<ArcGisMapServerImageryProvider>} A promise that resolves to the created ArcGisMapServerImageryProvider.
410
+ *
411
+ * @example
412
+ * // Set the default access token for accessing ArcGIS Image Tile service
413
+ * Cesium.ArcGisMapService.defaultAccessToken = "<ArcGIS Access Token>";
414
+ *
415
+ * // Add a base layer from a default ArcGIS basemap
416
+ * const provider = await Cesium.ArcGisMapServerImageryProvider.fromBasemapType(
417
+ * Cesium.ArcGisBaseMapType.SATELLITE);
418
+ *
419
+ * @example
420
+ * // Add a base layer from a default ArcGIS Basemap
421
+ * const viewer = new Cesium.Viewer("cesiumContainer", {
422
+ * baseLayer: Cesium.ImageryLayer.fromProviderAsync(
423
+ * Cesium.ArcGisMapServerImageryProvider.fromBasemapType(
424
+ * Cesium.ArcGisBaseMapType.HILLSHADE, {
425
+ * token: "<ArcGIS Access Token>"
426
+ * }
427
+ * )
428
+ * ),
429
+ * });
430
+ */
431
+
432
+ ArcGisMapServerImageryProvider.fromBasemapType = async function (
433
+ style,
434
+ options
435
+ ) {
436
+ //>>includeStart('debug', pragmas.debug);
437
+ Check.defined("style", style);
438
+ //>>includeEnd('debug');
439
+
440
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
441
+ let accessToken;
442
+ let server;
443
+ let warningCredit;
444
+ switch (style) {
445
+ case ArcGisBaseMapType.SATELLITE:
446
+ {
447
+ accessToken = defaultValue(
448
+ options.token,
449
+ ArcGisMapService.defaultAccessToken
450
+ );
451
+ server = Resource.createIfNeeded(
452
+ defaultValue(options.url, ArcGisMapService.defaultWorldImageryServer)
453
+ );
454
+ server.appendForwardSlash();
455
+ const defaultTokenCredit = ArcGisMapService.getDefaultTokenCredit(
456
+ accessToken
264
457
  );
265
- if (metadataError.retry) {
266
- return requestMetadata();
458
+ if (defined(defaultTokenCredit)) {
459
+ warningCredit = Credit.clone(defaultTokenCredit);
267
460
  }
268
- return Promise.reject(new RuntimeError(message));
269
461
  }
270
- that._maximumLevel = data.tileInfo.lods.length - 1;
271
-
272
- if (defined(data.fullExtent)) {
273
- if (
274
- defined(data.fullExtent.spatialReference) &&
275
- defined(data.fullExtent.spatialReference.wkid)
276
- ) {
277
- if (
278
- data.fullExtent.spatialReference.wkid === 102100 ||
279
- data.fullExtent.spatialReference.wkid === 102113
280
- ) {
281
- const projection = new WebMercatorProjection();
282
- const extent = data.fullExtent;
283
- const sw = projection.unproject(
284
- new Cartesian3(
285
- Math.max(
286
- extent.xmin,
287
- -that._tilingScheme.ellipsoid.maximumRadius * Math.PI
288
- ),
289
- Math.max(
290
- extent.ymin,
291
- -that._tilingScheme.ellipsoid.maximumRadius * Math.PI
292
- ),
293
- 0.0
294
- )
295
- );
296
- const ne = projection.unproject(
297
- new Cartesian3(
298
- Math.min(
299
- extent.xmax,
300
- that._tilingScheme.ellipsoid.maximumRadius * Math.PI
301
- ),
302
- Math.min(
303
- extent.ymax,
304
- that._tilingScheme.ellipsoid.maximumRadius * Math.PI
305
- ),
306
- 0.0
307
- )
308
- );
309
- that._rectangle = new Rectangle(
310
- sw.longitude,
311
- sw.latitude,
312
- ne.longitude,
313
- ne.latitude
314
- );
315
- } else if (data.fullExtent.spatialReference.wkid === 4326) {
316
- that._rectangle = Rectangle.fromDegrees(
317
- data.fullExtent.xmin,
318
- data.fullExtent.ymin,
319
- data.fullExtent.xmax,
320
- data.fullExtent.ymax
321
- );
322
- } else {
323
- const extentMessage = `fullExtent.spatialReference WKID ${data.fullExtent.spatialReference.wkid} is not supported.`;
324
- metadataError = TileProviderError.reportError(
325
- metadataError,
326
- that,
327
- that._errorEvent,
328
- extentMessage,
329
- undefined,
330
- undefined,
331
- undefined
332
- );
333
- if (metadataError.retry) {
334
- return requestMetadata();
335
- }
336
- return Promise.reject(new RuntimeError(extentMessage));
337
- }
462
+ break;
463
+ case ArcGisBaseMapType.OCEANS:
464
+ {
465
+ accessToken = defaultValue(
466
+ options.token,
467
+ ArcGisMapService.defaultAccessToken
468
+ );
469
+ server = Resource.createIfNeeded(
470
+ defaultValue(options.url, ArcGisMapService.defaultWorldOceanServer)
471
+ );
472
+ server.appendForwardSlash();
473
+ const defaultTokenCredit = ArcGisMapService.getDefaultTokenCredit(
474
+ accessToken
475
+ );
476
+ if (defined(defaultTokenCredit)) {
477
+ warningCredit = Credit.clone(defaultTokenCredit);
338
478
  }
339
- } else {
340
- that._rectangle = that._tilingScheme.rectangle;
341
479
  }
342
-
343
- // Install the default tile discard policy if none has been supplied.
344
- if (!defined(that._tileDiscardPolicy)) {
345
- that._tileDiscardPolicy = new DiscardMissingTileImagePolicy({
346
- missingImageUrl: buildImageResource(that, 0, 0, that._maximumLevel)
347
- .url,
348
- pixelsToCheck: [
349
- new Cartesian2(0, 0),
350
- new Cartesian2(200, 20),
351
- new Cartesian2(20, 200),
352
- new Cartesian2(80, 110),
353
- new Cartesian2(160, 130),
354
- ],
355
- disableCheckIfAllPixelsAreTransparent: true,
356
- });
480
+ break;
481
+ case ArcGisBaseMapType.HILLSHADE:
482
+ {
483
+ accessToken = defaultValue(
484
+ options.token,
485
+ ArcGisMapService.defaultAccessToken
486
+ );
487
+ server = Resource.createIfNeeded(
488
+ defaultValue(
489
+ options.url,
490
+ ArcGisMapService.defaultWorldHillshadeServer
491
+ )
492
+ );
493
+ server.appendForwardSlash();
494
+ const defaultTokenCredit = ArcGisMapService.getDefaultTokenCredit(
495
+ accessToken
496
+ );
497
+ if (defined(defaultTokenCredit)) {
498
+ warningCredit = Credit.clone(defaultTokenCredit);
499
+ }
357
500
  }
358
-
359
- that._useTiles = true;
360
- }
361
-
362
- if (defined(data.copyrightText) && data.copyrightText.length > 0) {
363
- that._credit = new Credit(data.copyrightText);
364
- }
365
-
366
- that._ready = true;
367
- TileProviderError.reportSuccess(metadataError);
368
- return Promise.resolve(true);
369
- }
370
-
371
- function metadataFailure(e) {
372
- const message = `An error occurred while accessing ${that._resource.url}.`;
373
- metadataError = TileProviderError.reportError(
374
- metadataError,
375
- that,
376
- that._errorEvent,
377
- message,
378
- undefined,
379
- undefined,
380
- undefined
381
- );
382
- return Promise.reject(new RuntimeError(message));
383
- }
384
- function requestMetadata() {
385
- const resource = that._resource.getDerivedResource({
386
- queryParameters: {
387
- f: "json",
388
- },
389
- });
390
- return resource.fetchJsonp().then(metadataSuccess).catch(metadataFailure);
501
+ break;
502
+ default:
503
+ //>>includeStart('debug', pragmas.debug);
504
+ throw new DeveloperError(`Unsupported basemap type: ${style}`);
505
+ //>>includeEnd('debug');
391
506
  }
392
507
 
393
- if (this._useTiles) {
394
- this._readyPromise = requestMetadata();
395
- } else {
396
- this._ready = true;
397
- this._readyPromise = Promise.resolve(true);
398
- }
399
- }
508
+ return ArcGisMapServerImageryProvider.fromUrl(server, {
509
+ ...options,
510
+ token: accessToken,
511
+ credit: warningCredit,
512
+ usePreCachedTilesIfAvailable: true, // ArcGIS Base Map Service Layers only support Tiled views
513
+ });
514
+ };
400
515
 
401
516
  function buildImageResource(imageryProvider, x, y, level, request) {
402
517
  let resource;
@@ -440,7 +555,6 @@ function buildImageResource(imageryProvider, x, y, level, request) {
440
555
  queryParameters: query,
441
556
  });
442
557
  }
443
-
444
558
  return resource;
445
559
  }
446
560
 
@@ -482,127 +596,73 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
482
596
  },
483
597
 
484
598
  /**
485
- * Gets the width of each tile, in pixels. This function should
486
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
599
+ * Gets the width of each tile, in pixels.
487
600
  * @memberof ArcGisMapServerImageryProvider.prototype
488
601
  * @type {number}
489
602
  * @readonly
490
603
  */
491
604
  tileWidth: {
492
605
  get: function () {
493
- //>>includeStart('debug', pragmas.debug);
494
- if (!this._ready) {
495
- throw new DeveloperError(
496
- "tileWidth must not be called before the imagery provider is ready."
497
- );
498
- }
499
- //>>includeEnd('debug');
500
-
501
606
  return this._tileWidth;
502
607
  },
503
608
  },
504
609
 
505
610
  /**
506
- * Gets the height of each tile, in pixels. This function should
507
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
611
+ * Gets the height of each tile, in pixels.
508
612
  * @memberof ArcGisMapServerImageryProvider.prototype
509
613
  * @type {number}
510
614
  * @readonly
511
615
  */
512
616
  tileHeight: {
513
617
  get: function () {
514
- //>>includeStart('debug', pragmas.debug);
515
- if (!this._ready) {
516
- throw new DeveloperError(
517
- "tileHeight must not be called before the imagery provider is ready."
518
- );
519
- }
520
- //>>includeEnd('debug');
521
-
522
618
  return this._tileHeight;
523
619
  },
524
620
  },
525
621
 
526
622
  /**
527
- * Gets the maximum level-of-detail that can be requested. This function should
528
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
623
+ * Gets the maximum level-of-detail that can be requested.
529
624
  * @memberof ArcGisMapServerImageryProvider.prototype
530
625
  * @type {number|undefined}
531
626
  * @readonly
532
627
  */
533
628
  maximumLevel: {
534
629
  get: function () {
535
- //>>includeStart('debug', pragmas.debug);
536
- if (!this._ready) {
537
- throw new DeveloperError(
538
- "maximumLevel must not be called before the imagery provider is ready."
539
- );
540
- }
541
- //>>includeEnd('debug');
542
-
543
630
  return this._maximumLevel;
544
631
  },
545
632
  },
546
633
 
547
634
  /**
548
- * Gets the minimum level-of-detail that can be requested. This function should
549
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
635
+ * Gets the minimum level-of-detail that can be requested.
550
636
  * @memberof ArcGisMapServerImageryProvider.prototype
551
637
  * @type {number}
552
638
  * @readonly
553
639
  */
554
640
  minimumLevel: {
555
641
  get: function () {
556
- //>>includeStart('debug', pragmas.debug);
557
- if (!this._ready) {
558
- throw new DeveloperError(
559
- "minimumLevel must not be called before the imagery provider is ready."
560
- );
561
- }
562
- //>>includeEnd('debug');
563
-
564
642
  return 0;
565
643
  },
566
644
  },
567
645
 
568
646
  /**
569
- * Gets the tiling scheme used by this provider. This function should
570
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
647
+ * Gets the tiling scheme used by this provider.
571
648
  * @memberof ArcGisMapServerImageryProvider.prototype
572
649
  * @type {TilingScheme}
573
650
  * @readonly
574
651
  */
575
652
  tilingScheme: {
576
653
  get: function () {
577
- //>>includeStart('debug', pragmas.debug);
578
- if (!this._ready) {
579
- throw new DeveloperError(
580
- "tilingScheme must not be called before the imagery provider is ready."
581
- );
582
- }
583
- //>>includeEnd('debug');
584
-
585
654
  return this._tilingScheme;
586
655
  },
587
656
  },
588
657
 
589
658
  /**
590
- * Gets the rectangle, in radians, of the imagery provided by this instance. This function should
591
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
659
+ * Gets the rectangle, in radians, of the imagery provided by this instance.
592
660
  * @memberof ArcGisMapServerImageryProvider.prototype
593
661
  * @type {Rectangle}
594
662
  * @readonly
595
663
  */
596
664
  rectangle: {
597
665
  get: function () {
598
- //>>includeStart('debug', pragmas.debug);
599
- if (!this._ready) {
600
- throw new DeveloperError(
601
- "rectangle must not be called before the imagery provider is ready."
602
- );
603
- }
604
- //>>includeEnd('debug');
605
-
606
666
  return this._rectangle;
607
667
  },
608
668
  },
@@ -610,22 +670,13 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
610
670
  /**
611
671
  * Gets the tile discard policy. If not undefined, the discard policy is responsible
612
672
  * for filtering out "missing" tiles via its shouldDiscardImage function. If this function
613
- * returns undefined, no tiles are filtered. This function should
614
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
673
+ * returns undefined, no tiles are filtered.
615
674
  * @memberof ArcGisMapServerImageryProvider.prototype
616
675
  * @type {TileDiscardPolicy}
617
676
  * @readonly
618
677
  */
619
678
  tileDiscardPolicy: {
620
679
  get: function () {
621
- //>>includeStart('debug', pragmas.debug);
622
- if (!this._ready) {
623
- throw new DeveloperError(
624
- "tileDiscardPolicy must not be called before the imagery provider is ready."
625
- );
626
- }
627
- //>>includeEnd('debug');
628
-
629
680
  return this._tileDiscardPolicy;
630
681
  },
631
682
  },
@@ -649,9 +700,14 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
649
700
  * @memberof ArcGisMapServerImageryProvider.prototype
650
701
  * @type {boolean}
651
702
  * @readonly
703
+ * @deprecated
652
704
  */
653
705
  ready: {
654
706
  get: function () {
707
+ deprecationWarning(
708
+ "ArcGisMapServerImageryProvider.ready",
709
+ "ArcGisMapServerImageryProvider.ready was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ArcGisMapServerImageryProvider.fromUrl instead."
710
+ );
655
711
  return this._ready;
656
712
  },
657
713
  },
@@ -661,9 +717,14 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
661
717
  * @memberof ArcGisMapServerImageryProvider.prototype
662
718
  * @type {Promise<boolean>}
663
719
  * @readonly
720
+ * @deprecated
664
721
  */
665
722
  readyPromise: {
666
723
  get: function () {
724
+ deprecationWarning(
725
+ "ArcGisMapServerImageryProvider.readyPromise",
726
+ "ArcGisMapServerImageryProvider.readyPromise was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ArcGisMapServerImageryProvider.fromUrl instead."
727
+ );
667
728
  return this._readyPromise;
668
729
  },
669
730
  },
@@ -683,9 +744,7 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
683
744
 
684
745
  /**
685
746
  * Gets a value indicating whether this imagery provider is using pre-cached tiles from the
686
- * ArcGIS MapServer. If the imagery provider is not yet ready ({@link ArcGisMapServerImageryProvider#ready}), this function
687
- * will return the value of `options.usePreCachedTilesIfAvailable`, even if the MapServer does
688
- * not have pre-cached tiles.
747
+ * ArcGIS MapServer.
689
748
  * @memberof ArcGisMapServerImageryProvider.prototype
690
749
  *
691
750
  * @type {boolean}
@@ -727,8 +786,289 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
727
786
  return this._layers;
728
787
  },
729
788
  },
789
+
790
+ /**
791
+ * The default alpha blending value of this provider, with 0.0 representing fully transparent and
792
+ * 1.0 representing fully opaque.
793
+ * @memberof ArcGisMapServerImageryProvider.prototype
794
+ * @type {Number|undefined}
795
+ * @deprecated
796
+ */
797
+ defaultAlpha: {
798
+ get: function () {
799
+ deprecationWarning(
800
+ "ArcGisMapServerImageryProvider.defaultAlpha",
801
+ "ArcGisMapServerImageryProvider.defaultAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.alpha instead."
802
+ );
803
+ return this._defaultAlpha;
804
+ },
805
+ set: function (value) {
806
+ deprecationWarning(
807
+ "ArcGisMapServerImageryProvider.defaultAlpha",
808
+ "ArcGisMapServerImageryProvider.defaultAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.alpha instead."
809
+ );
810
+ this._defaultAlpha = value;
811
+ },
812
+ },
813
+
814
+ /**
815
+ * The default alpha blending value on the night side of the globe of this provider, with 0.0 representing fully transparent and
816
+ * 1.0 representing fully opaque.
817
+ * @memberof ArcGisMapServerImageryProvider.prototype
818
+ * @type {Number|undefined}
819
+ * @deprecated
820
+ */
821
+ defaultNightAlpha: {
822
+ get: function () {
823
+ deprecationWarning(
824
+ "ArcGisMapServerImageryProvider.defaultNightAlpha",
825
+ "ArcGisMapServerImageryProvider.defaultNightAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.nightAlpha instead."
826
+ );
827
+ return this._defaultNightAlpha;
828
+ },
829
+ set: function (value) {
830
+ deprecationWarning(
831
+ "ArcGisMapServerImageryProvider.defaultNightAlpha",
832
+ "ArcGisMapServerImageryProvider.defaultNightAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.nightAlpha instead."
833
+ );
834
+ this._defaultNightAlpha = value;
835
+ },
836
+ },
837
+
838
+ /**
839
+ * The default alpha blending value on the day side of the globe of this provider, with 0.0 representing fully transparent and
840
+ * 1.0 representing fully opaque.
841
+ * @memberof ArcGisMapServerImageryProvider.prototype
842
+ * @type {Number|undefined}
843
+ * @deprecated
844
+ */
845
+ defaultDayAlpha: {
846
+ get: function () {
847
+ deprecationWarning(
848
+ "ArcGisMapServerImageryProvider.defaultDayAlpha",
849
+ "ArcGisMapServerImageryProvider.defaultDayAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.dayAlpha instead."
850
+ );
851
+ return this._defaultDayAlpha;
852
+ },
853
+ set: function (value) {
854
+ deprecationWarning(
855
+ "ArcGisMapServerImageryProvider.defaultDayAlpha",
856
+ "ArcGisMapServerImageryProvider.defaultDayAlpha was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.dayAlpha instead."
857
+ );
858
+ this._defaultDayAlpha = value;
859
+ },
860
+ },
861
+
862
+ /**
863
+ * The default brightness of this provider. 1.0 uses the unmodified imagery color. Less than 1.0
864
+ * makes the imagery darker while greater than 1.0 makes it brighter.
865
+ * @memberof ArcGisMapServerImageryProvider.prototype
866
+ * @type {Number|undefined}
867
+ * @deprecated
868
+ */
869
+ defaultBrightness: {
870
+ get: function () {
871
+ deprecationWarning(
872
+ "ArcGisMapServerImageryProvider.defaultBrightness",
873
+ "ArcGisMapServerImageryProvider.defaultBrightness was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.brightness instead."
874
+ );
875
+ return this._defaultBrightness;
876
+ },
877
+ set: function (value) {
878
+ deprecationWarning(
879
+ "ArcGisMapServerImageryProvider.defaultBrightness",
880
+ "ArcGisMapServerImageryProvider.defaultBrightness was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.brightness instead."
881
+ );
882
+ this._defaultBrightness = value;
883
+ },
884
+ },
885
+
886
+ /**
887
+ * The default contrast of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces
888
+ * the contrast while greater than 1.0 increases it.
889
+ * @memberof ArcGisMapServerImageryProvider.prototype
890
+ * @type {Number|undefined}
891
+ * @deprecated
892
+ */
893
+ defaultContrast: {
894
+ get: function () {
895
+ deprecationWarning(
896
+ "ArcGisMapServerImageryProvider.defaultContrast",
897
+ "ArcGisMapServerImageryProvider.defaultContrast was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.contrast instead."
898
+ );
899
+ return this._defaultContrast;
900
+ },
901
+ set: function (value) {
902
+ deprecationWarning(
903
+ "ArcGisMapServerImageryProvider.defaultContrast",
904
+ "ArcGisMapServerImageryProvider.defaultContrast was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.contrast instead."
905
+ );
906
+ this._defaultContrast = value;
907
+ },
908
+ },
909
+
910
+ /**
911
+ * The default hue of this provider in radians. 0.0 uses the unmodified imagery color.
912
+ * @memberof ArcGisMapServerImageryProvider.prototype
913
+ * @type {Number|undefined}
914
+ * @deprecated
915
+ */
916
+ defaultHue: {
917
+ get: function () {
918
+ deprecationWarning(
919
+ "ArcGisMapServerImageryProvider.defaultHue",
920
+ "ArcGisMapServerImageryProvider.defaultHue was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.hue instead."
921
+ );
922
+ return this._defaultHue;
923
+ },
924
+ set: function (value) {
925
+ deprecationWarning(
926
+ "ArcGisMapServerImageryProvider.defaultHue",
927
+ "ArcGisMapServerImageryProvider.defaultHue was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.hue instead."
928
+ );
929
+ this._defaultHue = value;
930
+ },
931
+ },
932
+
933
+ /**
934
+ * The default saturation of this provider. 1.0 uses the unmodified imagery color. Less than 1.0 reduces the
935
+ * saturation while greater than 1.0 increases it.
936
+ * @memberof ArcGisMapServerImageryProvider.prototype
937
+ * @type {Number|undefined}
938
+ * @deprecated
939
+ */
940
+ defaultSaturation: {
941
+ get: function () {
942
+ deprecationWarning(
943
+ "ArcGisMapServerImageryProvider.defaultSaturation",
944
+ "ArcGisMapServerImageryProvider.defaultSaturation was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.saturation instead."
945
+ );
946
+ return this._defaultSaturation;
947
+ },
948
+ set: function (value) {
949
+ deprecationWarning(
950
+ "ArcGisMapServerImageryProvider.defaultSaturation",
951
+ "ArcGisMapServerImageryProvider.defaultSaturation was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.saturation instead."
952
+ );
953
+ this._defaultSaturation = value;
954
+ },
955
+ },
956
+
957
+ /**
958
+ * The default gamma correction to apply to this provider. 1.0 uses the unmodified imagery color.
959
+ * @memberof ArcGisMapServerImageryProvider.prototype
960
+ * @type {Number|undefined}
961
+ * @deprecated
962
+ */
963
+ defaultGamma: {
964
+ get: function () {
965
+ deprecationWarning(
966
+ "ArcGisMapServerImageryProvider.defaultGamma",
967
+ "ArcGisMapServerImageryProvider.defaultGamma was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.gamma instead."
968
+ );
969
+ return this._defaultGamma;
970
+ },
971
+ set: function (value) {
972
+ deprecationWarning(
973
+ "ArcGisMapServerImageryProvider.defaultGamma",
974
+ "ArcGisMapServerImageryProvider.defaultGamma was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.gamma instead."
975
+ );
976
+ this._defaultGamma = value;
977
+ },
978
+ },
979
+
980
+ /**
981
+ * The default texture minification filter to apply to this provider.
982
+ * @memberof ArcGisMapServerImageryProvider.prototype
983
+ * @type {TextureMinificationFilter}
984
+ * @deprecated
985
+ */
986
+ defaultMinificationFilter: {
987
+ get: function () {
988
+ deprecationWarning(
989
+ "ArcGisMapServerImageryProvider.defaultMinificationFilter",
990
+ "ArcGisMapServerImageryProvider.defaultMinificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.minificationFilter instead."
991
+ );
992
+ return this._defaultMinificationFilter;
993
+ },
994
+ set: function (value) {
995
+ deprecationWarning(
996
+ "ArcGisMapServerImageryProvider.defaultMinificationFilter",
997
+ "ArcGisMapServerImageryProvider.defaultMinificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.minificationFilter instead."
998
+ );
999
+ this._defaultMinificationFilter = value;
1000
+ },
1001
+ },
1002
+
1003
+ /**
1004
+ * The default texture magnification filter to apply to this provider.
1005
+ * @memberof ArcGisMapServerImageryProvider.prototype
1006
+ * @type {TextureMagnificationFilter}
1007
+ * @deprecated
1008
+ */
1009
+ defaultMagnificationFilter: {
1010
+ get: function () {
1011
+ deprecationWarning(
1012
+ "ArcGisMapServerImageryProvider.defaultMagnificationFilter",
1013
+ "ArcGisMapServerImageryProvider.defaultMagnificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.magnificationFilter instead."
1014
+ );
1015
+ return this._defaultMagnificationFilter;
1016
+ },
1017
+ set: function (value) {
1018
+ deprecationWarning(
1019
+ "ArcGisMapServerImageryProvider.defaultMagnificationFilter",
1020
+ "ArcGisMapServerImageryProvider.defaultMagnificationFilter was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ImageryLayer.magnificationFilter instead."
1021
+ );
1022
+ this._defaultMagnificationFilter = value;
1023
+ },
1024
+ },
730
1025
  });
731
1026
 
1027
+ /**
1028
+ * Creates an {@link ImageryProvider} which provides tiled imagery hosted by an ArcGIS MapServer. By default, the server's pre-cached tiles are
1029
+ * used, if available.
1030
+ *
1031
+ * @param {Resource|String} url The URL of the ArcGIS MapServer service.
1032
+ * @param {ArcGisMapServerImageryProvider.ConstructorOptions} [options] Object describing initialization options.
1033
+ * @returns {Promise<ArcGisMapServerImageryProvider>} A promise that resolves to the created ArcGisMapServerImageryProvider.
1034
+ *
1035
+ * @example
1036
+ * const esri = await Cesium.ArcGisMapServerImageryProvider.fromUrl(
1037
+ * "https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"
1038
+ * );
1039
+ *
1040
+ * @exception {RuntimeError} metadata spatial reference specifies an unknown WKID
1041
+ * @exception {RuntimeError} metadata fullExtent.spatialReference specifies an unknown WKID
1042
+ */
1043
+ ArcGisMapServerImageryProvider.fromUrl = async function (url, options) {
1044
+ //>>includeStart('debug', pragmas.debug);
1045
+ Check.defined("url", url);
1046
+ //>>includeEnd('debug');
1047
+
1048
+ options = defaultValue(options, defaultValue.EMPTY_OBJECT);
1049
+
1050
+ const resource = Resource.createIfNeeded(url);
1051
+ resource.appendForwardSlash();
1052
+
1053
+ if (defined(options.token)) {
1054
+ resource.setQueryParameters({
1055
+ token: options.token,
1056
+ });
1057
+ }
1058
+
1059
+ const provider = new ArcGisMapServerImageryProvider(options);
1060
+ provider._resource = resource;
1061
+ const imageryProviderBuilder = new ImageryProviderBuilder(options);
1062
+ const useTiles = defaultValue(options.usePreCachedTilesIfAvailable, true);
1063
+ if (useTiles) {
1064
+ await requestMetadata(resource, imageryProviderBuilder);
1065
+ }
1066
+
1067
+ imageryProviderBuilder.build(provider);
1068
+ provider._readyPromise = Promise.resolve(true);
1069
+ return provider;
1070
+ };
1071
+
732
1072
  /**
733
1073
  * Gets the credits to be displayed when a given tile is displayed.
734
1074
  *
@@ -736,20 +1076,17 @@ Object.defineProperties(ArcGisMapServerImageryProvider.prototype, {
736
1076
  * @param {number} y The tile Y coordinate.
737
1077
  * @param {number} level The tile level;
738
1078
  * @returns {Credit[]} The credits to be displayed when the tile is displayed.
739
- *
740
- * @exception {DeveloperError} <code>getTileCredits</code> must not be called before the imagery provider is ready.
741
1079
  */
742
1080
  ArcGisMapServerImageryProvider.prototype.getTileCredits = function (
743
1081
  x,
744
1082
  y,
745
1083
  level
746
1084
  ) {
747
- return undefined;
1085
+ return this._tileCredits;
748
1086
  };
749
1087
 
750
1088
  /**
751
- * Requests the image for a given tile. This function should
752
- * not be called before {@link ArcGisMapServerImageryProvider#ready} returns true.
1089
+ * Requests the image for a given tile.
753
1090
  *
754
1091
  * @param {number} x The tile X coordinate.
755
1092
  * @param {number} y The tile Y coordinate.
@@ -757,8 +1094,6 @@ ArcGisMapServerImageryProvider.prototype.getTileCredits = function (
757
1094
  * @param {Request} [request] The request object. Intended for internal use only.
758
1095
  * @returns {Promise<ImageryTypes>|undefined} A promise for the image that will resolve when the image is available, or
759
1096
  * undefined if there are too many active requests to the server, and the request should be retried later.
760
- *
761
- * @exception {DeveloperError} <code>requestImage</code> must not be called before the imagery provider is ready.
762
1097
  */
763
1098
  ArcGisMapServerImageryProvider.prototype.requestImage = function (
764
1099
  x,
@@ -766,14 +1101,6 @@ ArcGisMapServerImageryProvider.prototype.requestImage = function (
766
1101
  level,
767
1102
  request
768
1103
  ) {
769
- //>>includeStart('debug', pragmas.debug);
770
- if (!this._ready) {
771
- throw new DeveloperError(
772
- "requestImage must not be called before the imagery provider is ready."
773
- );
774
- }
775
- //>>includeEnd('debug');
776
-
777
1104
  return ImageryProvider.loadImage(
778
1105
  this,
779
1106
  buildImageResource(this, x, y, level, request)
@@ -783,7 +1110,7 @@ ArcGisMapServerImageryProvider.prototype.requestImage = function (
783
1110
  /**
784
1111
  /**
785
1112
  * Asynchronously determines what features, if any, are located at a given longitude and latitude within
786
- * a tile. This function should not be called before {@link ImageryProvider#ready} returns true.
1113
+ * a tile.
787
1114
  *
788
1115
  * @param {number} x The tile X coordinate.
789
1116
  * @param {number} y The tile Y coordinate.
@@ -793,8 +1120,6 @@ ArcGisMapServerImageryProvider.prototype.requestImage = function (
793
1120
  * @return {Promise<ImageryLayerFeatureInfo[]>|undefined} A promise for the picked features that will resolve when the asynchronous
794
1121
  * picking completes. The resolved value is an array of {@link ImageryLayerFeatureInfo}
795
1122
  * instances. The array may be empty if no features are found at the given location.
796
- *
797
- * @exception {DeveloperError} <code>pickFeatures</code> must not be called before the imagery provider is ready.
798
1123
  */
799
1124
  ArcGisMapServerImageryProvider.prototype.pickFeatures = function (
800
1125
  x,
@@ -803,14 +1128,6 @@ ArcGisMapServerImageryProvider.prototype.pickFeatures = function (
803
1128
  longitude,
804
1129
  latitude
805
1130
  ) {
806
- //>>includeStart('debug', pragmas.debug);
807
- if (!this._ready) {
808
- throw new DeveloperError(
809
- "pickFeatures must not be called before the imagery provider is ready."
810
- );
811
- }
812
- //>>includeEnd('debug');
813
-
814
1131
  if (!this.enablePickFeatures) {
815
1132
  return undefined;
816
1133
  }
@@ -902,4 +1219,5 @@ ArcGisMapServerImageryProvider.prototype.pickFeatures = function (
902
1219
  return result;
903
1220
  });
904
1221
  };
1222
+ ArcGisMapServerImageryProvider._metadataCache = {};
905
1223
  export default ArcGisMapServerImageryProvider;