@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.
- package/Build/Workers/{AttributeCompression-8a5a065e.js → AttributeCompression-f9f6c717.js} +1 -1
- package/Build/Workers/{AxisAlignedBoundingBox-a6f9f0e5.js → AxisAlignedBoundingBox-31fadcf0.js} +1 -1
- package/Build/Workers/{BoundingRectangle-b0a68595.js → BoundingRectangle-995f0079.js} +1 -1
- package/Build/Workers/{BoxGeometry-baedd794.js → BoxGeometry-7eb1af60.js} +1 -1
- package/Build/Workers/{Color-f85df1be.js → Color-2dc49658.js} +1 -1
- package/Build/Workers/{CoplanarPolygonGeometryLibrary-30516950.js → CoplanarPolygonGeometryLibrary-d7d972d6.js} +1 -1
- package/Build/Workers/{CorridorGeometryLibrary-5d5d3b3a.js → CorridorGeometryLibrary-1f5ef7b3.js} +1 -1
- package/Build/Workers/{CylinderGeometry-d899ae26.js → CylinderGeometry-23c67a6c.js} +1 -1
- package/Build/Workers/{CylinderGeometryLibrary-135b0858.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
- package/Build/Workers/{EllipseGeometry-a49f8449.js → EllipseGeometry-37014da4.js} +1 -1
- package/Build/Workers/{EllipseGeometryLibrary-cba7edde.js → EllipseGeometryLibrary-92ab6b1e.js} +1 -1
- package/Build/Workers/{EllipseOutlineGeometry-8095c8cb.js → EllipseOutlineGeometry-12b6fef5.js} +1 -1
- package/Build/Workers/{EllipsoidGeodesic-dcff5cbd.js → EllipsoidGeodesic-5b3623dc.js} +1 -1
- package/Build/Workers/{EllipsoidGeometry-ed93f571.js → EllipsoidGeometry-508da15c.js} +1 -1
- package/Build/Workers/{EllipsoidOutlineGeometry-e4854854.js → EllipsoidOutlineGeometry-40d97455.js} +1 -1
- package/Build/Workers/{EllipsoidRhumbLine-b672d507.js → EllipsoidRhumbLine-ef872433.js} +1 -1
- package/Build/Workers/{EllipsoidTangentPlane-7ae1aa9a.js → EllipsoidTangentPlane-46d4d9c2.js} +1 -1
- package/Build/Workers/{EncodedCartesian3-e8bbca36.js → EncodedCartesian3-57415c8a.js} +1 -1
- package/Build/Workers/{FrustumGeometry-b62db3e3.js → FrustumGeometry-38605e69.js} +32 -4
- package/Build/Workers/{GeometryAttribute-780af4fa.js → GeometryAttribute-a466e9c7.js} +1 -1
- package/Build/Workers/{GeometryInstance-3fb607b7.js → GeometryInstance-34d9e21e.js} +1 -1
- package/Build/Workers/{GeometryPipeline-36b61c99.js → GeometryPipeline-dcf79306.js} +1 -1
- package/Build/Workers/{IndexDatatype-b8f3e09d.js → IndexDatatype-2643aa47.js} +1 -1
- package/Build/Workers/{IntersectionTests-e889fcf0.js → IntersectionTests-88c49b2e.js} +1 -1
- package/Build/Workers/{Math-dad82b4d.js → Math-0a2ac845.js} +12 -2
- package/Build/Workers/{Matrix2-1e403d0e.js → Matrix2-e1298525.js} +1 -1
- package/Build/Workers/{Matrix3-fa806b97.js → Matrix3-41c58dde.js} +1 -1
- package/Build/Workers/{OrientedBoundingBox-43478ac8.js → OrientedBoundingBox-2dd47921.js} +5 -3
- package/Build/Workers/{Plane-c27e1ac6.js → Plane-4c3d403b.js} +1 -1
- package/Build/Workers/{PolygonGeometryLibrary-38a98276.js → PolygonGeometryLibrary-59126025.js} +1 -1
- package/Build/Workers/PolygonPipeline-1fe328c0.js +1344 -0
- package/Build/Workers/{PolylinePipeline-30e4cec9.js → PolylinePipeline-896735cc.js} +1 -1
- package/Build/Workers/{PolylineVolumeGeometryLibrary-90551d26.js → PolylineVolumeGeometryLibrary-9c0639f7.js} +1 -1
- package/Build/Workers/{PrimitivePipeline-558d9cb0.js → PrimitivePipeline-fc1a47ff.js} +1 -1
- package/Build/Workers/{RectangleGeometryLibrary-815c68df.js → RectangleGeometryLibrary-a23c9ebe.js} +1 -1
- package/Build/Workers/{TerrainEncoding-341ead52.js → TerrainEncoding-51b8b33b.js} +1 -1
- package/Build/Workers/Transforms-bc45e707.js +14699 -0
- package/Build/Workers/{WallGeometryLibrary-ccf90976.js → WallGeometryLibrary-007e9883.js} +1 -1
- package/Build/Workers/{WebMercatorProjection-76a3fcc0.js → WebMercatorProjection-13ed1a6e.js} +1 -1
- package/Build/Workers/{arrayRemoveDuplicates-fac118a8.js → arrayRemoveDuplicates-d2061e85.js} +1 -1
- package/Build/Workers/cesiumWorkerBootstrapper.js +1 -1
- package/Build/Workers/combineGeometry.js +1 -1
- package/Build/Workers/createBoxGeometry.js +1 -1
- package/Build/Workers/createBoxOutlineGeometry.js +1 -1
- package/Build/Workers/createCircleGeometry.js +1 -1
- package/Build/Workers/createCircleOutlineGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonGeometry.js +1 -1
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createCorridorGeometry.js +1 -1
- package/Build/Workers/createCorridorOutlineGeometry.js +1 -1
- package/Build/Workers/createCylinderGeometry.js +1 -1
- package/Build/Workers/createCylinderOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipseGeometry.js +1 -1
- package/Build/Workers/createEllipseOutlineGeometry.js +1 -1
- package/Build/Workers/createEllipsoidGeometry.js +1 -1
- package/Build/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/Build/Workers/createFrustumGeometry.js +1 -1
- package/Build/Workers/createFrustumOutlineGeometry.js +1 -1
- package/Build/Workers/createGeometry.js +1 -1
- package/Build/Workers/createGroundPolylineGeometry.js +1 -1
- package/Build/Workers/createPlaneGeometry.js +1 -1
- package/Build/Workers/createPlaneOutlineGeometry.js +1 -1
- package/Build/Workers/createPolygonGeometry.js +1 -1
- package/Build/Workers/createPolygonOutlineGeometry.js +1 -1
- package/Build/Workers/createPolylineGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeGeometry.js +1 -1
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +1 -1
- package/Build/Workers/createRectangleGeometry.js +1 -1
- package/Build/Workers/createRectangleOutlineGeometry.js +1 -1
- package/Build/Workers/createSimplePolylineGeometry.js +1 -1
- package/Build/Workers/createSphereGeometry.js +1 -1
- package/Build/Workers/createSphereOutlineGeometry.js +1 -1
- package/Build/Workers/createVectorTileClampedPolylines.js +1 -1
- package/Build/Workers/createVectorTileGeometries.js +1 -1
- package/Build/Workers/createVectorTilePoints.js +1 -1
- package/Build/Workers/createVectorTilePolygons.js +1 -1
- package/Build/Workers/createVectorTilePolylines.js +1 -1
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/Build/Workers/createVerticesFromHeightmap.js +5 -8
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +10 -15
- package/Build/Workers/createWallGeometry.js +1 -1
- package/Build/Workers/createWallOutlineGeometry.js +1 -1
- package/Build/Workers/decodeDraco.js +1 -1
- package/Build/Workers/decodeI3S.js +1 -1
- package/Build/Workers/package.js +1 -1
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +1 -1
- package/Source/Core/ArcGISTiledElevationTerrainProvider.js +291 -191
- package/Source/Core/BingMapsGeocoderService.js +19 -1
- package/Source/Core/CartographicGeocoderService.js +15 -0
- package/Source/Core/CesiumTerrainProvider.js +571 -434
- package/Source/Core/Credit.js +1 -1
- package/Source/Core/CustomHeightmapTerrainProvider.js +12 -0
- package/Source/Core/EllipsoidTerrainProvider.js +17 -10
- package/Source/Core/FrustumGeometry.js +4 -3
- package/Source/Core/GeocoderService.js +32 -1
- package/Source/Core/GoogleEarthEnterpriseMetadata.js +86 -34
- package/Source/Core/GoogleEarthEnterpriseTerrainProvider.js +119 -82
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonGeocoderService.js +17 -2
- package/Source/Core/IonResource.js +14 -3
- package/Source/Core/OpenCageGeocoderService.js +18 -1
- package/Source/Core/OrientedBoundingBox.js +4 -2
- package/Source/Core/OrthographicFrustum.js +13 -0
- package/Source/Core/PeliasGeocoderService.js +14 -1
- package/Source/Core/PerspectiveFrustum.js +14 -0
- package/Source/Core/Request.js +3 -2
- package/Source/Core/RequestScheduler.js +10 -5
- package/Source/Core/Resource.js +230 -236
- package/Source/Core/TerrainProvider.js +9 -14
- package/Source/Core/TileProviderError.js +8 -8
- package/Source/Core/VRTheWorldTerrainProvider.js +193 -124
- package/Source/Core/buildModuleUrl.js +4 -3
- package/Source/Core/createWorldTerrain.js +20 -2
- package/Source/Core/createWorldTerrainAsync.js +48 -0
- package/Source/Core/sampleTerrain.js +9 -10
- package/Source/Core/sampleTerrainMostDetailed.js +66 -72
- package/Source/DataSources/Cesium3DTilesetVisualizer.js +37 -26
- package/Source/DataSources/DataSourceDisplay.js +2 -2
- package/Source/DataSources/Entity.js +6 -1
- package/Source/DataSources/EntityCluster.js +126 -128
- package/Source/DataSources/ModelVisualizer.js +104 -34
- package/Source/DataSources/PolygonGraphics.js +1 -1
- package/Source/Renderer/UniformState.js +3 -2
- package/Source/Renderer/demodernizeShader.js +5 -5
- package/Source/Scene/ArcGisBaseMapType.js +12 -0
- package/Source/Scene/ArcGisMapServerImageryProvider.js +694 -376
- package/Source/Scene/ArcGisMapService.js +83 -0
- package/Source/Scene/BingMapsImageryProvider.js +511 -305
- package/Source/Scene/BufferLoader.js +29 -34
- package/Source/Scene/Camera.js +8 -7
- package/Source/Scene/Cesium3DTile.js +392 -254
- package/Source/Scene/Cesium3DTileBatchTable.js +2 -2
- package/Source/Scene/Cesium3DTileContent.js +16 -0
- package/Source/Scene/Cesium3DTileContentFactory.js +4 -4
- package/Source/Scene/Cesium3DTilePass.js +8 -11
- package/Source/Scene/Cesium3DTileStyleEngine.js +1 -1
- package/Source/Scene/Cesium3DTilesVoxelProvider.js +225 -117
- package/Source/Scene/Cesium3DTileset.js +756 -482
- package/Source/Scene/Cesium3DTilesetBaseTraversal.js +301 -0
- package/Source/Scene/Cesium3DTilesetMostDetailedTraversal.js +33 -46
- package/Source/Scene/Cesium3DTilesetSkipTraversal.js +421 -0
- package/Source/Scene/Cesium3DTilesetTraversal.js +219 -671
- package/Source/Scene/ClassificationPrimitive.js +7 -0
- package/Source/Scene/Composite3DTileContent.js +69 -26
- package/Source/Scene/CreditDisplay.js +132 -20
- package/Source/Scene/DepthPlane.js +1 -1
- package/Source/Scene/Empty3DTileContent.js +31 -1
- package/Source/Scene/Geometry3DTileContent.js +47 -7
- package/Source/Scene/Globe.js +5 -1
- package/Source/Scene/GlobeSurfaceTile.js +2 -1
- package/Source/Scene/GlobeSurfaceTileProvider.js +53 -30
- package/Source/Scene/GltfBufferViewLoader.js +47 -91
- package/Source/Scene/GltfDracoLoader.js +110 -112
- package/Source/Scene/GltfImageLoader.js +71 -78
- package/Source/Scene/GltfIndexBufferLoader.js +108 -121
- package/Source/Scene/GltfJsonLoader.js +87 -74
- package/Source/Scene/GltfLoader.js +381 -300
- package/Source/Scene/GltfStructuralMetadataLoader.js +109 -110
- package/Source/Scene/GltfTextureLoader.js +97 -96
- package/Source/Scene/GltfVertexBufferLoader.js +128 -133
- package/Source/Scene/GoogleEarthEnterpriseImageryProvider.js +353 -225
- package/Source/Scene/GoogleEarthEnterpriseMapsProvider.js +491 -331
- package/Source/Scene/GridImageryProvider.js +267 -104
- package/Source/Scene/GroundPolylinePrimitive.js +12 -1
- package/Source/Scene/GroundPrimitive.js +8 -1
- package/Source/Scene/I3SDataProvider.js +214 -113
- package/Source/Scene/I3SFeature.js +7 -6
- package/Source/Scene/I3SLayer.js +26 -37
- package/Source/Scene/I3SNode.js +59 -66
- package/Source/Scene/Imagery.js +6 -1
- package/Source/Scene/ImageryLayer.js +299 -48
- package/Source/Scene/ImageryLayerCollection.js +26 -0
- package/Source/Scene/ImageryProvider.js +129 -111
- package/Source/Scene/Implicit3DTileContent.js +72 -23
- package/Source/Scene/ImplicitSubtree.js +66 -45
- package/Source/Scene/IonImageryProvider.js +482 -275
- package/Source/Scene/MapboxImageryProvider.js +272 -112
- package/Source/Scene/MapboxStyleImageryProvider.js +270 -111
- package/Source/Scene/MetadataSchemaLoader.js +26 -36
- package/Source/Scene/Model/B3dmLoader.js +42 -46
- package/Source/Scene/Model/GeoJsonLoader.js +8 -32
- package/Source/Scene/Model/I3dmLoader.js +48 -74
- package/Source/Scene/Model/MaterialPipelineStage.js +12 -12
- package/Source/Scene/Model/Model.js +514 -135
- package/Source/Scene/Model/Model3DTileContent.js +83 -31
- package/Source/Scene/Model/ModelAnimationCollection.js +3 -3
- package/Source/Scene/Model/ModelDrawCommand.js +15 -26
- package/Source/Scene/Model/ModelUtility.js +16 -16
- package/Source/Scene/Model/PntsLoader.js +27 -32
- package/Source/Scene/Model/UniformType.js +1 -1
- package/Source/Scene/Multiple3DTileContent.js +134 -115
- package/Source/Scene/Picking.js +3 -2
- package/Source/Scene/PointCloud.js +11 -19
- package/Source/Scene/Primitive.js +20 -0
- package/Source/Scene/QuadtreePrimitive.js +5 -2
- package/Source/Scene/QuadtreeTileProvider.js +4 -8
- package/Source/Scene/ResourceCache.js +47 -105
- package/Source/Scene/ResourceCacheStatistics.js +24 -58
- package/Source/Scene/ResourceLoader.js +5 -17
- package/Source/Scene/ResourceLoaderState.js +12 -4
- package/Source/Scene/Scene.js +65 -0
- package/Source/Scene/SceneTransforms.js +3 -2
- package/Source/Scene/ScreenSpaceCameraController.js +2 -2
- package/Source/Scene/SingleTileImageryProvider.js +382 -209
- package/Source/Scene/Terrain.js +196 -0
- package/Source/Scene/TileCoordinatesImageryProvider.js +267 -104
- package/Source/Scene/TileMapServiceImageryProvider.js +177 -85
- package/Source/Scene/Tileset3DTileContent.js +47 -5
- package/Source/Scene/TimeDynamicPointCloud.js +15 -2
- package/Source/Scene/UrlTemplateImageryProvider.js +343 -215
- package/Source/Scene/Vector3DTileClampedPolylines.js +96 -84
- package/Source/Scene/Vector3DTileContent.js +47 -22
- package/Source/Scene/Vector3DTileGeometry.js +57 -52
- package/Source/Scene/Vector3DTilePoints.js +97 -81
- package/Source/Scene/Vector3DTilePolygons.js +118 -117
- package/Source/Scene/Vector3DTilePolylines.js +86 -82
- package/Source/Scene/Vector3DTilePrimitive.js +0 -1
- package/Source/Scene/VoxelContent.js +61 -63
- package/Source/Scene/VoxelPrimitive.js +39 -91
- package/Source/Scene/VoxelProvider.js +2 -2
- package/Source/Scene/WebMapServiceImageryProvider.js +272 -111
- package/Source/Scene/WebMapTileServiceImageryProvider.js +270 -107
- package/Source/Scene/computeFlyToLocationForRectangle.js +33 -37
- package/Source/Scene/createOsmBuildings.js +6 -0
- package/Source/Scene/createOsmBuildingsAsync.js +82 -0
- package/Source/Scene/createWorldImagery.js +14 -5
- package/Source/Scene/createWorldImageryAsync.js +39 -0
- package/Source/Shaders/AtmosphereCommon.glsl +51 -8
- package/Source/Shaders/AtmosphereCommon.js +51 -8
- package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.glsl +1 -1
- package/Source/Shaders/PostProcessStages/AmbientOcclusionGenerate.js +1 -1
- package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.glsl +3 -3
- package/Source/Shaders/PostProcessStages/AmbientOcclusionModulate.js +3 -3
- package/Source/Widget/CesiumWidget.js +67 -27
- package/index.d.ts +2429 -1475
- package/index.js +324 -315
- package/package.json +4 -4
- package/Build/Workers/PolygonPipeline-d31ff61c.js +0 -1345
- package/Build/Workers/Transforms-9e9df299.js +0 -14714
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import Cartesian2 from "./Cartesian2.js";
|
|
2
|
+
import Check from "./Check.js";
|
|
2
3
|
import Credit from "./Credit.js";
|
|
3
4
|
import defaultValue from "./defaultValue.js";
|
|
4
5
|
import defined from "./defined.js";
|
|
5
|
-
import
|
|
6
|
+
import deprecationWarning from "./deprecationWarning.js";
|
|
6
7
|
import Ellipsoid from "./Ellipsoid.js";
|
|
7
8
|
import Event from "./Event.js";
|
|
8
9
|
import GeographicTilingScheme from "./GeographicTilingScheme.js";
|
|
@@ -22,34 +23,220 @@ import WebMercatorTilingScheme from "./WebMercatorTilingScheme.js";
|
|
|
22
23
|
const ALL_CHILDREN = 15;
|
|
23
24
|
|
|
24
25
|
/**
|
|
26
|
+
* @typedef {Object} ArcGISTiledElevationTerrainProvider.ConstructorOptions
|
|
27
|
+
*
|
|
28
|
+
* Initialization options for the ArcGISTiledElevationTerrainProvider constructor
|
|
29
|
+
*
|
|
30
|
+
* @property {string} [token] The authorization token to use to connect to the service.
|
|
31
|
+
* @property {Ellipsoid} [ellipsoid] The ellipsoid. If the tilingScheme is specified,
|
|
32
|
+
* this parameter is ignored and the tiling scheme's ellipsoid is used instead.
|
|
33
|
+
* If neither parameter is specified, the WGS84 ellipsoid is used.
|
|
34
|
+
* @property {Resource|string|Promise<Resource>|Promise<string>} [url] The URL of the ArcGIS ImageServer service. Deprecated.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Used to track creation details while fetching initial metadata
|
|
39
|
+
*
|
|
40
|
+
* @constructor
|
|
41
|
+
* @private
|
|
42
|
+
*
|
|
43
|
+
* @param {ArcGISTiledElevationTerrainProvider.ConstructorOptions} [options] An object describing initialization options.
|
|
44
|
+
*/
|
|
45
|
+
function TerrainProviderBuilder(options) {
|
|
46
|
+
this.ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);
|
|
47
|
+
|
|
48
|
+
this.credit = undefined;
|
|
49
|
+
this.tilingScheme = undefined;
|
|
50
|
+
this.height = undefined;
|
|
51
|
+
this.width = undefined;
|
|
52
|
+
this.encoding = undefined;
|
|
53
|
+
this.lodCount = undefined;
|
|
54
|
+
this.hasAvailability = false;
|
|
55
|
+
this.tilesAvailable = undefined;
|
|
56
|
+
this.tilesAvailabilityLoaded = undefined;
|
|
57
|
+
this.levelZeroMaximumGeometricError = undefined;
|
|
58
|
+
this.terrainDataStructure = undefined;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Complete ArcGISTiledElevationTerrainProvider creation based on builder values.
|
|
63
|
+
*
|
|
64
|
+
* @private
|
|
65
|
+
*
|
|
66
|
+
* @param {ArcGISTiledElevationTerrainProvider} provider
|
|
67
|
+
*/
|
|
68
|
+
TerrainProviderBuilder.prototype.build = function (provider) {
|
|
69
|
+
provider._credit = this.credit;
|
|
70
|
+
provider._tilingScheme = this.tilingScheme;
|
|
71
|
+
provider._height = this.height;
|
|
72
|
+
provider._width = this.width;
|
|
73
|
+
provider._encoding = this.encoding;
|
|
74
|
+
provider._lodCount = this.lodCount;
|
|
75
|
+
provider._hasAvailability = this.hasAvailability;
|
|
76
|
+
provider._tilesAvailable = this.tilesAvailable;
|
|
77
|
+
provider._tilesAvailabilityLoaded = this.tilesAvailabilityLoaded;
|
|
78
|
+
provider._levelZeroMaximumGeometricError = this.levelZeroMaximumGeometricError;
|
|
79
|
+
provider._terrainDataStructure = this.terrainDataStructure;
|
|
80
|
+
|
|
81
|
+
provider._ready = true;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
function parseMetadataSuccess(terrainProviderBuilder, metadata) {
|
|
85
|
+
const copyrightText = metadata.copyrightText;
|
|
86
|
+
if (defined(copyrightText)) {
|
|
87
|
+
terrainProviderBuilder.credit = new Credit(copyrightText);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const spatialReference = metadata.spatialReference;
|
|
91
|
+
const wkid = defaultValue(spatialReference.latestWkid, spatialReference.wkid);
|
|
92
|
+
const extent = metadata.extent;
|
|
93
|
+
const tilingSchemeOptions = {
|
|
94
|
+
ellipsoid: terrainProviderBuilder.ellipsoid,
|
|
95
|
+
};
|
|
96
|
+
if (wkid === 4326) {
|
|
97
|
+
tilingSchemeOptions.rectangle = Rectangle.fromDegrees(
|
|
98
|
+
extent.xmin,
|
|
99
|
+
extent.ymin,
|
|
100
|
+
extent.xmax,
|
|
101
|
+
extent.ymax
|
|
102
|
+
);
|
|
103
|
+
terrainProviderBuilder.tilingScheme = new GeographicTilingScheme(
|
|
104
|
+
tilingSchemeOptions
|
|
105
|
+
);
|
|
106
|
+
} else if (wkid === 3857) {
|
|
107
|
+
// Clamp extent to EPSG 3857 bounds
|
|
108
|
+
const epsg3857Bounds =
|
|
109
|
+
Math.PI * terrainProviderBuilder.ellipsoid.maximumRadius;
|
|
110
|
+
if (metadata.extent.xmax > epsg3857Bounds) {
|
|
111
|
+
metadata.extent.xmax = epsg3857Bounds;
|
|
112
|
+
}
|
|
113
|
+
if (metadata.extent.ymax > epsg3857Bounds) {
|
|
114
|
+
metadata.extent.ymax = epsg3857Bounds;
|
|
115
|
+
}
|
|
116
|
+
if (metadata.extent.xmin < -epsg3857Bounds) {
|
|
117
|
+
metadata.extent.xmin = -epsg3857Bounds;
|
|
118
|
+
}
|
|
119
|
+
if (metadata.extent.ymin < -epsg3857Bounds) {
|
|
120
|
+
metadata.extent.ymin = -epsg3857Bounds;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
tilingSchemeOptions.rectangleSouthwestInMeters = new Cartesian2(
|
|
124
|
+
extent.xmin,
|
|
125
|
+
extent.ymin
|
|
126
|
+
);
|
|
127
|
+
tilingSchemeOptions.rectangleNortheastInMeters = new Cartesian2(
|
|
128
|
+
extent.xmax,
|
|
129
|
+
extent.ymax
|
|
130
|
+
);
|
|
131
|
+
terrainProviderBuilder.tilingScheme = new WebMercatorTilingScheme(
|
|
132
|
+
tilingSchemeOptions
|
|
133
|
+
);
|
|
134
|
+
} else {
|
|
135
|
+
throw new RuntimeError("Invalid spatial reference");
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const tileInfo = metadata.tileInfo;
|
|
139
|
+
if (!defined(tileInfo)) {
|
|
140
|
+
throw new RuntimeError("tileInfo is required");
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
terrainProviderBuilder.width = tileInfo.rows + 1;
|
|
144
|
+
terrainProviderBuilder.height = tileInfo.cols + 1;
|
|
145
|
+
terrainProviderBuilder.encoding =
|
|
146
|
+
tileInfo.format === "LERC"
|
|
147
|
+
? HeightmapEncoding.LERC
|
|
148
|
+
: HeightmapEncoding.NONE;
|
|
149
|
+
terrainProviderBuilder.lodCount = tileInfo.lods.length - 1;
|
|
150
|
+
|
|
151
|
+
const hasAvailability = (terrainProviderBuilder.hasAvailability =
|
|
152
|
+
metadata.capabilities.indexOf("Tilemap") !== -1);
|
|
153
|
+
if (hasAvailability) {
|
|
154
|
+
terrainProviderBuilder.tilesAvailable = new TileAvailability(
|
|
155
|
+
terrainProviderBuilder.tilingScheme,
|
|
156
|
+
terrainProviderBuilder.lodCount
|
|
157
|
+
);
|
|
158
|
+
terrainProviderBuilder.tilesAvailable.addAvailableTileRange(
|
|
159
|
+
0,
|
|
160
|
+
0,
|
|
161
|
+
0,
|
|
162
|
+
terrainProviderBuilder.tilingScheme.getNumberOfXTilesAtLevel(0),
|
|
163
|
+
terrainProviderBuilder.tilingScheme.getNumberOfYTilesAtLevel(0)
|
|
164
|
+
);
|
|
165
|
+
terrainProviderBuilder.tilesAvailabilityLoaded = new TileAvailability(
|
|
166
|
+
terrainProviderBuilder.tilingScheme,
|
|
167
|
+
terrainProviderBuilder.lodCount
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
terrainProviderBuilder.levelZeroMaximumGeometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(
|
|
172
|
+
terrainProviderBuilder.tilingScheme.ellipsoid,
|
|
173
|
+
terrainProviderBuilder.width,
|
|
174
|
+
terrainProviderBuilder.tilingScheme.getNumberOfXTilesAtLevel(0)
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
if (metadata.bandCount > 1) {
|
|
178
|
+
console.log(
|
|
179
|
+
"ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (defined(metadata.minValues) && defined(metadata.maxValues)) {
|
|
184
|
+
terrainProviderBuilder.terrainDataStructure = {
|
|
185
|
+
elementMultiplier: 1.0,
|
|
186
|
+
lowestEncodedHeight: metadata.minValues[0],
|
|
187
|
+
highestEncodedHeight: metadata.maxValues[0],
|
|
188
|
+
};
|
|
189
|
+
} else {
|
|
190
|
+
terrainProviderBuilder.terrainDataStructure = {
|
|
191
|
+
elementMultiplier: 1.0,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
async function requestMetadata(
|
|
197
|
+
terrainProviderBuilder,
|
|
198
|
+
metadataResource,
|
|
199
|
+
provider
|
|
200
|
+
) {
|
|
201
|
+
try {
|
|
202
|
+
const metadata = await metadataResource.fetchJson();
|
|
203
|
+
parseMetadataSuccess(terrainProviderBuilder, metadata);
|
|
204
|
+
} catch (error) {
|
|
205
|
+
const message = `An error occurred while accessing ${metadataResource}.`;
|
|
206
|
+
TileProviderError.reportError(
|
|
207
|
+
undefined,
|
|
208
|
+
provider,
|
|
209
|
+
defined(provider) ? provider._errorEvent : undefined,
|
|
210
|
+
message
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* <div class="notice">
|
|
219
|
+
* To construct a CesiumTerrainProvider, call {@link ArcGISTiledElevationTerrainProvider.fromUrl}. Do not call the constructor directly.
|
|
220
|
+
* </div>
|
|
221
|
+
*
|
|
25
222
|
* A {@link TerrainProvider} that produces terrain geometry by tessellating height maps
|
|
26
223
|
* retrieved from Elevation Tiles of an an ArcGIS ImageService.
|
|
27
224
|
*
|
|
28
225
|
* @alias ArcGISTiledElevationTerrainProvider
|
|
29
226
|
* @constructor
|
|
30
227
|
*
|
|
31
|
-
* @param {
|
|
32
|
-
* @param {Resource|string|Promise<Resource>|Promise<string>} options.url The URL of the ArcGIS ImageServer service.
|
|
33
|
-
* @param {string} [options.token] The authorization token to use to connect to the service.
|
|
34
|
-
* @param {Ellipsoid} [options.ellipsoid] The ellipsoid. If the tilingScheme is specified,
|
|
35
|
-
* this parameter is ignored and the tiling scheme's ellipsoid is used instead.
|
|
36
|
-
* If neither parameter is specified, the WGS84 ellipsoid is used.
|
|
228
|
+
* @param {CesiumTerrainProvider.ConstructorOptions} [options] A url or an object describing initialization options
|
|
37
229
|
*
|
|
38
230
|
* @example
|
|
39
|
-
* const terrainProvider =
|
|
40
|
-
*
|
|
41
|
-
* token : 'KED1aF_I4UzXOHy3BnhwyBHU4l5oY6rO6walkmHoYqGp4XyIWUd5YZUC1ZrLAzvV40pR6gBXQayh0eFA8m6vPg..'
|
|
231
|
+
* const terrainProvider = await Cesium.ArcGISTiledElevationTerrainProvider.fromUrl("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer", {
|
|
232
|
+
* token: "KED1aF_I4UzXOHy3BnhwyBHU4l5oY6rO6walkmHoYqGp4XyIWUd5YZUC1ZrLAzvV40pR6gBXQayh0eFA8m6vPg.."
|
|
42
233
|
* });
|
|
43
234
|
* viewer.terrainProvider = terrainProvider;
|
|
44
235
|
*
|
|
45
|
-
*
|
|
236
|
+
* @see TerrainProvider
|
|
46
237
|
*/
|
|
47
238
|
function ArcGISTiledElevationTerrainProvider(options) {
|
|
48
|
-
|
|
49
|
-
if (!defined(options) || !defined(options.url)) {
|
|
50
|
-
throw new DeveloperError("options.url is required.");
|
|
51
|
-
}
|
|
52
|
-
//>>includeEnd('debug');
|
|
239
|
+
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
|
|
53
240
|
|
|
54
241
|
this._resource = undefined;
|
|
55
242
|
this._credit = undefined;
|
|
@@ -57,21 +244,31 @@ function ArcGISTiledElevationTerrainProvider(options) {
|
|
|
57
244
|
this._levelZeroMaximumGeometricError = undefined;
|
|
58
245
|
this._maxLevel = undefined;
|
|
59
246
|
this._terrainDataStructure = undefined;
|
|
60
|
-
this._ready = false;
|
|
61
247
|
this._width = undefined;
|
|
62
248
|
this._height = undefined;
|
|
63
249
|
this._encoding = undefined;
|
|
250
|
+
this._lodCount = undefined;
|
|
64
251
|
const token = options.token;
|
|
65
252
|
|
|
66
253
|
this._hasAvailability = false;
|
|
67
254
|
this._tilesAvailable = undefined;
|
|
68
|
-
this.
|
|
255
|
+
this._tilesAvailabilityLoaded = undefined;
|
|
69
256
|
this._availableCache = {};
|
|
257
|
+
this._ready = false;
|
|
70
258
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
259
|
+
this._errorEvent = new Event();
|
|
260
|
+
|
|
261
|
+
if (defined(options.url)) {
|
|
262
|
+
deprecationWarning(
|
|
263
|
+
"ArcGISTiledElevationTerrainProvider options.url",
|
|
264
|
+
"options.url was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ArcGISTiledElevationTerrainProvider.fromUrl instead."
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
const that = this;
|
|
268
|
+
const terrainProviderBuilder = new TerrainProviderBuilder(options);
|
|
269
|
+
this._readyPromise = Promise.resolve(options.url).then(async function (
|
|
270
|
+
url
|
|
271
|
+
) {
|
|
75
272
|
let resource = Resource.createIfNeeded(url);
|
|
76
273
|
resource.appendForwardSlash();
|
|
77
274
|
if (defined(token)) {
|
|
@@ -89,128 +286,12 @@ function ArcGISTiledElevationTerrainProvider(options) {
|
|
|
89
286
|
},
|
|
90
287
|
});
|
|
91
288
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
.then(function (metadata) {
|
|
95
|
-
const copyrightText = metadata.copyrightText;
|
|
96
|
-
if (defined(copyrightText)) {
|
|
97
|
-
that._credit = new Credit(copyrightText);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
const spatialReference = metadata.spatialReference;
|
|
101
|
-
const wkid = defaultValue(
|
|
102
|
-
spatialReference.latestWkid,
|
|
103
|
-
spatialReference.wkid
|
|
104
|
-
);
|
|
105
|
-
const extent = metadata.extent;
|
|
106
|
-
const tilingSchemeOptions = {
|
|
107
|
-
ellipsoid: ellipsoid,
|
|
108
|
-
};
|
|
109
|
-
if (wkid === 4326) {
|
|
110
|
-
tilingSchemeOptions.rectangle = Rectangle.fromDegrees(
|
|
111
|
-
extent.xmin,
|
|
112
|
-
extent.ymin,
|
|
113
|
-
extent.xmax,
|
|
114
|
-
extent.ymax
|
|
115
|
-
);
|
|
116
|
-
that._tilingScheme = new GeographicTilingScheme(tilingSchemeOptions);
|
|
117
|
-
} else if (wkid === 3857) {
|
|
118
|
-
// Clamp extent to EPSG 3857 bounds
|
|
119
|
-
const epsg3857Bounds = Math.PI * ellipsoid.maximumRadius;
|
|
120
|
-
if (metadata.extent.xmax > epsg3857Bounds) {
|
|
121
|
-
metadata.extent.xmax = epsg3857Bounds;
|
|
122
|
-
}
|
|
123
|
-
if (metadata.extent.ymax > epsg3857Bounds) {
|
|
124
|
-
metadata.extent.ymax = epsg3857Bounds;
|
|
125
|
-
}
|
|
126
|
-
if (metadata.extent.xmin < -epsg3857Bounds) {
|
|
127
|
-
metadata.extent.xmin = -epsg3857Bounds;
|
|
128
|
-
}
|
|
129
|
-
if (metadata.extent.ymin < -epsg3857Bounds) {
|
|
130
|
-
metadata.extent.ymin = -epsg3857Bounds;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
tilingSchemeOptions.rectangleSouthwestInMeters = new Cartesian2(
|
|
134
|
-
extent.xmin,
|
|
135
|
-
extent.ymin
|
|
136
|
-
);
|
|
137
|
-
tilingSchemeOptions.rectangleNortheastInMeters = new Cartesian2(
|
|
138
|
-
extent.xmax,
|
|
139
|
-
extent.ymax
|
|
140
|
-
);
|
|
141
|
-
that._tilingScheme = new WebMercatorTilingScheme(tilingSchemeOptions);
|
|
142
|
-
} else {
|
|
143
|
-
return Promise.reject(new RuntimeError("Invalid spatial reference"));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
const tileInfo = metadata.tileInfo;
|
|
147
|
-
if (!defined(tileInfo)) {
|
|
148
|
-
return Promise.reject(new RuntimeError("tileInfo is required"));
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
that._width = tileInfo.rows + 1;
|
|
152
|
-
that._height = tileInfo.cols + 1;
|
|
153
|
-
that._encoding =
|
|
154
|
-
tileInfo.format === "LERC"
|
|
155
|
-
? HeightmapEncoding.LERC
|
|
156
|
-
: HeightmapEncoding.NONE;
|
|
157
|
-
that._lodCount = tileInfo.lods.length - 1;
|
|
158
|
-
|
|
159
|
-
const hasAvailability = (that._hasAvailability =
|
|
160
|
-
metadata.capabilities.indexOf("Tilemap") !== -1);
|
|
161
|
-
if (hasAvailability) {
|
|
162
|
-
that._tilesAvailable = new TileAvailability(
|
|
163
|
-
that._tilingScheme,
|
|
164
|
-
that._lodCount
|
|
165
|
-
);
|
|
166
|
-
that._tilesAvailable.addAvailableTileRange(
|
|
167
|
-
0,
|
|
168
|
-
0,
|
|
169
|
-
0,
|
|
170
|
-
that._tilingScheme.getNumberOfXTilesAtLevel(0),
|
|
171
|
-
that._tilingScheme.getNumberOfYTilesAtLevel(0)
|
|
172
|
-
);
|
|
173
|
-
that._tilesAvailablityLoaded = new TileAvailability(
|
|
174
|
-
that._tilingScheme,
|
|
175
|
-
that._lodCount
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
that._levelZeroMaximumGeometricError = TerrainProvider.getEstimatedLevelZeroGeometricErrorForAHeightmap(
|
|
180
|
-
that._tilingScheme.ellipsoid,
|
|
181
|
-
that._width,
|
|
182
|
-
that._tilingScheme.getNumberOfXTilesAtLevel(0)
|
|
183
|
-
);
|
|
184
|
-
|
|
185
|
-
if (metadata.bandCount > 1) {
|
|
186
|
-
console.log(
|
|
187
|
-
"ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."
|
|
188
|
-
);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
if (defined(metadata.minValues) && defined(metadata.maxValues)) {
|
|
192
|
-
that._terrainDataStructure = {
|
|
193
|
-
elementMultiplier: 1.0,
|
|
194
|
-
lowestEncodedHeight: metadata.minValues[0],
|
|
195
|
-
highestEncodedHeight: metadata.maxValues[0],
|
|
196
|
-
};
|
|
197
|
-
} else {
|
|
198
|
-
that._terrainDataStructure = {
|
|
199
|
-
elementMultiplier: 1.0,
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
that._ready = true;
|
|
289
|
+
await requestMetadata(terrainProviderBuilder, metadataResource, that);
|
|
290
|
+
terrainProviderBuilder.build(that);
|
|
204
291
|
|
|
205
292
|
return true;
|
|
206
|
-
})
|
|
207
|
-
.catch(function (error) {
|
|
208
|
-
const message = `An error occurred while accessing ${that._resource.url}.`;
|
|
209
|
-
TileProviderError.reportError(undefined, that, that._errorEvent, message);
|
|
210
|
-
return Promise.reject(error);
|
|
211
293
|
});
|
|
212
|
-
|
|
213
|
-
this._errorEvent = new Event();
|
|
294
|
+
}
|
|
214
295
|
}
|
|
215
296
|
|
|
216
297
|
Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
@@ -230,40 +311,25 @@ Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
|
230
311
|
|
|
231
312
|
/**
|
|
232
313
|
* Gets the credit to display when this terrain provider is active. Typically this is used to credit
|
|
233
|
-
* the source of the terrain.
|
|
314
|
+
* the source of the terrain.
|
|
234
315
|
* @memberof ArcGISTiledElevationTerrainProvider.prototype
|
|
235
316
|
* @type {Credit}
|
|
236
317
|
* @readonly
|
|
237
318
|
*/
|
|
238
319
|
credit: {
|
|
239
320
|
get: function () {
|
|
240
|
-
//>>includeStart('debug', pragmas.debug);
|
|
241
|
-
if (!this.ready) {
|
|
242
|
-
throw new DeveloperError(
|
|
243
|
-
"credit must not be called before ready returns true."
|
|
244
|
-
);
|
|
245
|
-
}
|
|
246
|
-
//>>includeEnd('debug');
|
|
247
321
|
return this._credit;
|
|
248
322
|
},
|
|
249
323
|
},
|
|
250
324
|
|
|
251
325
|
/**
|
|
252
|
-
* Gets the tiling scheme used by this provider.
|
|
253
|
-
* not be called before {@link ArcGISTiledElevationTerrainProvider#ready} returns true.
|
|
326
|
+
* Gets the tiling scheme used by this provider.
|
|
254
327
|
* @memberof ArcGISTiledElevationTerrainProvider.prototype
|
|
255
328
|
* @type {GeographicTilingScheme}
|
|
256
329
|
* @readonly
|
|
257
330
|
*/
|
|
258
331
|
tilingScheme: {
|
|
259
332
|
get: function () {
|
|
260
|
-
//>>includeStart('debug', pragmas.debug);
|
|
261
|
-
if (!this.ready) {
|
|
262
|
-
throw new DeveloperError(
|
|
263
|
-
"tilingScheme must not be called before ready returns true."
|
|
264
|
-
);
|
|
265
|
-
}
|
|
266
|
-
//>>includeEnd('debug');
|
|
267
333
|
return this._tilingScheme;
|
|
268
334
|
},
|
|
269
335
|
},
|
|
@@ -273,9 +339,14 @@ Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
|
273
339
|
* @memberof ArcGISTiledElevationTerrainProvider.prototype
|
|
274
340
|
* @type {boolean}
|
|
275
341
|
* @readonly
|
|
342
|
+
* @deprecated
|
|
276
343
|
*/
|
|
277
344
|
ready: {
|
|
278
345
|
get: function () {
|
|
346
|
+
deprecationWarning(
|
|
347
|
+
"ArcGISTiledElevationTerrainProvider.ready",
|
|
348
|
+
"ArcGISTiledElevationTerrainProvider.ready was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ArcGISTiledElevationTerrainProvider.fromUrl instead."
|
|
349
|
+
);
|
|
279
350
|
return this._ready;
|
|
280
351
|
},
|
|
281
352
|
},
|
|
@@ -285,9 +356,14 @@ Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
|
285
356
|
* @memberof ArcGISTiledElevationTerrainProvider.prototype
|
|
286
357
|
* @type {Promise<boolean>}
|
|
287
358
|
* @readonly
|
|
359
|
+
* @deprecated
|
|
288
360
|
*/
|
|
289
361
|
readyPromise: {
|
|
290
362
|
get: function () {
|
|
363
|
+
deprecationWarning(
|
|
364
|
+
"ArcGISTiledElevationTerrainProvider.readyPromise",
|
|
365
|
+
"ArcGISTiledElevationTerrainProvider.readyPromise was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ArcGISTiledElevationTerrainProvider.fromUrl instead."
|
|
366
|
+
);
|
|
291
367
|
return this._readyPromise;
|
|
292
368
|
},
|
|
293
369
|
},
|
|
@@ -295,8 +371,7 @@ Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
|
295
371
|
/**
|
|
296
372
|
* Gets a value indicating whether or not the provider includes a water mask. The water mask
|
|
297
373
|
* indicates which areas of the globe are water rather than land, so they can be rendered
|
|
298
|
-
* as a reflective surface with animated waves.
|
|
299
|
-
* called before {@link ArcGISTiledElevationTerrainProvider#ready} returns true.
|
|
374
|
+
* as a reflective surface with animated waves.
|
|
300
375
|
* @memberof ArcGISTiledElevationTerrainProvider.prototype
|
|
301
376
|
* @type {boolean}
|
|
302
377
|
* @readonly
|
|
@@ -309,7 +384,6 @@ Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
|
309
384
|
|
|
310
385
|
/**
|
|
311
386
|
* Gets a value indicating whether or not the requested tiles include vertex normals.
|
|
312
|
-
* This function should not be called before {@link ArcGISTiledElevationTerrainProvider#ready} returns true.
|
|
313
387
|
* @memberof ArcGISTiledElevationTerrainProvider.prototype
|
|
314
388
|
* @type {boolean}
|
|
315
389
|
* @readonly
|
|
@@ -321,8 +395,7 @@ Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
|
321
395
|
},
|
|
322
396
|
/**
|
|
323
397
|
* Gets an object that can be used to determine availability of terrain from this provider, such as
|
|
324
|
-
* at points and in rectangles.
|
|
325
|
-
* {@link TerrainProvider#ready} returns true. This property may be undefined if availability
|
|
398
|
+
* at points and in rectangles. This property may be undefined if availability
|
|
326
399
|
* information is not available.
|
|
327
400
|
* @memberof ArcGISTiledElevationTerrainProvider.prototype
|
|
328
401
|
* @type {TileAvailability}
|
|
@@ -330,21 +403,64 @@ Object.defineProperties(ArcGISTiledElevationTerrainProvider.prototype, {
|
|
|
330
403
|
*/
|
|
331
404
|
availability: {
|
|
332
405
|
get: function () {
|
|
333
|
-
//>>includeStart('debug', pragmas.debug)
|
|
334
|
-
if (!this._ready) {
|
|
335
|
-
throw new DeveloperError(
|
|
336
|
-
"availability must not be called before the terrain provider is ready."
|
|
337
|
-
);
|
|
338
|
-
}
|
|
339
|
-
//>>includeEnd('debug');
|
|
340
406
|
return this._tilesAvailable;
|
|
341
407
|
},
|
|
342
408
|
},
|
|
343
409
|
});
|
|
344
410
|
|
|
345
411
|
/**
|
|
346
|
-
*
|
|
347
|
-
*
|
|
412
|
+
* Creates a {@link TerrainProvider} that produces terrain geometry by tessellating height maps
|
|
413
|
+
* retrieved from Elevation Tiles of an an ArcGIS ImageService.
|
|
414
|
+
*
|
|
415
|
+
* @param {Resource|String|Promise<Resource>|Promise<String>} url The URL of the ArcGIS ImageServer service.
|
|
416
|
+
* @param {ArcGISTiledElevationTerrainProvider.ConstructorOptions} [options] A url or an object describing initialization options.
|
|
417
|
+
* @returns {Promise<ArcGISTiledElevationTerrainProvider>}
|
|
418
|
+
*
|
|
419
|
+
* @example
|
|
420
|
+
* const terrainProvider = await Cesium.ArcGISTiledElevationTerrainProvider.fromUrl("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer", {
|
|
421
|
+
* token: "KED1aF_I4UzXOHy3BnhwyBHU4l5oY6rO6walkmHoYqGp4XyIWUd5YZUC1ZrLAzvV40pR6gBXQayh0eFA8m6vPg.."
|
|
422
|
+
* });
|
|
423
|
+
* viewer.terrainProvider = terrainProvider;
|
|
424
|
+
*
|
|
425
|
+
* @exception {RuntimeError} metadata specifies invalid spatial reference
|
|
426
|
+
* @exception {RuntimeError} metadata does not specify tileInfo
|
|
427
|
+
*/
|
|
428
|
+
ArcGISTiledElevationTerrainProvider.fromUrl = async function (url, options) {
|
|
429
|
+
//>>includeStart('debug', pragmas.debug);
|
|
430
|
+
Check.defined("url", url);
|
|
431
|
+
//>>includeEnd('debug');
|
|
432
|
+
|
|
433
|
+
options = defaultValue(options, defaultValue.EMPTY_OBJECT);
|
|
434
|
+
|
|
435
|
+
url = await Promise.resolve(url);
|
|
436
|
+
let resource = Resource.createIfNeeded(url);
|
|
437
|
+
resource.appendForwardSlash();
|
|
438
|
+
if (defined(options.token)) {
|
|
439
|
+
resource = resource.getDerivedResource({
|
|
440
|
+
queryParameters: {
|
|
441
|
+
token: options.token,
|
|
442
|
+
},
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
const metadataResource = resource.getDerivedResource({
|
|
447
|
+
queryParameters: {
|
|
448
|
+
f: "pjson",
|
|
449
|
+
},
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
const terrainProviderBuilder = new TerrainProviderBuilder(options);
|
|
453
|
+
await requestMetadata(terrainProviderBuilder, metadataResource);
|
|
454
|
+
|
|
455
|
+
const provider = new ArcGISTiledElevationTerrainProvider(options);
|
|
456
|
+
terrainProviderBuilder.build(provider);
|
|
457
|
+
provider._resource = resource;
|
|
458
|
+
|
|
459
|
+
return provider;
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Requests the geometry for a given tile. The result includes terrain
|
|
348
464
|
* data and indicates that all child tiles are available.
|
|
349
465
|
*
|
|
350
466
|
* @param {number} x The X coordinate of the tile for which to request geometry.
|
|
@@ -361,14 +477,6 @@ ArcGISTiledElevationTerrainProvider.prototype.requestTileGeometry = function (
|
|
|
361
477
|
level,
|
|
362
478
|
request
|
|
363
479
|
) {
|
|
364
|
-
//>>includeStart('debug', pragmas.debug)
|
|
365
|
-
if (!this._ready) {
|
|
366
|
-
throw new DeveloperError(
|
|
367
|
-
"requestTileGeometry must not be called before the terrain provider is ready."
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
//>>includeEnd('debug');
|
|
371
|
-
|
|
372
480
|
const tileResource = this._resource.getDerivedResource({
|
|
373
481
|
url: `tile/${level}/${y}/${x}`,
|
|
374
482
|
request: request,
|
|
@@ -436,7 +544,7 @@ function isTileAvailable(that, level, x, y) {
|
|
|
436
544
|
return undefined;
|
|
437
545
|
}
|
|
438
546
|
|
|
439
|
-
const
|
|
547
|
+
const tilesAvailabilityLoaded = that._tilesAvailabilityLoaded;
|
|
440
548
|
const tilesAvailable = that._tilesAvailable;
|
|
441
549
|
|
|
442
550
|
if (level > that._lodCount) {
|
|
@@ -449,7 +557,7 @@ function isTileAvailable(that, level, x, y) {
|
|
|
449
557
|
}
|
|
450
558
|
|
|
451
559
|
// or to not be available
|
|
452
|
-
if (
|
|
560
|
+
if (tilesAvailabilityLoaded.isTileAvailable(level, x, y)) {
|
|
453
561
|
return false;
|
|
454
562
|
}
|
|
455
563
|
|
|
@@ -465,14 +573,6 @@ function isTileAvailable(that, level, x, y) {
|
|
|
465
573
|
ArcGISTiledElevationTerrainProvider.prototype.getLevelMaximumGeometricError = function (
|
|
466
574
|
level
|
|
467
575
|
) {
|
|
468
|
-
//>>includeStart('debug', pragmas.debug);
|
|
469
|
-
if (!this.ready) {
|
|
470
|
-
throw new DeveloperError(
|
|
471
|
-
"getLevelMaximumGeometricError must not be called before ready returns true."
|
|
472
|
-
);
|
|
473
|
-
}
|
|
474
|
-
//>>includeEnd('debug');
|
|
475
|
-
|
|
476
576
|
return this._levelZeroMaximumGeometricError / (1 << level);
|
|
477
577
|
};
|
|
478
578
|
|
|
@@ -685,7 +785,7 @@ function requestAvailability(that, level, x, y) {
|
|
|
685
785
|
);
|
|
686
786
|
|
|
687
787
|
// Mark whole area as having availability loaded
|
|
688
|
-
that.
|
|
788
|
+
that._tilesAvailabilityLoaded.addAvailableTileRange(
|
|
689
789
|
level,
|
|
690
790
|
xOffset,
|
|
691
791
|
yOffset,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Check from "./Check.js";
|
|
2
|
+
import Credit from "./Credit.js";
|
|
2
3
|
import defaultValue from "./defaultValue.js";
|
|
3
4
|
import Rectangle from "./Rectangle.js";
|
|
4
5
|
import Resource from "./Resource.js";
|
|
@@ -39,6 +40,11 @@ function BingMapsGeocoderService(options) {
|
|
|
39
40
|
url: url,
|
|
40
41
|
queryParameters: queryParameters,
|
|
41
42
|
});
|
|
43
|
+
|
|
44
|
+
this._credit = new Credit(
|
|
45
|
+
`<img src="http:\/\/dev.virtualearth.net\/Branding\/logo_powered_by.png"\/>`,
|
|
46
|
+
false
|
|
47
|
+
);
|
|
42
48
|
}
|
|
43
49
|
|
|
44
50
|
Object.defineProperties(BingMapsGeocoderService.prototype, {
|
|
@@ -65,6 +71,18 @@ Object.defineProperties(BingMapsGeocoderService.prototype, {
|
|
|
65
71
|
return this._key;
|
|
66
72
|
},
|
|
67
73
|
},
|
|
74
|
+
/**
|
|
75
|
+
* Gets the credit to display after a geocode is performed. Typically this is used to credit
|
|
76
|
+
* the geocoder service.
|
|
77
|
+
* @memberof BingMapsGeocoderService.prototype
|
|
78
|
+
* @type {Credit|undefined}
|
|
79
|
+
* @readonly
|
|
80
|
+
*/
|
|
81
|
+
credit: {
|
|
82
|
+
get: function () {
|
|
83
|
+
return this._credit;
|
|
84
|
+
},
|
|
85
|
+
},
|
|
68
86
|
});
|
|
69
87
|
|
|
70
88
|
/**
|
|
@@ -73,7 +91,7 @@ Object.defineProperties(BingMapsGeocoderService.prototype, {
|
|
|
73
91
|
* @param {string} query The query to be sent to the geocoder service
|
|
74
92
|
* @returns {Promise<GeocoderService.Result[]>}
|
|
75
93
|
*/
|
|
76
|
-
BingMapsGeocoderService.prototype.geocode = function (query) {
|
|
94
|
+
BingMapsGeocoderService.prototype.geocode = async function (query) {
|
|
77
95
|
//>>includeStart('debug', pragmas.debug);
|
|
78
96
|
Check.typeOf.string("query", query);
|
|
79
97
|
//>>includeEnd('debug');
|