@lijuhong1981/cesium.utils 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -2
- package/package.json +33 -4
- package/src/additions/Geographic.js +603 -0
- package/src/additions/GeographicTransform.js +291 -0
- package/src/additions/GeometryInstanceAttributes.js +164 -0
- package/src/additions/ModelMatrixTransforms.js +822 -0
- package/src/additions/PropertyChangedListener.js +72 -0
- package/src/additions/PropertyType.js +30 -0
- package/src/additions/StTransforms.js +266 -0
- package/src/additions/TranslationRotationScaleTransform.js +809 -0
- package/src/additions/index.js +8 -0
- package/src/index.js +4 -0
- package/src/parses/index.js +46 -0
- package/src/parses/parseAltitude.js +32 -0
- package/src/parses/parseArcType.js +26 -0
- package/src/parses/parseAttitudeToHeadingPitchRoll.js +26 -0
- package/src/parses/parseAttitudeToMatrix3.js +17 -0
- package/src/parses/parseAttitudeToQuaternion.js +21 -0
- package/src/parses/parseCartographicToCartesian.js +21 -0
- package/src/parses/parseCartographicsToPositions.js +20 -0
- package/src/parses/parseClassificationType.js +24 -0
- package/src/parses/parseClockRange.js +26 -0
- package/src/parses/parseColorBlendMode.js +26 -0
- package/src/parses/parseCornerType.js +24 -0
- package/src/parses/parseCullFace.js +28 -0
- package/src/parses/parseEulerToHeadingPitchRoll.js +21 -0
- package/src/parses/parseEulerToQuaternion.js +18 -0
- package/src/parses/parseGeographicToCartesian.js +21 -0
- package/src/parses/parseGeographicsToPositions.js +20 -0
- package/src/parses/parseHeading.js +28 -0
- package/src/parses/parseHeightReference.js +24 -0
- package/src/parses/parseHorizontalOrigin.js +26 -0
- package/src/parses/parseLabelStyle.js +26 -0
- package/src/parses/parseLatitude.js +28 -0
- package/src/parses/parseLongitude.js +28 -0
- package/src/parses/parsePitch.js +26 -0
- package/src/parses/parseRoll.js +26 -0
- package/src/parses/parseRotationToHeadingPitchRoll.js +40 -0
- package/src/parses/parseRotationToMatrix3.js +25 -0
- package/src/parses/parseRotationToQuaternion.js +27 -0
- package/src/parses/parseShadowMode.js +26 -0
- package/src/parses/parseToBoundingRectangle.js +33 -0
- package/src/parses/parseToCartesian2.js +35 -0
- package/src/parses/parseToCartesian3.js +37 -0
- package/src/parses/parseToCartesian3Array.js +21 -0
- package/src/parses/parseToCartesian4.js +39 -0
- package/src/parses/parseToCartographic.js +31 -0
- package/src/parses/parseToColor.js +33 -0
- package/src/parses/parseToDistanceDisplayCondition.js +41 -0
- package/src/parses/parseToGeographic.js +31 -0
- package/src/parses/parseToHeadingPitchRange.js +45 -0
- package/src/parses/parseToJulianDate.js +23 -0
- package/src/parses/parseToNearFarScalar.js +33 -0
- package/src/parses/parseToPlane.js +37 -0
- package/src/parses/parseToPolygonHierarchy.js +48 -0
- package/src/parses/parseToRange.js +26 -0
- package/src/parses/parseToRectangle.js +32 -0
- package/src/parses/parseToTimeInterval.js +45 -0
- package/src/parses/parseVerticalOrigin.js +28 -0
- package/src/revisions/BoundingSphere.revise.js +107 -0
- package/src/revisions/Camera.revise.js +366 -0
- package/src/revisions/Cartesian.revise.js +313 -0
- package/src/revisions/Cartographic.revise.js +443 -0
- package/src/revisions/Check.revise.js +164 -0
- package/src/revisions/Color.revise.js +271 -0
- package/src/revisions/DistanceDisplayCondition.revise.js +37 -0
- package/src/revisions/Ellipsoid.revise.js +64 -0
- package/src/revisions/Geometry.revise.js +79 -0
- package/src/revisions/Globe.revise.js +92 -0
- package/src/revisions/HeadingPitchRoll.revise.js +328 -0
- package/src/revisions/JulianDate.revise.js +28 -0
- package/src/revisions/Material.revise.js +308 -0
- package/src/revisions/Math.revise.js +98 -0
- package/src/revisions/Matrix.revise.js +578 -0
- package/src/revisions/POI.revise.js +178 -0
- package/src/revisions/Plane.revise.js +43 -0
- package/src/revisions/PolylinePipeline.revise.js +54 -0
- package/src/revisions/PostProcessStageLibrary.revise.js +1143 -0
- package/src/revisions/Primitive.revise.js +83 -0
- package/src/revisions/Property.revise.js +37 -0
- package/src/revisions/Quaternion.revise.js +66 -0
- package/src/revisions/Rectangle.revise.js +570 -0
- package/src/revisions/SceneTransforms.revise.js +82 -0
- package/src/revisions/Spherical.revise.js +35 -0
- package/src/revisions/index.js +25 -0
- package/src/utils/Scratch.js +165 -0
- package/src/utils/computeCirclePositions.js +48 -0
- package/src/utils/computeCircleRadius.js +19 -0
- package/src/utils/computeModelMatrix.js +109 -0
- package/src/utils/computeStTransform.js +57 -0
- package/src/utils/createGeometry.js +114 -0
- package/src/utils/createPointCloudGeometry.js +79 -0
- package/src/utils/getGeometryInstanceAttributes.js +43 -0
- package/src/utils/getPositionFromTarget.js +29 -0
- package/src/utils/getRenderState.js +35 -0
- package/src/utils/index.js +13 -0
- package/src/utils/isColorMaterial.js +13 -0
- package/src/utils/isTranslucent.js +13 -0
- package/src/utils/resolveModelMatrixByFixedFrame.js +30 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./Geographic.js";
|
|
2
|
+
export * from "./GeometryInstanceAttributes.js";
|
|
3
|
+
export * from "./GeographicTransform.js";
|
|
4
|
+
export * from "./ModelMatrixTransforms.js";
|
|
5
|
+
export * from "./StTransforms.js";
|
|
6
|
+
export * from "./TranslationRotationScaleTransform.js";
|
|
7
|
+
export * from "./PropertyChangedListener.js";
|
|
8
|
+
export * from "./PropertyType.js";
|
package/src/index.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export * from "./parseAltitude.js";
|
|
2
|
+
export * from "./parseArcType.js";
|
|
3
|
+
export * from "./parseAttitudeToHeadingPitchRoll.js";
|
|
4
|
+
export * from "./parseAttitudeToMatrix3.js";
|
|
5
|
+
export * from "./parseAttitudeToQuaternion.js";
|
|
6
|
+
export * from "./parseCartographicsToPositions.js";
|
|
7
|
+
export * from "./parseCartographicToCartesian.js";
|
|
8
|
+
export * from "./parseClassificationType.js";
|
|
9
|
+
export * from "./parseClockRange.js";
|
|
10
|
+
export * from "./parseColorBlendMode.js";
|
|
11
|
+
export * from "./parseCornerType.js";
|
|
12
|
+
export * from "./parseCullFace.js";
|
|
13
|
+
export * from "./parseEulerToHeadingPitchRoll.js";
|
|
14
|
+
export * from "./parseEulerToQuaternion.js";
|
|
15
|
+
export * from "./parseGeographicsToPositions.js";
|
|
16
|
+
export * from "./parseGeographicToCartesian.js";
|
|
17
|
+
export * from "./parseHeading.js";
|
|
18
|
+
export * from "./parseHeightReference.js";
|
|
19
|
+
export * from "./parseHorizontalOrigin.js";
|
|
20
|
+
export * from "./parseLabelStyle.js";
|
|
21
|
+
export * from "./parseLatitude.js";
|
|
22
|
+
export * from "./parseLongitude.js";
|
|
23
|
+
export * from "./parsePitch.js";
|
|
24
|
+
export * from "./parseRoll.js";
|
|
25
|
+
export * from "./parseRotationToHeadingPitchRoll.js";
|
|
26
|
+
export * from "./parseRotationToMatrix3.js";
|
|
27
|
+
export * from "./parseRotationToQuaternion.js";
|
|
28
|
+
export * from "./parseShadowMode.js";
|
|
29
|
+
export * from "./parseToBoundingRectangle.js";
|
|
30
|
+
export * from "./parseToCartesian2.js";
|
|
31
|
+
export * from "./parseToCartesian3.js";
|
|
32
|
+
export * from "./parseToCartesian3Array.js";
|
|
33
|
+
export * from "./parseToCartesian4.js";
|
|
34
|
+
export * from "./parseToCartographic.js";
|
|
35
|
+
export * from "./parseToColor.js";
|
|
36
|
+
export * from "./parseToDistanceDisplayCondition.js";
|
|
37
|
+
export * from "./parseToGeographic.js";
|
|
38
|
+
export * from "./parseToHeadingPitchRange.js";
|
|
39
|
+
export * from "./parseToJulianDate.js";
|
|
40
|
+
export * from "./parseToNearFarScalar.js";
|
|
41
|
+
export * from "./parseToPlane.js";
|
|
42
|
+
export * from "./parseToPolygonHierarchy.js";
|
|
43
|
+
export * from "./parseToRange.js";
|
|
44
|
+
export * from "./parseToRectangle.js";
|
|
45
|
+
export * from "./parseToTimeInterval.js";
|
|
46
|
+
export * from "./parseVerticalOrigin.js";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import parseNumber from '@lijuhong1981/jsmath/src/parseNumber.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把数字、字符串或含高度信息的数组/对象解析为高度值。
|
|
5
|
+
* @param {number|string|Array|object} value 待解析的值,支持以第 2 个分量表示的数组或含 altitude/alt/height/Alt 字段的对象
|
|
6
|
+
* @returns {number} 解析后的高度值,无法解析时返回 0
|
|
7
|
+
*/
|
|
8
|
+
function parseAltitude(value) {
|
|
9
|
+
if (!value)
|
|
10
|
+
return 0;
|
|
11
|
+
else if (typeof value === 'number')
|
|
12
|
+
return value;
|
|
13
|
+
else if (typeof value === 'string')
|
|
14
|
+
return parseFloat(value);
|
|
15
|
+
else if (value[2] !== undefined)
|
|
16
|
+
return parseNumber(value[2]);
|
|
17
|
+
else if (value.altitude !== undefined)
|
|
18
|
+
return parseNumber(value.altitude);
|
|
19
|
+
else if (value.alt !== undefined)
|
|
20
|
+
return parseNumber(value.alt);
|
|
21
|
+
else if (value.height !== undefined)
|
|
22
|
+
return parseNumber(value.height);
|
|
23
|
+
else if (value.Alt !== undefined)
|
|
24
|
+
return parseNumber(value.Alt);
|
|
25
|
+
// else if (value.z !== undefined)
|
|
26
|
+
// return value.z;
|
|
27
|
+
else
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default parseAltitude;
|
|
32
|
+
export { parseAltitude, parseAltitude as parseHeight };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ArcType } from 'cesium';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link ArcType} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串支持 'rhumb'、'geodesic'、'none'
|
|
6
|
+
* @returns {ArcType} 解析后的 ArcType,无法识别时返回 ArcType.NONE
|
|
7
|
+
*/
|
|
8
|
+
function parseArcType(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
switch (value.toLowerCase()) {
|
|
11
|
+
case 'rhumb':
|
|
12
|
+
return ArcType.RHUMB;
|
|
13
|
+
case 'geodesic':
|
|
14
|
+
return ArcType.GEODESIC;
|
|
15
|
+
case 'none':
|
|
16
|
+
default:
|
|
17
|
+
return ArcType.NONE;
|
|
18
|
+
}
|
|
19
|
+
} else if (typeof value === 'number')
|
|
20
|
+
return value;
|
|
21
|
+
else
|
|
22
|
+
return ArcType.NONE;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default parseArcType;
|
|
26
|
+
export { parseArcType };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HeadingPitchRoll } from "cesium";
|
|
2
|
+
import parseHeading from "./parseHeading.js";
|
|
3
|
+
import parsePitch from "./parsePitch.js";
|
|
4
|
+
import parseRoll from "./parseRoll.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 把姿态值解析为 {@link HeadingPitchRoll} 对象(角度制)。
|
|
8
|
+
* @param {HeadingPitchRoll|Array|object|string|number} value 待解析的姿态值
|
|
9
|
+
* @param {HeadingPitchRoll} [result] 用于存储结果的可选对象
|
|
10
|
+
* @returns {HeadingPitchRoll} 解析后的 HeadingPitchRoll
|
|
11
|
+
*/
|
|
12
|
+
function parseAttitudeToHeadingPitchRoll(value, result) {
|
|
13
|
+
if (value instanceof HeadingPitchRoll) {
|
|
14
|
+
if (result && value !== result)
|
|
15
|
+
return HeadingPitchRoll.clone(value, result);
|
|
16
|
+
else
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
const heading = parseHeading(value);
|
|
20
|
+
const pitch = parsePitch(value);
|
|
21
|
+
const roll = parseRoll(value);
|
|
22
|
+
return HeadingPitchRoll.fromDegrees(heading, pitch, roll, result);
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default parseAttitudeToHeadingPitchRoll;
|
|
26
|
+
export { parseAttitudeToHeadingPitchRoll };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Matrix3 } from "cesium";
|
|
2
|
+
import Scratch from "../utils/Scratch.js";
|
|
3
|
+
import parseAttitudeToHeadingPitchRoll from "./parseAttitudeToHeadingPitchRoll.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 把姿态值解析为 3x3 旋转矩阵({@link Matrix3})。
|
|
7
|
+
* @param {HeadingPitchRoll|Array|object|string|number} attitude 待解析的姿态值
|
|
8
|
+
* @param {Matrix3} [result] 用于存储结果的可选对象
|
|
9
|
+
* @returns {Matrix3} 解析后的旋转矩阵
|
|
10
|
+
*/
|
|
11
|
+
function parseAttitudeToMatrix3(attitude, result) {
|
|
12
|
+
const hpr = parseAttitudeToHeadingPitchRoll(attitude, Scratch.scratchHeadingPitchRoll);
|
|
13
|
+
return Matrix3.fromHeadingPitchRoll(hpr, result);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export default parseAttitudeToMatrix3;
|
|
17
|
+
export { parseAttitudeToMatrix3 };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Quaternion, Transforms } from "cesium";
|
|
2
|
+
import Scratch from "../utils/Scratch.js";
|
|
3
|
+
import parseAttitudeToHeadingPitchRoll from "./parseAttitudeToHeadingPitchRoll.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 把姿态值解析为四元数({@link Quaternion}),可指定参考坐标系原点。
|
|
7
|
+
* @param {HeadingPitchRoll|Array|object|string|number} attitude 待解析的姿态值
|
|
8
|
+
* @param {Cartesian3} [origin] 参考坐标系原点(地心世界坐标),提供时按该点局部坐标系计算
|
|
9
|
+
* @param {Quaternion} [result] 用于存储结果的可选对象
|
|
10
|
+
* @returns {Quaternion} 解析后的四元数
|
|
11
|
+
*/
|
|
12
|
+
function parseAttitudeToQuaternion(attitude, origin, result) {
|
|
13
|
+
const hpr = parseAttitudeToHeadingPitchRoll(attitude, Scratch.scratchHeadingPitchRoll);
|
|
14
|
+
if (origin)
|
|
15
|
+
return Transforms.headingPitchRollQuaternion(origin, hpr, undefined, undefined, result)
|
|
16
|
+
else
|
|
17
|
+
return Quaternion.fromHeadingPitchRoll(hpr, result);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default parseAttitudeToQuaternion;
|
|
21
|
+
export { parseAttitudeToQuaternion };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Cartesian3 } from "cesium";
|
|
2
|
+
import { parseHeight } from "./parseAltitude.js";
|
|
3
|
+
import parseLatitude from "./parseLatitude.js";
|
|
4
|
+
import parseLongitude from "./parseLongitude.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 把地理坐标解析为笛卡尔坐标({@link Cartesian3}),输入按弧度处理。
|
|
8
|
+
* @param {Cartographic|Array|object} cartographic 待解析的地理坐标,含经度/纬度/高度信息
|
|
9
|
+
* @param {Cartesian3} [result] 用于存储结果的可选对象
|
|
10
|
+
* @param {Ellipsoid} [ellipsoid] 参考椭球体
|
|
11
|
+
* @returns {Cartesian3} 解析后的笛卡尔坐标
|
|
12
|
+
*/
|
|
13
|
+
function parseCartographicToCartesian(cartographic, result, ellipsoid) {
|
|
14
|
+
const longitude = parseLongitude(cartographic);
|
|
15
|
+
const latitude = parseLatitude(cartographic);
|
|
16
|
+
const height = parseHeight(cartographic);
|
|
17
|
+
return Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default parseCartographicToCartesian;
|
|
21
|
+
export { parseCartographicToCartesian };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Check } from "cesium";
|
|
2
|
+
import parseCartographicToCartesian from "./parseCartographicToCartesian.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 把地理坐标数组批量解析为笛卡尔坐标数组({@link Cartesian3}),输入按弧度处理。
|
|
6
|
+
* @param {Array} cartographics 地理坐标数组
|
|
7
|
+
* @param {Array} [result=[]] 用于存储结果的数组
|
|
8
|
+
* @param {Ellipsoid} [ellipsoid] 参考椭球体
|
|
9
|
+
* @returns {Array} 解析后的笛卡尔坐标数组
|
|
10
|
+
*/
|
|
11
|
+
function parseCartographicsToPositions(cartographics, result = [], ellipsoid) {
|
|
12
|
+
Check.typeOf.array('cartographics', cartographics);
|
|
13
|
+
for (let i = 0; i < cartographics.length; i++) {
|
|
14
|
+
result[i] = parseCartographicToCartesian(cartographics[i], result[i], ellipsoid);
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export default parseCartographicsToPositions;
|
|
20
|
+
export { parseCartographicsToPositions };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ClassificationType, DeveloperError } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link ClassificationType} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串包含 'terrain' 返回 TERRAIN、包含 '3dtile' 返回 CESIUM_3D_TILE
|
|
6
|
+
* @returns {ClassificationType} 解析后的 ClassificationType
|
|
7
|
+
*/
|
|
8
|
+
function parseClassificationType(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
value = value.toLowerCase();
|
|
11
|
+
if (value.match('terrain'))
|
|
12
|
+
return ClassificationType.TERRAIN;
|
|
13
|
+
else if (value.match('3dtile'))
|
|
14
|
+
return ClassificationType.CESIUM_3D_TILE;
|
|
15
|
+
else
|
|
16
|
+
return ClassificationType.BOTH;
|
|
17
|
+
} else if (typeof value === 'number')
|
|
18
|
+
return value;
|
|
19
|
+
else
|
|
20
|
+
throw new DeveloperError('unable parse the ' + value + ' to ClassificationType.');
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export default parseClassificationType;
|
|
24
|
+
export { parseClassificationType };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ClockRange, DeveloperError } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link ClockRange} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串支持 'clamped'、'loop_stop'、'unbounded'
|
|
6
|
+
* @returns {ClockRange} 解析后的 ClockRange
|
|
7
|
+
*/
|
|
8
|
+
function parseClockRange(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
switch (value.toLowerCase()) {
|
|
11
|
+
case 'clamped':
|
|
12
|
+
return ClockRange.CLAMPED;
|
|
13
|
+
case 'loop_stop':
|
|
14
|
+
return ClockRange.LOOP_STOP;
|
|
15
|
+
case 'unbounded':
|
|
16
|
+
default:
|
|
17
|
+
return ClockRange.UNBOUNDED;
|
|
18
|
+
}
|
|
19
|
+
} else if (typeof value === 'number')
|
|
20
|
+
return value;
|
|
21
|
+
else
|
|
22
|
+
throw new DeveloperError('unable parse the ' + value + ' to ClockRange.');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default parseClockRange;
|
|
26
|
+
export { parseClockRange };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ColorBlendMode, DeveloperError } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link ColorBlendMode} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串支持 'replace'、'mix'、'highlight'
|
|
6
|
+
* @returns {ColorBlendMode} 解析后的 ColorBlendMode
|
|
7
|
+
*/
|
|
8
|
+
function parseColorBlendMode(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
switch (value.toLowerCase()) {
|
|
11
|
+
case 'replace':
|
|
12
|
+
return ColorBlendMode.REPLACE;
|
|
13
|
+
case 'mix':
|
|
14
|
+
return ColorBlendMode.MIX;
|
|
15
|
+
case 'highlight':
|
|
16
|
+
default:
|
|
17
|
+
return ColorBlendMode.HIGHLIGHT;
|
|
18
|
+
}
|
|
19
|
+
} else if (typeof value === 'number')
|
|
20
|
+
return value;
|
|
21
|
+
else
|
|
22
|
+
throw new DeveloperError('unable parse the ' + value + ' to ColorBlendMode.');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default parseColorBlendMode;
|
|
26
|
+
export { parseColorBlendMode };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CornerType, DeveloperError } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link CornerType} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串包含 'bevel' 返回 BEVELED、包含 'miter' 返回 MITERED
|
|
6
|
+
* @returns {CornerType} 解析后的 CornerType
|
|
7
|
+
*/
|
|
8
|
+
function parseCornerType(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
value = value.toLowerCase();
|
|
11
|
+
if (value.match('bevel'))
|
|
12
|
+
return CornerType.BEVELED;
|
|
13
|
+
else if (value.match('miter'))
|
|
14
|
+
return CornerType.MITERED;
|
|
15
|
+
else
|
|
16
|
+
return CornerType.ROUNDED;
|
|
17
|
+
} else if (typeof value === 'number')
|
|
18
|
+
return value;
|
|
19
|
+
else
|
|
20
|
+
throw new DeveloperError('unable parse the ' + value + ' to CornerType.');
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export default parseCornerType;
|
|
24
|
+
export { parseCornerType };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CullFace } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link CullFace} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串支持 'front'、'back'、'front_and_back'、'none'
|
|
6
|
+
* @returns {CullFace} 解析后的 CullFace,无法识别时返回 CullFace.NONE
|
|
7
|
+
*/
|
|
8
|
+
function parseCullFace(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
switch (value.toLowerCase()) {
|
|
11
|
+
case 'front':
|
|
12
|
+
return CullFace.FRONT;
|
|
13
|
+
case 'back':
|
|
14
|
+
return CullFace.BACK;
|
|
15
|
+
case 'front_and_back':
|
|
16
|
+
return CullFace.FRONT_AND_BACK;
|
|
17
|
+
case 'none':
|
|
18
|
+
default:
|
|
19
|
+
return CullFace.NONE;
|
|
20
|
+
}
|
|
21
|
+
} else if (typeof value === 'number')
|
|
22
|
+
return value;
|
|
23
|
+
else
|
|
24
|
+
return CullFace.NONE;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default parseCullFace;
|
|
28
|
+
export { parseCullFace };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HeadingPitchRoll } from "cesium";
|
|
2
|
+
import Scratch from "../utils/Scratch.js";
|
|
3
|
+
import parseToCartesian3 from "./parseToCartesian3.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 把欧拉角解析为 {@link HeadingPitchRoll} 对象。
|
|
7
|
+
* @param {Array|object|string|number} value 待解析的欧拉角,按 [roll, pitch, yaw] 顺序
|
|
8
|
+
* @param {HeadingPitchRoll} [result] 用于存储结果的可选对象
|
|
9
|
+
* @param {boolean} [isDegrees] 输入是否为角度制,为 true 时按角度解析
|
|
10
|
+
* @returns {HeadingPitchRoll} 解析后的 HeadingPitchRoll
|
|
11
|
+
*/
|
|
12
|
+
function parseEulerToHeadingPitchRoll(value, result, isDegrees) {
|
|
13
|
+
value = parseToCartesian3(value, Scratch.scratchCartesian3, 0.0);
|
|
14
|
+
if (isDegrees)
|
|
15
|
+
return HeadingPitchRoll.fromDegrees(-value.z, -value.y, value.x, result);
|
|
16
|
+
else
|
|
17
|
+
return HeadingPitchRoll.fromRadians(-value.z, -value.y, value.x, result);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default parseEulerToHeadingPitchRoll;
|
|
21
|
+
export { parseEulerToHeadingPitchRoll };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Quaternion } from "cesium";
|
|
2
|
+
import Scratch from "../utils/Scratch.js";
|
|
3
|
+
import parseEulerToHeadingPitchRoll from "./parseEulerToHeadingPitchRoll.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 把欧拉角解析为四元数({@link Quaternion})。
|
|
7
|
+
* @param {Array|object|string|number} value 待解析的欧拉角,按 [roll, pitch, yaw] 顺序
|
|
8
|
+
* @param {Quaternion} [result] 用于存储结果的可选对象
|
|
9
|
+
* @param {boolean} [isDegrees] 输入是否为角度制,为 true 时按角度解析
|
|
10
|
+
* @returns {Quaternion} 解析后的四元数
|
|
11
|
+
*/
|
|
12
|
+
function parseEulerToQuaternion(value, result, isDegrees) {
|
|
13
|
+
const hpr = parseEulerToHeadingPitchRoll(value, Scratch.scratchHeadingPitchRoll, isDegrees);
|
|
14
|
+
return Quaternion.fromHeadingPitchRoll(hpr, result);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default parseEulerToQuaternion;
|
|
18
|
+
export { parseEulerToQuaternion };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Cartesian3 } from "cesium";
|
|
2
|
+
import parseAltitude from "./parseAltitude.js";
|
|
3
|
+
import parseLatitude from "./parseLatitude.js";
|
|
4
|
+
import parseLongitude from "./parseLongitude.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 把地理坐标解析为笛卡尔坐标({@link Cartesian3}),输入按经度/纬度角度制处理。
|
|
8
|
+
* @param {Array|object} geographic 待解析的地理坐标,含经度/纬度/高度信息
|
|
9
|
+
* @param {Cartesian3} [result] 用于存储结果的可选对象
|
|
10
|
+
* @param {Ellipsoid} [ellipsoid] 参考椭球体
|
|
11
|
+
* @returns {Cartesian3} 解析后的笛卡尔坐标
|
|
12
|
+
*/
|
|
13
|
+
function parseGeographicToCartesian(geographic, result, ellipsoid) {
|
|
14
|
+
const longitude = parseLongitude(geographic);
|
|
15
|
+
const latitude = parseLatitude(geographic);
|
|
16
|
+
const height = parseAltitude(geographic);
|
|
17
|
+
return Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default parseGeographicToCartesian;
|
|
21
|
+
export { parseGeographicToCartesian };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Check } from "cesium";
|
|
2
|
+
import parseGeographicToCartesian from "./parseGeographicToCartesian.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 把地理坐标数组批量解析为笛卡尔坐标数组({@link Cartesian3}),输入按角度制处理。
|
|
6
|
+
* @param {Array} geographics 地理坐标数组
|
|
7
|
+
* @param {Array} [result=[]] 用于存储结果的数组
|
|
8
|
+
* @param {Ellipsoid} [ellipsoid] 参考椭球体
|
|
9
|
+
* @returns {Array} 解析后的笛卡尔坐标数组
|
|
10
|
+
*/
|
|
11
|
+
function parseGeographicsToPositions(geographics, result = [], ellipsoid) {
|
|
12
|
+
Check.typeOf.array('geographics', geographics);
|
|
13
|
+
for (let i = 0; i < geographics.length; i++) {
|
|
14
|
+
result[i] = parseGeographicToCartesian(geographics[i], result[i], ellipsoid);
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export default parseGeographicsToPositions;
|
|
20
|
+
export { parseGeographicsToPositions };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 把数字、字符串或数组/对象解析为偏航角(heading)数值。
|
|
3
|
+
* @param {number|string|Array|object} value 待解析的值,支持第 0 个分量表示的数组或含 heading/yaw/z/Yaw 字段的对象
|
|
4
|
+
* @returns {number} 解析后的偏航角,无法解析时返回 0
|
|
5
|
+
*/
|
|
6
|
+
function parseHeading(value) {
|
|
7
|
+
if (value === undefined)
|
|
8
|
+
return 0;
|
|
9
|
+
else if (typeof value === 'number')
|
|
10
|
+
return value;
|
|
11
|
+
else if (typeof value === 'string')
|
|
12
|
+
return parseFloat(value);
|
|
13
|
+
else if (value[0] !== undefined)
|
|
14
|
+
return value[0];
|
|
15
|
+
else if (value.heading !== undefined)
|
|
16
|
+
return value.heading;
|
|
17
|
+
else if (value.yaw !== undefined)
|
|
18
|
+
return value.yaw;
|
|
19
|
+
else if (value.z !== undefined)
|
|
20
|
+
return value.z;
|
|
21
|
+
else if (value.Yaw !== undefined)
|
|
22
|
+
return value.Yaw;
|
|
23
|
+
else
|
|
24
|
+
return 0;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default parseHeading;
|
|
28
|
+
export { parseHeading };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { HeightReference } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link HeightReference} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串包含 'clamp' 返回 CLAMP_TO_GROUND、包含 'relative' 返回 RELATIVE_TO_GROUND
|
|
6
|
+
* @returns {HeightReference} 解析后的 HeightReference,无法识别时返回 HeightReference.NONE
|
|
7
|
+
*/
|
|
8
|
+
function parseHeightReference(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
value = value.toLowerCase();
|
|
11
|
+
if (value.match('clamp'))
|
|
12
|
+
return HeightReference.CLAMP_TO_GROUND;
|
|
13
|
+
else if (value.match('relative'))
|
|
14
|
+
return HeightReference.RELATIVE_TO_GROUND;
|
|
15
|
+
else
|
|
16
|
+
return HeightReference.NONE;
|
|
17
|
+
} else if (typeof value === 'number')
|
|
18
|
+
return value;
|
|
19
|
+
else
|
|
20
|
+
return HeightReference.NONE;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export default parseHeightReference;
|
|
24
|
+
export { parseHeightReference };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DeveloperError, HorizontalOrigin } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link HorizontalOrigin} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串支持 'left'、'right'、'center'
|
|
6
|
+
* @returns {HorizontalOrigin} 解析后的 HorizontalOrigin
|
|
7
|
+
*/
|
|
8
|
+
function parseHorizontalOrigin(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
switch (value.toLowerCase()) {
|
|
11
|
+
case 'left':
|
|
12
|
+
return HorizontalOrigin.LEFT;
|
|
13
|
+
case 'right':
|
|
14
|
+
return HorizontalOrigin.RIGHT;
|
|
15
|
+
case 'center':
|
|
16
|
+
default:
|
|
17
|
+
return HorizontalOrigin.CENTER;
|
|
18
|
+
}
|
|
19
|
+
} else if (typeof value === 'number')
|
|
20
|
+
return value;
|
|
21
|
+
else
|
|
22
|
+
throw new DeveloperError('unable parse the ' + value + ' to HorizontalOrigin.');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default parseHorizontalOrigin;
|
|
26
|
+
export { parseHorizontalOrigin };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DeveloperError, LabelStyle } from "cesium";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 把字符串或数字解析为 Cesium 的 {@link LabelStyle} 枚举值。
|
|
5
|
+
* @param {string|number} value 待解析的值,字符串支持 'outline'、'fill_and_outline'、'fill'
|
|
6
|
+
* @returns {LabelStyle} 解析后的 LabelStyle
|
|
7
|
+
*/
|
|
8
|
+
function parseLabelStyle(value) {
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
switch (value.toLowerCase()) {
|
|
11
|
+
case 'outline':
|
|
12
|
+
return LabelStyle.OUTLINE;
|
|
13
|
+
case 'fill_and_outline':
|
|
14
|
+
return LabelStyle.FILL_AND_OUTLINE;
|
|
15
|
+
case 'fill':
|
|
16
|
+
default:
|
|
17
|
+
return LabelStyle.FILL;
|
|
18
|
+
}
|
|
19
|
+
} else if (typeof value === 'number')
|
|
20
|
+
return value;
|
|
21
|
+
else
|
|
22
|
+
throw new DeveloperError('unable parse the ' + value + ' to LabelStyle.');
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default parseLabelStyle;
|
|
26
|
+
export { parseLabelStyle };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import parseNumber from '@lijuhong1981/jsmath/src/parseNumber.js';
|
|
2
|
+
import { Check } from "cesium";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 把数字、字符串或数组/对象解析为纬度数值。
|
|
6
|
+
* @param {number|string|Array|object} value 待解析的值,支持第 1 个分量表示的数组或含 latitude/lat/Lat 字段的对象
|
|
7
|
+
* @returns {number} 解析后的纬度值
|
|
8
|
+
*/
|
|
9
|
+
function parseLatitude(value) {
|
|
10
|
+
Check.defined('value', value);
|
|
11
|
+
if (typeof value === 'number')
|
|
12
|
+
return value;
|
|
13
|
+
else if (typeof value === 'string')
|
|
14
|
+
return parseFloat(value);
|
|
15
|
+
else if (value[1] !== undefined)
|
|
16
|
+
return parseNumber(value[1]);
|
|
17
|
+
else if (value.latitude !== undefined)
|
|
18
|
+
return parseNumber(value.latitude);
|
|
19
|
+
else if (value.lat !== undefined)
|
|
20
|
+
return parseNumber(value.lat);
|
|
21
|
+
else if (value.Lat !== undefined)
|
|
22
|
+
return parseNumber(value.Lat);
|
|
23
|
+
// else if (value.y !== undefined)
|
|
24
|
+
// return value.y;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default parseLatitude;
|
|
28
|
+
export { parseLatitude };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import parseNumber from '@lijuhong1981/jsmath/src/parseNumber.js';
|
|
2
|
+
import { Check } from "cesium";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 把数字、字符串或数组/对象解析为经度数值。
|
|
6
|
+
* @param {number|string|Array|object} value 待解析的值,支持第 0 个分量表示的数组或含 longitude/lng/Lon 字段的对象
|
|
7
|
+
* @returns {number} 解析后的经度值
|
|
8
|
+
*/
|
|
9
|
+
function parseLongitude(value) {
|
|
10
|
+
Check.defined('value', value);
|
|
11
|
+
if (typeof value === 'number')
|
|
12
|
+
return value;
|
|
13
|
+
else if (typeof value === 'string')
|
|
14
|
+
return parseFloat(value);
|
|
15
|
+
else if (value[0] !== undefined)
|
|
16
|
+
return parseNumber(value[0]);
|
|
17
|
+
else if (value.longitude !== undefined)
|
|
18
|
+
return parseNumber(value.longitude);
|
|
19
|
+
else if (value.lng !== undefined)
|
|
20
|
+
return parseNumber(value.lng);
|
|
21
|
+
else if (value.Lon !== undefined)
|
|
22
|
+
return parseNumber(value.Lon);
|
|
23
|
+
// else if (value.x !== undefined)
|
|
24
|
+
// return value.x;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default parseLongitude;
|
|
28
|
+
export { parseLongitude };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 把数字、字符串或数组/对象解析为俯仰角(pitch)数值。
|
|
3
|
+
* @param {number|string|Array|object} value 待解析的值,支持第 1 个分量表示的数组或含 pitch/y/Pitch 字段的对象
|
|
4
|
+
* @returns {number} 解析后的俯仰角,无法解析时返回 0
|
|
5
|
+
*/
|
|
6
|
+
function parsePitch(value) {
|
|
7
|
+
if (value === undefined)
|
|
8
|
+
return 0;
|
|
9
|
+
else if (typeof value === 'number')
|
|
10
|
+
return value;
|
|
11
|
+
else if (typeof value === 'string')
|
|
12
|
+
return parseFloat(value);
|
|
13
|
+
else if (value[1] !== undefined)
|
|
14
|
+
return value[1];
|
|
15
|
+
else if (value.pitch !== undefined)
|
|
16
|
+
return value.pitch;
|
|
17
|
+
else if (value.y !== undefined)
|
|
18
|
+
return value.y;
|
|
19
|
+
else if (value.Pitch !== undefined)
|
|
20
|
+
return value.Pitch;
|
|
21
|
+
else
|
|
22
|
+
return 0;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export default parsePitch;
|
|
26
|
+
export { parsePitch };
|