@cesium/engine 24.0.0 → 25.0.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/{chunk-NKT5K3K3.js → chunk-35H3UBIO.js} +13 -12
- package/Build/Workers/{chunk-5A2SW66E.js → chunk-3LSD7OOA.js} +16 -16
- package/Build/Workers/{chunk-HXJMS2ZI.js → chunk-3RFFPH4M.js} +1 -1
- package/Build/Workers/{chunk-EDXL4W76.js → chunk-3TKLDHV3.js} +2 -2
- package/Build/Workers/{chunk-GQUNK2XC.js → chunk-3VDDRF2E.js} +14 -14
- package/Build/Workers/{chunk-Q3C6VQH6.js → chunk-3XY3MVPG.js} +4 -4
- package/Build/Workers/{chunk-A47HVBC5.js → chunk-4GF4MVPY.js} +7 -7
- package/Build/Workers/{chunk-YQFTYQMZ.js → chunk-4MTRQFJP.js} +3 -2
- package/Build/Workers/{chunk-N65BAKSH.js → chunk-4QQXGTCE.js} +8 -8
- package/Build/Workers/{chunk-EV3VGO6Y.js → chunk-4XXHJI6Y.js} +17 -17
- package/Build/Workers/{chunk-DHKPFLSJ.js → chunk-5T6QQAJW.js} +3 -2
- package/Build/Workers/{chunk-UIGVOKKI.js → chunk-6SDGQI27.js} +3 -2
- package/Build/Workers/{chunk-ILMFADZA.js → chunk-77RL3MBD.js} +6 -5
- package/Build/Workers/{chunk-2N4KDHS3.js → chunk-7LSFAEWF.js} +12 -11
- package/Build/Workers/{chunk-44EMEGKW.js → chunk-A7A433MD.js} +5 -5
- package/Build/Workers/{chunk-J6AW5YHS.js → chunk-A7ZBMVFS.js} +14 -14
- package/Build/Workers/{chunk-XJRBB253.js → chunk-ACFFCHHZ.js} +11 -11
- package/Build/Workers/{chunk-MKM27KGV.js → chunk-AEAVLYPS.js} +2 -2
- package/Build/Workers/{chunk-7MDYBRYJ.js → chunk-AWFZHD2B.js} +4 -4
- package/Build/Workers/{chunk-UQU4RXLT.js → chunk-BTX2NL3P.js} +50 -45
- package/Build/Workers/{chunk-4TIG36AW.js → chunk-BVAIWR7O.js} +12 -12
- package/Build/Workers/chunk-CKQP3DSS.js +973 -0
- package/Build/Workers/{chunk-VLDEUTOP.js → chunk-CZ23Y3RM.js} +2 -2
- package/Build/Workers/{chunk-NPF7SSHZ.js → chunk-DFEI5MAV.js} +7 -7
- package/Build/Workers/{chunk-AJLTU6PF.js → chunk-DH26SNAB.js} +4 -1
- package/Build/Workers/{chunk-5GXYJQ2K.js → chunk-DYT5NR6P.js} +3 -3
- package/Build/Workers/{chunk-63SIWPLS.js → chunk-EZARA5FJ.js} +13 -13
- package/Build/Workers/{chunk-AMIHNSST.js → chunk-FIBS5S7R.js} +2 -2
- package/Build/Workers/{chunk-Y7HNNPNK.js → chunk-FVLVVOBQ.js} +10 -10
- package/Build/Workers/{chunk-XY6HMDGI.js → chunk-GL7DNVUS.js} +5 -5
- package/Build/Workers/{chunk-6WLHJFD3.js → chunk-GPIGURCG.js} +59 -32
- package/Build/Workers/{chunk-B6SCUUFP.js → chunk-H2A4USJR.js} +10 -10
- package/Build/Workers/chunk-HSVQATK2.js +147 -0
- package/Build/Workers/{chunk-72VYSVEW.js → chunk-HVMG6AG4.js} +11 -10
- package/Build/Workers/{chunk-LXMCPFFS.js → chunk-I3A6DXYZ.js} +4 -4
- package/Build/Workers/{chunk-7QRFIKWQ.js → chunk-ITD2IN7N.js} +2 -2
- package/Build/Workers/{chunk-RQNJD3O4.js → chunk-J3OFS2RD.js} +12 -12
- package/Build/Workers/{chunk-C6P4IG5P.js → chunk-J647NNZW.js} +6 -6
- package/Build/Workers/{chunk-7X322WP2.js → chunk-J7KQEKPK.js} +13 -13
- package/Build/Workers/{chunk-7O5XJTVE.js → chunk-K6NFIRFB.js} +5 -5
- package/Build/Workers/{chunk-AF3MU2RL.js → chunk-LH5SF3XV.js} +7 -6
- package/Build/Workers/{chunk-GOQBUCXH.js → chunk-ND3NTTOF.js} +708 -430
- package/Build/Workers/chunk-QO2CGXMP.js +2342 -0
- package/Build/Workers/chunk-QSDY4NS7.js +1287 -0
- package/Build/Workers/chunk-QXNQQYPV.js +3201 -0
- package/Build/Workers/{chunk-YAOZMOFL.js → chunk-ST2UWDUU.js} +5 -5
- package/Build/Workers/{chunk-PVV64VFW.js → chunk-TA777BGS.js} +3 -2
- package/Build/Workers/{chunk-ISY4EZCA.js → chunk-TAI4HLII.js} +4 -4
- package/Build/Workers/{chunk-JCI63T3K.js → chunk-URUCCIPS.js} +6 -6
- package/Build/Workers/{chunk-VMVOUQ5J.js → chunk-VQKLRBIK.js} +7 -7
- package/Build/Workers/{chunk-6MPGQEHA.js → chunk-WC57YYBN.js} +2 -2
- package/Build/Workers/{chunk-BJD6QGXZ.js → chunk-WN6P5UDH.js} +12 -12
- package/Build/Workers/{chunk-LIB2H534.js → chunk-WNN5D4W3.js} +12 -11
- package/Build/Workers/{chunk-D4EJ2NXG.js → chunk-WTQGE7Q6.js} +17 -17
- package/Build/Workers/{chunk-YJZGW74L.js → chunk-WUBKZFF6.js} +2213 -1349
- package/Build/Workers/{chunk-7TYLCBGK.js → chunk-ZAPOS52G.js} +12 -10
- package/Build/Workers/{chunk-6RMS4S72.js → chunk-ZCCIIBZT.js} +6 -6
- package/Build/Workers/combineGeometry.js +24 -24
- package/Build/Workers/createBoxGeometry.js +18 -18
- package/Build/Workers/createBoxOutlineGeometry.js +16 -16
- package/Build/Workers/createCircleGeometry.js +26 -26
- package/Build/Workers/createCircleOutlineGeometry.js +19 -19
- package/Build/Workers/createCoplanarPolygonGeometry.js +33 -33
- package/Build/Workers/createCoplanarPolygonOutlineGeometry.js +31 -31
- package/Build/Workers/createCorridorGeometry.js +29 -29
- package/Build/Workers/createCorridorOutlineGeometry.js +28 -28
- package/Build/Workers/createCylinderGeometry.js +20 -20
- package/Build/Workers/createCylinderOutlineGeometry.js +18 -18
- package/Build/Workers/createEllipseGeometry.js +26 -26
- package/Build/Workers/createEllipseOutlineGeometry.js +19 -19
- package/Build/Workers/createEllipsoidGeometry.js +19 -19
- package/Build/Workers/createEllipsoidOutlineGeometry.js +18 -18
- package/Build/Workers/createFrustumGeometry.js +18 -18
- package/Build/Workers/createFrustumOutlineGeometry.js +18 -18
- package/Build/Workers/createGeometry.js +24 -24
- package/Build/Workers/createGroundPolylineGeometry.js +175 -118
- package/Build/Workers/createPlaneGeometry.js +16 -16
- package/Build/Workers/createPlaneOutlineGeometry.js +15 -15
- package/Build/Workers/createPolygonGeometry.js +32 -32
- package/Build/Workers/createPolygonOutlineGeometry.js +30 -30
- package/Build/Workers/createPolylineGeometry.js +25 -25
- package/Build/Workers/createPolylineVolumeGeometry.js +31 -31
- package/Build/Workers/createPolylineVolumeOutlineGeometry.js +27 -27
- package/Build/Workers/createRectangleGeometry.js +27 -27
- package/Build/Workers/createRectangleOutlineGeometry.js +20 -20
- package/Build/Workers/createSimplePolylineGeometry.js +23 -23
- package/Build/Workers/createSphereGeometry.js +19 -19
- package/Build/Workers/createSphereOutlineGeometry.js +18 -18
- package/Build/Workers/createTaskProcessorWorker.js +3 -3
- package/Build/Workers/createVectorTileClampedPolylines.js +14 -14
- package/Build/Workers/createVectorTileGeometries.js +24 -24
- package/Build/Workers/createVectorTilePoints.js +13 -13
- package/Build/Workers/createVectorTilePolygons.js +22 -22
- package/Build/Workers/createVectorTilePolylines.js +14 -14
- package/Build/Workers/createVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Build/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +22 -22
- package/Build/Workers/createVerticesFromHeightmap.js +24 -23
- package/Build/Workers/createVerticesFromQuantizedTerrainMesh.js +20 -20
- package/Build/Workers/createWallGeometry.js +24 -24
- package/Build/Workers/createWallOutlineGeometry.js +23 -23
- package/Build/Workers/decodeDraco.js +10 -10
- package/Build/Workers/decodeGoogleEarthEnterprisePacket.js +5 -5
- package/Build/Workers/decodeI3S.js +10 -10
- package/Build/Workers/gaussianSplatSorter.js +4 -4
- package/Build/Workers/gaussianSplatTextureGenerator.js +4 -4
- package/Build/Workers/incrementallyBuildTerrainPicker.js +10 -10
- package/Build/Workers/transcodeKTX2.js +12 -9
- package/Build/Workers/transferTypedArrayTest.js +1 -1
- package/Build/Workers/upsampleQuantizedTerrainMesh.js +22 -22
- package/Build/Workers/upsampleVerticesFromCesium3DTilesTerrain.js +25 -25
- package/Source/Core/ArcType.js +6 -1
- package/Source/Core/ArticulationStageType.js +5 -1
- package/Source/Core/AssociativeArray.js +100 -94
- package/Source/Core/BoundingSphere.js +1296 -1300
- package/Source/Core/Cartesian3.js +1 -2
- package/Source/Core/Cartographic.js +257 -249
- package/Source/Core/ClockRange.js +6 -1
- package/Source/Core/ClockStep.js +6 -1
- package/Source/Core/Color.js +844 -835
- package/Source/Core/ComponentDatatype.js +4 -1
- package/Source/Core/CornerType.js +6 -1
- package/Source/Core/Credit.js +121 -124
- package/Source/Core/Ellipsoid.js +637 -660
- package/Source/Core/ExtrapolationType.js +6 -1
- package/Source/Core/GeocodeType.js +6 -1
- package/Source/Core/GeographicProjection.js +74 -74
- package/Source/Core/GeographicTilingScheme.js +179 -198
- package/Source/Core/GeometryOffsetAttribute.js +7 -1
- package/Source/Core/GeometryType.js +7 -1
- package/Source/Core/HeightmapEncoding.js +6 -1
- package/Source/Core/Iau2006XysData.js +24 -13
- package/Source/Core/IndexDatatype.js +3 -1
- package/Source/Core/InterpolationType.js +5 -1
- package/Source/Core/Intersect.js +6 -1
- package/Source/Core/Ion.js +1 -1
- package/Source/Core/IonGeocodeProviderType.js +5 -1
- package/Source/Core/JulianDate.js +850 -848
- package/Source/Core/KeyboardEventModifier.js +6 -1
- package/Source/Core/MapProjection.js +39 -44
- package/Source/Core/Matrix2.js +906 -893
- package/Source/Core/Matrix3.js +1643 -1575
- package/Source/Core/Matrix4.js +2903 -2872
- package/Source/Core/PixelFormat.js +3 -1
- package/Source/Core/PrimitiveType.js +11 -1
- package/Source/Core/Ray.js +62 -60
- package/Source/Core/Rectangle.js +913 -904
- package/Source/Core/ReferenceFrame.js +6 -1
- package/Source/Core/RequestScheduler.js +8 -3
- package/Source/Core/RequestState.js +6 -1
- package/Source/Core/RequestType.js +6 -1
- package/Source/Core/ScreenSpaceEventType.js +6 -1
- package/Source/Core/TerrainQuantization.js +6 -1
- package/Source/Core/TilingScheme.js +100 -98
- package/Source/Core/TimeConstants.js +6 -1
- package/Source/Core/TimeStandard.js +6 -1
- package/Source/Core/TrackingReferenceFrame.js +6 -1
- package/Source/Core/Visibility.js +6 -1
- package/Source/Core/VulkanConstants.js +6 -1
- package/Source/Core/WebGLConstants.js +6 -1
- package/Source/Core/WebMercatorProjection.js +108 -109
- package/Source/Core/WebMercatorTilingScheme.js +246 -242
- package/Source/Core/WindingOrder.js +3 -1
- package/Source/DataSources/StaticGroundGeometryPerMaterialBatch.js +1 -0
- package/Source/DataSources/StaticGroundPolylinePerMaterialBatch.js +1 -0
- package/Source/DataSources/StripeOrientation.js +6 -1
- package/Source/Renderer/BufferUsage.js +20 -9
- package/Source/Renderer/Context.js +2 -29
- package/Source/Renderer/DrawCommand.js +435 -403
- package/Source/Renderer/MipmapHint.js +5 -1
- package/Source/Renderer/Pass.js +7 -1
- package/Source/Renderer/PickId.js +44 -0
- package/Source/Renderer/PixelDatatype.js +3 -1
- package/Source/Renderer/RenderbufferFormat.js +5 -1
- package/Source/Renderer/ShaderDestination.js +4 -1
- package/Source/Renderer/TextureMagnificationFilter.js +3 -1
- package/Source/Renderer/TextureMinificationFilter.js +3 -1
- package/Source/Renderer/TextureWrap.js +5 -1
- package/Source/Scene/AlphaMode.js +5 -1
- package/Source/Scene/ArcGisBaseMapType.js +6 -1
- package/Source/Scene/ArcGisMapService.js +1 -1
- package/Source/Scene/AttributeType.js +3 -1
- package/Source/Scene/Axis.js +3 -1
- package/Source/Scene/BingMapsStyle.js +6 -1
- package/Source/Scene/BlendEquation.js +6 -1
- package/Source/Scene/BlendFunction.js +6 -1
- package/Source/Scene/BlendOption.js +6 -1
- package/Source/Scene/BlendingState.js +6 -1
- package/Source/Scene/BufferLoader.js +0 -2
- package/Source/Scene/BufferPointCollection.js +4 -1
- package/Source/Scene/BufferPolygonCollection.js +3 -1
- package/Source/Scene/BufferPolylineCollection.js +3 -1
- package/Source/Scene/BufferPrimitiveCollection.js +140 -24
- package/Source/Scene/CameraEventType.js +6 -1
- package/Source/Scene/Cesium3DTileColorBlendMode.js +6 -1
- package/Source/Scene/Cesium3DTileContentState.js +6 -1
- package/Source/Scene/Cesium3DTileContentType.js +3 -1
- package/Source/Scene/Cesium3DTileFeature.js +289 -306
- package/Source/Scene/Cesium3DTileOptimizationHint.js +6 -1
- package/Source/Scene/Cesium3DTilePass.js +5 -1
- package/Source/Scene/Cesium3DTilePointFeature.js +433 -511
- package/Source/Scene/Cesium3DTileRefine.js +6 -1
- package/Source/Scene/Cesium3DTileVectorFeature.js +586 -0
- package/Source/Scene/Cesium3DTileset.js +1 -1
- package/Source/Scene/ClassificationType.js +3 -1
- package/Source/Scene/CloudType.js +3 -1
- package/Source/Scene/ColorBlendMode.js +4 -1
- package/Source/Scene/CullFace.js +6 -1
- package/Source/Scene/DepthFunction.js +6 -1
- package/Source/Scene/DynamicAtmosphereLightingType.js +3 -1
- package/Source/Scene/EquirectangularPanorama.js +1 -0
- package/Source/Scene/ExpressionNodeType.js +6 -1
- package/Source/Scene/GltfBufferViewLoader.js +0 -2
- package/Source/Scene/GltfDracoLoader.js +0 -2
- package/Source/Scene/GltfImageLoader.js +0 -3
- package/Source/Scene/GltfIndexBufferLoader.js +0 -4
- package/Source/Scene/GltfJsonLoader.js +0 -2
- package/Source/Scene/GltfLoader.js +0 -5
- package/Source/Scene/GltfLoaderUtil.js +14 -0
- package/Source/Scene/GltfSpzLoader.js +0 -2
- package/Source/Scene/GltfStructuralMetadataLoader.js +0 -2
- package/Source/Scene/GltfTextureLoader.js +0 -2
- package/Source/Scene/GltfVertexBufferLoader.js +0 -4
- package/Source/Scene/HeightReference.js +5 -1
- package/Source/Scene/HorizontalOrigin.js +6 -1
- package/Source/Scene/ImageryProvider.js +1 -1
- package/Source/Scene/ImageryState.js +6 -1
- package/Source/Scene/ImplicitSubdivisionScheme.js +3 -1
- package/Source/Scene/InstanceAttributeSemantic.js +3 -1
- package/Source/Scene/IonWorldImageryStyle.js +6 -1
- package/Source/Scene/JobType.js +6 -1
- package/Source/Scene/LabelStyle.js +6 -1
- package/Source/Scene/MapMode2D.js +6 -1
- package/Source/Scene/MetadataComponentType.js +3 -1
- package/Source/Scene/MetadataSchemaLoader.js +0 -2
- package/Source/Scene/MetadataSemantic.js +6 -2
- package/Source/Scene/MetadataType.js +3 -1
- package/Source/Scene/Model/B3dmLoader.js +0 -3
- package/Source/Scene/Model/CustomShaderMode.js +3 -1
- package/Source/Scene/Model/CustomShaderTranslucencyMode.js +5 -1
- package/Source/Scene/Model/EdgeVisibilityPipelineStage.js +44 -71
- package/Source/Scene/Model/Extensions/Gpm/PpeSource.js +5 -1
- package/Source/Scene/Model/Extensions/Gpm/StorageType.js +5 -1
- package/Source/Scene/Model/GeoJsonLoader.js +0 -2
- package/Source/Scene/Model/I3dmLoader.js +0 -3
- package/Source/Scene/Model/InstancingPipelineStage.js +1 -1
- package/Source/Scene/Model/LightingModel.js +5 -1
- package/Source/Scene/Model/MaterialPipelineStage.js +184 -3
- package/Source/Scene/Model/ModelReader.js +474 -3
- package/Source/Scene/Model/ModelRuntimePrimitive.js +2 -1
- package/Source/Scene/Model/ModelType.js +3 -1
- package/Source/Scene/Model/PntsLoader.js +4 -3
- package/Source/Scene/Model/StyleCommandsNeeded.js +3 -1
- package/Source/Scene/Model/UniformType.js +5 -1
- package/Source/Scene/Model/VaryingType.js +5 -1
- package/Source/Scene/Model/createVectorTileBuffersFromModelComponents.js +73 -28
- package/Source/Scene/Model/pickModel.js +94 -299
- package/Source/Scene/ModelAnimationLoop.js +6 -1
- package/Source/Scene/ModelAnimationState.js +6 -1
- package/Source/Scene/ModelComponents.js +8 -1
- package/Source/Scene/PrimitiveState.js +7 -1
- package/Source/Scene/QuadtreeOccluders.js +20 -15
- package/Source/Scene/QuadtreeTile.js +547 -541
- package/Source/Scene/QuadtreeTileLoadState.js +6 -1
- package/Source/Scene/QuadtreeTileProvider.js +159 -175
- package/Source/Scene/ResourceLoader.js +0 -1
- package/Source/Scene/ResourceLoaderState.js +7 -1
- package/Source/Scene/SceneMode.js +4 -1
- package/Source/Scene/ShadowMode.js +3 -1
- package/Source/Scene/SkyBox.js +1 -1
- package/Source/Scene/SplitDirection.js +6 -1
- package/Source/Scene/StencilFunction.js +6 -1
- package/Source/Scene/StencilOperation.js +6 -1
- package/Source/Scene/TerrainState.js +7 -1
- package/Source/Scene/TileState.js +7 -1
- package/Source/Scene/Tonemapper.js +5 -1
- package/Source/Scene/VectorGltf3DTileContent.js +72 -51
- package/Source/Scene/VertexAttributeSemantic.js +3 -1
- package/Source/Scene/VerticalOrigin.js +6 -1
- package/Source/Scene/VoxelBoxShape.js +12 -6
- package/Source/Scene/VoxelContent.js +2 -0
- package/Source/Scene/VoxelCylinderShape.js +39 -38
- package/Source/Scene/VoxelEllipsoidShape.js +46 -96
- package/Source/Scene/VoxelMetadataOrder.js +6 -1
- package/Source/Scene/VoxelProvider.js +1 -0
- package/Source/Scene/VoxelShapeType.js +3 -1
- package/Source/Scene/renderBufferPointCollection.js +17 -66
- package/Source/Scene/renderBufferPolygonCollection.js +21 -68
- package/Source/Scene/renderBufferPolylineCollection.js +22 -73
- package/Source/Shaders/Builtin/CzmBuiltins.js +2 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.glsl +24 -0
- package/Source/Shaders/Builtin/Functions/computeTextureTransform.js +25 -0
- package/Source/Shaders/Model/ConstantLodStageFS.glsl +60 -0
- package/Source/Shaders/Model/ConstantLodStageFS.js +62 -0
- package/Source/Shaders/Model/ConstantLodStageVS.glsl +12 -0
- package/Source/Shaders/Model/ConstantLodStageVS.js +13 -0
- package/Source/Shaders/Model/MaterialStageFS.glsl +46 -20
- package/Source/Shaders/Model/MaterialStageFS.js +46 -20
- package/Source/Shaders/Voxels/convertLocalToBoxUv.glsl +0 -1
- package/Source/Shaders/Voxels/convertLocalToBoxUv.js +0 -1
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.glsl +7 -9
- package/Source/Shaders/Voxels/convertLocalToCylinderUv.js +7 -9
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.glsl +7 -17
- package/Source/Shaders/Voxels/convertLocalToEllipsoidUv.js +7 -17
- package/Source/Widget/CesiumWidget.js +11 -4
- package/index.d.ts +343 -309
- package/index.js +443 -438
- package/package.json +2 -2
- package/Build/Workers/chunk-DVB56LG7.js +0 -114
- package/Build/Workers/chunk-HKUES6UG.js +0 -2357
- package/Build/Workers/chunk-HRHRYFHS.js +0 -940
- package/Build/Workers/chunk-KLPGTXS3.js +0 -642
- package/Build/Workers/chunk-ZBZRTRJB.js +0 -1829
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Constants to determine how an interpolated value is extrapolated
|
|
3
5
|
* when querying outside the bounds of available data.
|
|
@@ -31,4 +33,7 @@ const ExtrapolationType = {
|
|
|
31
33
|
*/
|
|
32
34
|
EXTRAPOLATE: 2,
|
|
33
35
|
};
|
|
34
|
-
|
|
36
|
+
|
|
37
|
+
Object.freeze(ExtrapolationType);
|
|
38
|
+
|
|
39
|
+
export default ExtrapolationType;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* The type of geocoding to be performed by a {@link GeocoderService}.
|
|
3
5
|
* @enum {number}
|
|
@@ -21,4 +23,7 @@ const GeocodeType = {
|
|
|
21
23
|
*/
|
|
22
24
|
AUTOCOMPLETE: 1,
|
|
23
25
|
};
|
|
24
|
-
|
|
26
|
+
|
|
27
|
+
Object.freeze(GeocodeType);
|
|
28
|
+
|
|
29
|
+
export default GeocodeType;
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
import Cartesian3 from "./Cartesian3.js";
|
|
2
4
|
import Cartographic from "./Cartographic.js";
|
|
3
5
|
import defined from "./defined.js";
|
|
4
6
|
import DeveloperError from "./DeveloperError.js";
|
|
5
7
|
import Ellipsoid from "./Ellipsoid.js";
|
|
6
8
|
|
|
9
|
+
/** @import MapProjection from "./MapProjection.js"; */
|
|
10
|
+
|
|
7
11
|
/**
|
|
8
12
|
* A simple map projection where longitude and latitude are linearly mapped to X and Y by multiplying
|
|
9
13
|
* them by the {@link Ellipsoid#maximumRadius}. This projection
|
|
10
14
|
* is commonly known as geographic, equirectangular, equidistant cylindrical, or plate carrée. When using the WGS84 ellipsoid, it
|
|
11
15
|
* is also known as EPSG:4326.
|
|
12
16
|
*
|
|
13
|
-
* @alias GeographicProjection
|
|
14
|
-
* @constructor
|
|
15
|
-
*
|
|
16
|
-
* @param {Ellipsoid} [ellipsoid=Ellipsoid.default] The ellipsoid.
|
|
17
|
-
*
|
|
18
17
|
* @see WebMercatorProjection
|
|
18
|
+
*
|
|
19
|
+
* @implements MapProjection
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
class GeographicProjection {
|
|
22
|
+
/**
|
|
23
|
+
* @param {Ellipsoid} [ellipsoid=Ellipsoid.default] The ellipsoid.
|
|
24
|
+
*/
|
|
25
|
+
constructor(ellipsoid) {
|
|
26
|
+
this._ellipsoid = ellipsoid ?? Ellipsoid.default;
|
|
27
|
+
this._semimajorAxis = this._ellipsoid.maximumRadius;
|
|
28
|
+
this._oneOverSemimajorAxis = 1.0 / this._semimajorAxis;
|
|
29
|
+
}
|
|
25
30
|
|
|
26
|
-
Object.defineProperties(GeographicProjection.prototype, {
|
|
27
31
|
/**
|
|
28
32
|
* Gets the {@link Ellipsoid}.
|
|
29
33
|
*
|
|
30
|
-
* @memberof GeographicProjection.prototype
|
|
31
|
-
*
|
|
32
34
|
* @type {Ellipsoid}
|
|
33
35
|
* @readonly
|
|
34
36
|
*/
|
|
35
|
-
ellipsoid
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
});
|
|
37
|
+
get ellipsoid() {
|
|
38
|
+
return this._ellipsoid;
|
|
39
|
+
}
|
|
41
40
|
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Projects a set of {@link Cartographic} coordinates, in radians, to map coordinates, in meters.
|
|
43
|
+
* X and Y are the longitude and latitude, respectively, multiplied by the maximum radius of the
|
|
44
|
+
* ellipsoid. Z is the unmodified height.
|
|
45
|
+
*
|
|
46
|
+
* @param {Cartographic} cartographic The coordinates to project.
|
|
47
|
+
* @param {Cartesian3} [result] An instance into which to copy the result. If this parameter is
|
|
48
|
+
* undefined, a new instance is created and returned.
|
|
49
|
+
* @returns {Cartesian3} The projected coordinates. If the result parameter is not undefined, the
|
|
50
|
+
* coordinates are copied there and that instance is returned. Otherwise, a new instance is
|
|
51
|
+
* created and returned.
|
|
52
|
+
*/
|
|
53
|
+
project(cartographic, result) {
|
|
54
|
+
// Actually this is the special case of equidistant cylindrical called the plate carree
|
|
55
|
+
const semimajorAxis = this._semimajorAxis;
|
|
56
|
+
const x = cartographic.longitude * semimajorAxis;
|
|
57
|
+
const y = cartographic.latitude * semimajorAxis;
|
|
58
|
+
const z = cartographic.height;
|
|
59
|
+
|
|
60
|
+
if (!defined(result)) {
|
|
61
|
+
return new Cartesian3(x, y, z);
|
|
62
|
+
}
|
|
60
63
|
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
result.x = x;
|
|
65
|
+
result.y = y;
|
|
66
|
+
result.z = z;
|
|
67
|
+
return result;
|
|
63
68
|
}
|
|
64
69
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Unprojects a set of projected {@link Cartesian3} coordinates, in meters, to {@link Cartographic}
|
|
72
|
+
* coordinates, in radians. Longitude and Latitude are the X and Y coordinates, respectively,
|
|
73
|
+
* divided by the maximum radius of the ellipsoid. Height is the unmodified Z coordinate.
|
|
74
|
+
*
|
|
75
|
+
* @param {Cartesian3} cartesian The Cartesian position to unproject with height (z) in meters.
|
|
76
|
+
* @param {Cartographic} [result] An instance into which to copy the result. If this parameter is
|
|
77
|
+
* undefined, a new instance is created and returned.
|
|
78
|
+
* @returns {Cartographic} The unprojected coordinates. If the result parameter is not undefined, the
|
|
79
|
+
* coordinates are copied there and that instance is returned. Otherwise, a new instance is
|
|
80
|
+
* created and returned.
|
|
81
|
+
*/
|
|
82
|
+
unproject(cartesian, result) {
|
|
83
|
+
//>>includeStart('debug', pragmas.debug);
|
|
84
|
+
if (!defined(cartesian)) {
|
|
85
|
+
throw new DeveloperError("cartesian is required");
|
|
86
|
+
}
|
|
87
|
+
//>>includeEnd('debug');
|
|
70
88
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
*
|
|
76
|
-
* @param {Cartesian3} cartesian The Cartesian position to unproject with height (z) in meters.
|
|
77
|
-
* @param {Cartographic} [result] An instance into which to copy the result. If this parameter is
|
|
78
|
-
* undefined, a new instance is created and returned.
|
|
79
|
-
* @returns {Cartographic} The unprojected coordinates. If the result parameter is not undefined, the
|
|
80
|
-
* coordinates are copied there and that instance is returned. Otherwise, a new instance is
|
|
81
|
-
* created and returned.
|
|
82
|
-
*/
|
|
83
|
-
GeographicProjection.prototype.unproject = function (cartesian, result) {
|
|
84
|
-
//>>includeStart('debug', pragmas.debug);
|
|
85
|
-
if (!defined(cartesian)) {
|
|
86
|
-
throw new DeveloperError("cartesian is required");
|
|
87
|
-
}
|
|
88
|
-
//>>includeEnd('debug');
|
|
89
|
+
const oneOverEarthSemimajorAxis = this._oneOverSemimajorAxis;
|
|
90
|
+
const longitude = cartesian.x * oneOverEarthSemimajorAxis;
|
|
91
|
+
const latitude = cartesian.y * oneOverEarthSemimajorAxis;
|
|
92
|
+
const height = cartesian.z;
|
|
89
93
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const height = cartesian.z;
|
|
94
|
+
if (!defined(result)) {
|
|
95
|
+
return new Cartographic(longitude, latitude, height);
|
|
96
|
+
}
|
|
94
97
|
|
|
95
|
-
|
|
96
|
-
|
|
98
|
+
result.longitude = longitude;
|
|
99
|
+
result.latitude = latitude;
|
|
100
|
+
result.height = height;
|
|
101
|
+
return result;
|
|
97
102
|
}
|
|
98
|
-
|
|
99
|
-
result.longitude = longitude;
|
|
100
|
-
result.latitude = latitude;
|
|
101
|
-
result.height = height;
|
|
102
|
-
return result;
|
|
103
|
-
};
|
|
103
|
+
}
|
|
104
104
|
|
|
105
105
|
export default GeographicProjection;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
import Cartesian2 from "./Cartesian2.js";
|
|
2
4
|
import Check from "./Check.js";
|
|
3
5
|
import Frozen from "./Frozen.js";
|
|
@@ -7,239 +9,218 @@ import GeographicProjection from "./GeographicProjection.js";
|
|
|
7
9
|
import CesiumMath from "./Math.js";
|
|
8
10
|
import Rectangle from "./Rectangle.js";
|
|
9
11
|
|
|
12
|
+
/** @import Cartographic from "./Cartographic.js"; */
|
|
13
|
+
/** @import MapProjection from "./MapProjection.js"; */
|
|
14
|
+
/** @import TilingScheme from "./TilingScheme.js"; */
|
|
15
|
+
|
|
10
16
|
/**
|
|
11
17
|
* A tiling scheme for geometry referenced to a simple {@link GeographicProjection} where
|
|
12
18
|
* longitude and latitude are directly mapped to X and Y. This projection is commonly
|
|
13
19
|
* known as geographic, equirectangular, equidistant cylindrical, or plate carrée.
|
|
14
20
|
*
|
|
15
|
-
* @
|
|
16
|
-
* @constructor
|
|
17
|
-
*
|
|
18
|
-
* @param {object} [options] Object with the following properties:
|
|
19
|
-
* @param {Ellipsoid} [options.ellipsoid=Ellipsoid.default] The ellipsoid whose surface is being tiled. Defaults to
|
|
20
|
-
* the default ellipsoid.
|
|
21
|
-
* @param {Rectangle} [options.rectangle=Rectangle.MAX_VALUE] The rectangle, in radians, covered by the tiling scheme.
|
|
22
|
-
* @param {number} [options.numberOfLevelZeroTilesX=2] The number of tiles in the X direction at level zero of
|
|
23
|
-
* the tile tree.
|
|
24
|
-
* @param {number} [options.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
|
|
25
|
-
* the tile tree.
|
|
21
|
+
* @implements {TilingScheme}
|
|
26
22
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
23
|
+
class GeographicTilingScheme {
|
|
24
|
+
/**
|
|
25
|
+
* @param {object} [options] Object with the following properties:
|
|
26
|
+
* @param {Ellipsoid} [options.ellipsoid=Ellipsoid.default] The ellipsoid whose surface is being tiled. Defaults to
|
|
27
|
+
* the default ellipsoid.
|
|
28
|
+
* @param {Rectangle} [options.rectangle=Rectangle.MAX_VALUE] The rectangle, in radians, covered by the tiling scheme.
|
|
29
|
+
* @param {number} [options.numberOfLevelZeroTilesX=2] The number of tiles in the X direction at level zero of
|
|
30
|
+
* the tile tree.
|
|
31
|
+
* @param {number} [options.numberOfLevelZeroTilesY=1] The number of tiles in the Y direction at level zero of
|
|
32
|
+
* the tile tree.
|
|
33
|
+
*/
|
|
34
|
+
constructor(options) {
|
|
35
|
+
options = options ?? Frozen.EMPTY_OBJECT;
|
|
36
|
+
|
|
37
|
+
this._ellipsoid = options.ellipsoid ?? Ellipsoid.default;
|
|
38
|
+
this._rectangle = options.rectangle ?? Rectangle.MAX_VALUE;
|
|
39
|
+
this._projection = new GeographicProjection(this._ellipsoid);
|
|
40
|
+
this._numberOfLevelZeroTilesX = options.numberOfLevelZeroTilesX ?? 2;
|
|
41
|
+
this._numberOfLevelZeroTilesY = options.numberOfLevelZeroTilesY ?? 1;
|
|
42
|
+
}
|
|
36
43
|
|
|
37
|
-
Object.defineProperties(GeographicTilingScheme.prototype, {
|
|
38
44
|
/**
|
|
39
45
|
* Gets the ellipsoid that is tiled by this tiling scheme.
|
|
40
|
-
* @memberof GeographicTilingScheme.prototype
|
|
41
46
|
* @type {Ellipsoid}
|
|
42
47
|
*/
|
|
43
|
-
ellipsoid
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
+
get ellipsoid() {
|
|
49
|
+
return this._ellipsoid;
|
|
50
|
+
}
|
|
48
51
|
|
|
49
52
|
/**
|
|
50
53
|
* Gets the rectangle, in radians, covered by this tiling scheme.
|
|
51
|
-
* @memberof GeographicTilingScheme.prototype
|
|
52
54
|
* @type {Rectangle}
|
|
53
55
|
*/
|
|
54
|
-
rectangle
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
},
|
|
56
|
+
get rectangle() {
|
|
57
|
+
return this._rectangle;
|
|
58
|
+
}
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
61
|
* Gets the map projection used by this tiling scheme.
|
|
62
|
-
* @memberof GeographicTilingScheme.prototype
|
|
63
62
|
* @type {MapProjection}
|
|
64
63
|
*/
|
|
65
|
-
projection
|
|
66
|
-
|
|
67
|
-
return this._projection;
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Gets the total number of tiles in the X direction at a specified level-of-detail.
|
|
74
|
-
*
|
|
75
|
-
* @param {number} level The level-of-detail.
|
|
76
|
-
* @returns {number} The number of tiles in the X direction at the given level.
|
|
77
|
-
*/
|
|
78
|
-
GeographicTilingScheme.prototype.getNumberOfXTilesAtLevel = function (level) {
|
|
79
|
-
return this._numberOfLevelZeroTilesX << level;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Gets the total number of tiles in the Y direction at a specified level-of-detail.
|
|
84
|
-
*
|
|
85
|
-
* @param {number} level The level-of-detail.
|
|
86
|
-
* @returns {number} The number of tiles in the Y direction at the given level.
|
|
87
|
-
*/
|
|
88
|
-
GeographicTilingScheme.prototype.getNumberOfYTilesAtLevel = function (level) {
|
|
89
|
-
return this._numberOfLevelZeroTilesY << level;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Transforms a rectangle specified in geodetic radians to the native coordinate system
|
|
94
|
-
* of this tiling scheme.
|
|
95
|
-
*
|
|
96
|
-
* @param {Rectangle} rectangle The rectangle to transform.
|
|
97
|
-
* @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
|
|
98
|
-
* should be created.
|
|
99
|
-
* @returns {Rectangle} The specified 'result', or a new object containing the native rectangle if 'result'
|
|
100
|
-
* is undefined.
|
|
101
|
-
*/
|
|
102
|
-
GeographicTilingScheme.prototype.rectangleToNativeRectangle = function (
|
|
103
|
-
rectangle,
|
|
104
|
-
result,
|
|
105
|
-
) {
|
|
106
|
-
//>>includeStart('debug', pragmas.debug);
|
|
107
|
-
Check.defined("rectangle", rectangle);
|
|
108
|
-
//>>includeEnd('debug');
|
|
109
|
-
|
|
110
|
-
const west = CesiumMath.toDegrees(rectangle.west);
|
|
111
|
-
const south = CesiumMath.toDegrees(rectangle.south);
|
|
112
|
-
const east = CesiumMath.toDegrees(rectangle.east);
|
|
113
|
-
const north = CesiumMath.toDegrees(rectangle.north);
|
|
114
|
-
|
|
115
|
-
if (!defined(result)) {
|
|
116
|
-
return new Rectangle(west, south, east, north);
|
|
64
|
+
get projection() {
|
|
65
|
+
return this._projection;
|
|
117
66
|
}
|
|
118
67
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
* of the tiling scheme.
|
|
129
|
-
*
|
|
130
|
-
* @param {number} x The integer x coordinate of the tile.
|
|
131
|
-
* @param {number} y The integer y coordinate of the tile.
|
|
132
|
-
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
133
|
-
* @param {object} [result] The instance to which to copy the result, or undefined if a new instance
|
|
134
|
-
* should be created.
|
|
135
|
-
* @returns {Rectangle} The specified 'result', or a new object containing the rectangle
|
|
136
|
-
* if 'result' is undefined.
|
|
137
|
-
*/
|
|
138
|
-
GeographicTilingScheme.prototype.tileXYToNativeRectangle = function (
|
|
139
|
-
x,
|
|
140
|
-
y,
|
|
141
|
-
level,
|
|
142
|
-
result,
|
|
143
|
-
) {
|
|
144
|
-
const rectangleRadians = this.tileXYToRectangle(x, y, level, result);
|
|
145
|
-
rectangleRadians.west = CesiumMath.toDegrees(rectangleRadians.west);
|
|
146
|
-
rectangleRadians.south = CesiumMath.toDegrees(rectangleRadians.south);
|
|
147
|
-
rectangleRadians.east = CesiumMath.toDegrees(rectangleRadians.east);
|
|
148
|
-
rectangleRadians.north = CesiumMath.toDegrees(rectangleRadians.north);
|
|
149
|
-
return rectangleRadians;
|
|
150
|
-
};
|
|
68
|
+
/**
|
|
69
|
+
* Gets the total number of tiles in the X direction at a specified level-of-detail.
|
|
70
|
+
*
|
|
71
|
+
* @param {number} level The level-of-detail.
|
|
72
|
+
* @returns {number} The number of tiles in the X direction at the given level.
|
|
73
|
+
*/
|
|
74
|
+
getNumberOfXTilesAtLevel(level) {
|
|
75
|
+
return this._numberOfLevelZeroTilesX << level;
|
|
76
|
+
}
|
|
151
77
|
|
|
152
|
-
/**
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
* @returns {Rectangle} The specified 'result', or a new object containing the rectangle
|
|
161
|
-
* if 'result' is undefined.
|
|
162
|
-
*/
|
|
163
|
-
GeographicTilingScheme.prototype.tileXYToRectangle = function (
|
|
164
|
-
x,
|
|
165
|
-
y,
|
|
166
|
-
level,
|
|
167
|
-
result,
|
|
168
|
-
) {
|
|
169
|
-
const rectangle = this._rectangle;
|
|
170
|
-
|
|
171
|
-
const xTiles = this.getNumberOfXTilesAtLevel(level);
|
|
172
|
-
const yTiles = this.getNumberOfYTilesAtLevel(level);
|
|
173
|
-
|
|
174
|
-
const xTileWidth = rectangle.width / xTiles;
|
|
175
|
-
const west = x * xTileWidth + rectangle.west;
|
|
176
|
-
const east = (x + 1) * xTileWidth + rectangle.west;
|
|
177
|
-
|
|
178
|
-
const yTileHeight = rectangle.height / yTiles;
|
|
179
|
-
const north = rectangle.north - y * yTileHeight;
|
|
180
|
-
const south = rectangle.north - (y + 1) * yTileHeight;
|
|
181
|
-
|
|
182
|
-
if (!defined(result)) {
|
|
183
|
-
result = new Rectangle(west, south, east, north);
|
|
78
|
+
/**
|
|
79
|
+
* Gets the total number of tiles in the Y direction at a specified level-of-detail.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} level The level-of-detail.
|
|
82
|
+
* @returns {number} The number of tiles in the Y direction at the given level.
|
|
83
|
+
*/
|
|
84
|
+
getNumberOfYTilesAtLevel(level) {
|
|
85
|
+
return this._numberOfLevelZeroTilesY << level;
|
|
184
86
|
}
|
|
185
87
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
88
|
+
/**
|
|
89
|
+
* Transforms a rectangle specified in geodetic radians to the native coordinate system
|
|
90
|
+
* of this tiling scheme.
|
|
91
|
+
*
|
|
92
|
+
* @param {Rectangle} rectangle The rectangle to transform.
|
|
93
|
+
* @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
|
|
94
|
+
* should be created.
|
|
95
|
+
* @returns {Rectangle} The specified 'result', or a new object containing the native rectangle if 'result'
|
|
96
|
+
* is undefined.
|
|
97
|
+
*/
|
|
98
|
+
rectangleToNativeRectangle(rectangle, result) {
|
|
99
|
+
//>>includeStart('debug', pragmas.debug);
|
|
100
|
+
Check.defined("rectangle", rectangle);
|
|
101
|
+
//>>includeEnd('debug');
|
|
102
|
+
|
|
103
|
+
const west = CesiumMath.toDegrees(rectangle.west);
|
|
104
|
+
const south = CesiumMath.toDegrees(rectangle.south);
|
|
105
|
+
const east = CesiumMath.toDegrees(rectangle.east);
|
|
106
|
+
const north = CesiumMath.toDegrees(rectangle.north);
|
|
107
|
+
|
|
108
|
+
if (!defined(result)) {
|
|
109
|
+
return new Rectangle(west, south, east, north);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
result.west = west;
|
|
113
|
+
result.south = south;
|
|
114
|
+
result.east = east;
|
|
115
|
+
result.north = north;
|
|
116
|
+
return result;
|
|
117
|
+
}
|
|
192
118
|
|
|
193
|
-
/**
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
)
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
return undefined;
|
|
119
|
+
/**
|
|
120
|
+
* Converts tile x, y coordinates and level to a rectangle expressed in the native coordinates
|
|
121
|
+
* of the tiling scheme.
|
|
122
|
+
*
|
|
123
|
+
* @param {number} x The integer x coordinate of the tile.
|
|
124
|
+
* @param {number} y The integer y coordinate of the tile.
|
|
125
|
+
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
126
|
+
* @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
|
|
127
|
+
* should be created.
|
|
128
|
+
* @returns {Rectangle} The specified 'result', or a new object containing the rectangle
|
|
129
|
+
* if 'result' is undefined.
|
|
130
|
+
*/
|
|
131
|
+
tileXYToNativeRectangle(x, y, level, result) {
|
|
132
|
+
const rectangleRadians = this.tileXYToRectangle(x, y, level, result);
|
|
133
|
+
rectangleRadians.west = CesiumMath.toDegrees(rectangleRadians.west);
|
|
134
|
+
rectangleRadians.south = CesiumMath.toDegrees(rectangleRadians.south);
|
|
135
|
+
rectangleRadians.east = CesiumMath.toDegrees(rectangleRadians.east);
|
|
136
|
+
rectangleRadians.north = CesiumMath.toDegrees(rectangleRadians.north);
|
|
137
|
+
return rectangleRadians;
|
|
213
138
|
}
|
|
214
139
|
|
|
215
|
-
|
|
216
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Converts tile x, y coordinates and level to a cartographic rectangle in radians.
|
|
142
|
+
*
|
|
143
|
+
* @param {number} x The integer x coordinate of the tile.
|
|
144
|
+
* @param {number} y The integer y coordinate of the tile.
|
|
145
|
+
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
146
|
+
* @param {Rectangle} [result] The instance to which to copy the result, or undefined if a new instance
|
|
147
|
+
* should be created.
|
|
148
|
+
* @returns {Rectangle} The specified 'result', or a new object containing the rectangle
|
|
149
|
+
* if 'result' is undefined.
|
|
150
|
+
*/
|
|
151
|
+
tileXYToRectangle(x, y, level, result) {
|
|
152
|
+
const rectangle = this._rectangle;
|
|
153
|
+
|
|
154
|
+
const xTiles = this.getNumberOfXTilesAtLevel(level);
|
|
155
|
+
const yTiles = this.getNumberOfYTilesAtLevel(level);
|
|
217
156
|
|
|
218
|
-
|
|
219
|
-
|
|
157
|
+
const xTileWidth = rectangle.width / xTiles;
|
|
158
|
+
const west = x * xTileWidth + rectangle.west;
|
|
159
|
+
const east = (x + 1) * xTileWidth + rectangle.west;
|
|
220
160
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
161
|
+
const yTileHeight = rectangle.height / yTiles;
|
|
162
|
+
const north = rectangle.north - y * yTileHeight;
|
|
163
|
+
const south = rectangle.north - (y + 1) * yTileHeight;
|
|
225
164
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}
|
|
165
|
+
if (!defined(result)) {
|
|
166
|
+
result = new Rectangle(west, south, east, north);
|
|
167
|
+
}
|
|
230
168
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
169
|
+
result.west = west;
|
|
170
|
+
result.south = south;
|
|
171
|
+
result.east = east;
|
|
172
|
+
result.north = north;
|
|
173
|
+
return result;
|
|
235
174
|
}
|
|
236
175
|
|
|
237
|
-
|
|
238
|
-
|
|
176
|
+
/**
|
|
177
|
+
* Calculates the tile x, y coordinates of the tile containing
|
|
178
|
+
* a given cartographic position.
|
|
179
|
+
*
|
|
180
|
+
* @param {Cartographic} position The position.
|
|
181
|
+
* @param {number} level The tile level-of-detail. Zero is the least detailed.
|
|
182
|
+
* @param {Cartesian2} [result] The instance to which to copy the result, or undefined if a new instance
|
|
183
|
+
* should be created.
|
|
184
|
+
* @returns {Cartesian2} The specified 'result', or a new object containing the tile x, y coordinates
|
|
185
|
+
* if 'result' is undefined.
|
|
186
|
+
*/
|
|
187
|
+
positionToTileXY(position, level, result) {
|
|
188
|
+
const rectangle = this._rectangle;
|
|
189
|
+
if (!Rectangle.contains(rectangle, position)) {
|
|
190
|
+
// outside the bounds of the tiling scheme
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
const xTiles = this.getNumberOfXTilesAtLevel(level);
|
|
195
|
+
const yTiles = this.getNumberOfYTilesAtLevel(level);
|
|
196
|
+
|
|
197
|
+
const xTileWidth = rectangle.width / xTiles;
|
|
198
|
+
const yTileHeight = rectangle.height / yTiles;
|
|
199
|
+
|
|
200
|
+
let longitude = position.longitude;
|
|
201
|
+
if (rectangle.east < rectangle.west) {
|
|
202
|
+
longitude += CesiumMath.TWO_PI;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
let xTileCoordinate = ((longitude - rectangle.west) / xTileWidth) | 0;
|
|
206
|
+
if (xTileCoordinate >= xTiles) {
|
|
207
|
+
xTileCoordinate = xTiles - 1;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
let yTileCoordinate =
|
|
211
|
+
((rectangle.north - position.latitude) / yTileHeight) | 0;
|
|
212
|
+
if (yTileCoordinate >= yTiles) {
|
|
213
|
+
yTileCoordinate = yTiles - 1;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
if (!defined(result)) {
|
|
217
|
+
return new Cartesian2(xTileCoordinate, yTileCoordinate);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
result.x = xTileCoordinate;
|
|
221
|
+
result.y = yTileCoordinate;
|
|
222
|
+
return result;
|
|
239
223
|
}
|
|
224
|
+
}
|
|
240
225
|
|
|
241
|
-
result.x = xTileCoordinate;
|
|
242
|
-
result.y = yTileCoordinate;
|
|
243
|
-
return result;
|
|
244
|
-
};
|
|
245
226
|
export default GeographicTilingScheme;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Represents which vertices should have a value of `true` for the `applyOffset` attribute
|
|
5
|
+
* @enum {number}
|
|
3
6
|
* @private
|
|
4
7
|
*/
|
|
5
8
|
const GeometryOffsetAttribute = {
|
|
@@ -7,4 +10,7 @@ const GeometryOffsetAttribute = {
|
|
|
7
10
|
TOP: 1,
|
|
8
11
|
ALL: 2,
|
|
9
12
|
};
|
|
10
|
-
|
|
13
|
+
|
|
14
|
+
Object.freeze(GeometryOffsetAttribute);
|
|
15
|
+
|
|
16
|
+
export default GeometryOffsetAttribute;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
1
3
|
/**
|
|
4
|
+
* @enum {number}
|
|
2
5
|
* @private
|
|
3
6
|
*/
|
|
4
7
|
const GeometryType = {
|
|
@@ -7,4 +10,7 @@ const GeometryType = {
|
|
|
7
10
|
LINES: 2,
|
|
8
11
|
POLYLINES: 3,
|
|
9
12
|
};
|
|
10
|
-
|
|
13
|
+
|
|
14
|
+
Object.freeze(GeometryType);
|
|
15
|
+
|
|
16
|
+
export default GeometryType;
|