diff --git a/src/modules/history-track/Track.js b/src/modules/history-track/Track.js index c3fa51ef..13036951 100644 --- a/src/modules/history-track/Track.js +++ b/src/modules/history-track/Track.js @@ -67,6 +67,16 @@ class Track { ) this._state = State.INITIALIZED } + get currentDistance() { + return distance(Parse.parsePositions(this._pathPositions)) + } + get currentPosition() { + const [pos] = this._pathPositions.slice(-1) + return Parse.parsePosition(pos) + } + get allDistance() { + return distance(this._positions) + } get trackId() { return this._id @@ -217,12 +227,27 @@ class Track { this._positionIndex + 1 === this._positions.length ) this._positionIndex++ + // 无限循环 + if ( + this._options.loop && + this._positionIndex === this._positions.length + ) { + this._restart() + } } } } this._setCameraView(viewer, viewOption) } + /** + * 重头开始播放动画 + */ + _restart() { + this._startTime = Cesium.JulianDate.now() + this._resetTimeLine({}) + } + /** * Sets camera position * @param viewer diff --git a/src/modules/history-track/TrackController.js b/src/modules/history-track/TrackController.js index 05b7895f..edc095e2 100644 --- a/src/modules/history-track/TrackController.js +++ b/src/modules/history-track/TrackController.js @@ -232,6 +232,8 @@ class TrackController { this._activedTrack && (this._activedTrack.viewed = false) this._activedTrack = undefined this._viewer.off(SceneEventType.POST_RENDER, this._onPostRender, this) + this._viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY) + this._viewer.delegate.trackedEntity = undefined return this } } diff --git a/src/modules/material/property/circle/CircleBlurMaterialProperty.js b/src/modules/material/property/circle/CircleBlurMaterialProperty.js index 51a26b92..6c00d01e 100644 --- a/src/modules/material/property/circle/CircleBlurMaterialProperty.js +++ b/src/modules/material/property/circle/CircleBlurMaterialProperty.js @@ -17,7 +17,7 @@ class CircleBlurMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/circle/CircleDiffuseMaterialProperty.js b/src/modules/material/property/circle/CircleDiffuseMaterialProperty.js index 9a02130b..9d4eb20b 100644 --- a/src/modules/material/property/circle/CircleDiffuseMaterialProperty.js +++ b/src/modules/material/property/circle/CircleDiffuseMaterialProperty.js @@ -17,7 +17,7 @@ class CircleDiffuseMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/circle/CircleFadeMaterialProperty.js b/src/modules/material/property/circle/CircleFadeMaterialProperty.js index 2c362773..4999a6ff 100644 --- a/src/modules/material/property/circle/CircleFadeMaterialProperty.js +++ b/src/modules/material/property/circle/CircleFadeMaterialProperty.js @@ -19,7 +19,7 @@ class CircleFadeMaterialProperty extends MaterialProperty { result = {} } result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/circle/CirclePulseMaterialProperty.js b/src/modules/material/property/circle/CirclePulseMaterialProperty.js index 62d95414..8f0b6f98 100644 --- a/src/modules/material/property/circle/CirclePulseMaterialProperty.js +++ b/src/modules/material/property/circle/CirclePulseMaterialProperty.js @@ -19,7 +19,7 @@ class CirclePulseMaterialProperty extends MaterialProperty { result = {} } result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/circle/CircleScanMaterialProperty.js b/src/modules/material/property/circle/CircleScanMaterialProperty.js index 9b6cc4f9..2dc7b704 100644 --- a/src/modules/material/property/circle/CircleScanMaterialProperty.js +++ b/src/modules/material/property/circle/CircleScanMaterialProperty.js @@ -19,7 +19,7 @@ class CircleScanMaterialProperty extends MaterialProperty { result = {} } result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/circle/CircleSpiralMaterialProperty.js b/src/modules/material/property/circle/CircleSpiralMaterialProperty.js index bde792af..2dd117a8 100644 --- a/src/modules/material/property/circle/CircleSpiralMaterialProperty.js +++ b/src/modules/material/property/circle/CircleSpiralMaterialProperty.js @@ -19,7 +19,7 @@ class CircleSpiralMaterialProperty extends MaterialProperty { result = {} } result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/circle/CircleVaryMaterialProperty.js b/src/modules/material/property/circle/CircleVaryMaterialProperty.js index 6dcb1043..024c0975 100644 --- a/src/modules/material/property/circle/CircleVaryMaterialProperty.js +++ b/src/modules/material/property/circle/CircleVaryMaterialProperty.js @@ -17,7 +17,7 @@ class CircleVaryMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/circle/CircleWaveMaterialProperty.js b/src/modules/material/property/circle/CircleWaveMaterialProperty.js index 2694812d..b719a4c1 100644 --- a/src/modules/material/property/circle/CircleWaveMaterialProperty.js +++ b/src/modules/material/property/circle/CircleWaveMaterialProperty.js @@ -29,9 +29,9 @@ class CircleWaveMaterialProperty extends MaterialProperty { result = {} } result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed - result.count = this.count - result.gradient = this.gradient + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) + result.count = Cesium.Property.getValueOrUndefined(this._count, time) + result.gradient = Cesium.Property.getValueOrUndefined(this._gradient, time) return result } diff --git a/src/modules/material/property/ellipsoid/EllipsoidElectricMaterialProperty.js b/src/modules/material/property/ellipsoid/EllipsoidElectricMaterialProperty.js index b873f2f8..57fe2b90 100644 --- a/src/modules/material/property/ellipsoid/EllipsoidElectricMaterialProperty.js +++ b/src/modules/material/property/ellipsoid/EllipsoidElectricMaterialProperty.js @@ -17,7 +17,7 @@ class EllipsoidElectricMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/ellipsoid/EllipsoidTrailMaterialProperty.js b/src/modules/material/property/ellipsoid/EllipsoidTrailMaterialProperty.js index f5dfa6dd..78b1ca89 100644 --- a/src/modules/material/property/ellipsoid/EllipsoidTrailMaterialProperty.js +++ b/src/modules/material/property/ellipsoid/EllipsoidTrailMaterialProperty.js @@ -17,7 +17,7 @@ class EllipsoidTrailMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/polyline/PolylineFlickerMaterialProperty.js b/src/modules/material/property/polyline/PolylineFlickerMaterialProperty.js index 28749d63..422fd41c 100644 --- a/src/modules/material/property/polyline/PolylineFlickerMaterialProperty.js +++ b/src/modules/material/property/polyline/PolylineFlickerMaterialProperty.js @@ -19,7 +19,7 @@ class PolylineFlickerMaterialProperty extends MaterialProperty { result = {} } result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/polyline/PolylineFlowMaterialProperty.js b/src/modules/material/property/polyline/PolylineFlowMaterialProperty.js index f9793f25..691d86d5 100644 --- a/src/modules/material/property/polyline/PolylineFlowMaterialProperty.js +++ b/src/modules/material/property/polyline/PolylineFlowMaterialProperty.js @@ -25,9 +25,9 @@ class PolylineFlowMaterialProperty extends MaterialProperty { result = {} } result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed - result.percent = this._percent - result.gradient = this._gradient + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) + result.percent = Cesium.Property.getValueOrUndefined(this._percent, time) + result.gradient = Cesium.Property.getValueOrUndefined(this._gradient, time) return result } diff --git a/src/modules/material/property/polyline/PolylineImageTrailMaterialProperty.js b/src/modules/material/property/polyline/PolylineImageTrailMaterialProperty.js index 52b5c3cc..7a6e6e43 100644 --- a/src/modules/material/property/polyline/PolylineImageTrailMaterialProperty.js +++ b/src/modules/material/property/polyline/PolylineImageTrailMaterialProperty.js @@ -30,7 +30,7 @@ class PolylineImageTrailMaterialProperty extends MaterialProperty { result.color = Cesium.Property.getValueOrUndefined(this._color, time) result.image = Cesium.Property.getValueOrUndefined(this._image, time) result.repeat = Cesium.Property.getValueOrUndefined(this._repeat, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/polyline/PolylineLightingTrailMaterialProperty.js b/src/modules/material/property/polyline/PolylineLightingTrailMaterialProperty.js index 9bf98a11..5865ff1f 100644 --- a/src/modules/material/property/polyline/PolylineLightingTrailMaterialProperty.js +++ b/src/modules/material/property/polyline/PolylineLightingTrailMaterialProperty.js @@ -24,7 +24,7 @@ class PolylineLightingTrailMaterialProperty extends MaterialProperty { } result.color = Cesium.Property.getValueOrUndefined(this._color, time) result.image = Cesium.Property.getValueOrUndefined(this._image, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/radar/RadarLineMaterialProperty.js b/src/modules/material/property/radar/RadarLineMaterialProperty.js index c8fa01a2..d84c0696 100644 --- a/src/modules/material/property/radar/RadarLineMaterialProperty.js +++ b/src/modules/material/property/radar/RadarLineMaterialProperty.js @@ -17,7 +17,7 @@ class RadarLineMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/radar/RadarSweepMaterialProperty.js b/src/modules/material/property/radar/RadarSweepMaterialProperty.js index 0134fd6d..942f8440 100644 --- a/src/modules/material/property/radar/RadarSweepMaterialProperty.js +++ b/src/modules/material/property/radar/RadarSweepMaterialProperty.js @@ -17,7 +17,7 @@ class RadarSweepMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/radar/RadarWaveMaterialProperty.js b/src/modules/material/property/radar/RadarWaveMaterialProperty.js index a9092708..4dd34356 100644 --- a/src/modules/material/property/radar/RadarWaveMaterialProperty.js +++ b/src/modules/material/property/radar/RadarWaveMaterialProperty.js @@ -17,7 +17,7 @@ class RadarWaveMaterialProperty extends MaterialProperty { getValue(time, result) { result = Cesium.defaultValue(result, {}) result.color = Cesium.Property.getValueOrUndefined(this._color, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/wall/WallImageTrailMaterialProperty.js b/src/modules/material/property/wall/WallImageTrailMaterialProperty.js index 3c5a12c4..bcefeea2 100644 --- a/src/modules/material/property/wall/WallImageTrailMaterialProperty.js +++ b/src/modules/material/property/wall/WallImageTrailMaterialProperty.js @@ -28,7 +28,7 @@ class WallImageTrailMaterialProperty extends MaterialProperty { result.color = Cesium.Property.getValueOrUndefined(this._color, time) result.image = Cesium.Property.getValueOrUndefined(this._image, time) result.repeat = Cesium.Property.getValueOrUndefined(this._repeat, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/wall/WallLineTrailMaterialProperty.js b/src/modules/material/property/wall/WallLineTrailMaterialProperty.js index 5b9eb03f..64abb156 100644 --- a/src/modules/material/property/wall/WallLineTrailMaterialProperty.js +++ b/src/modules/material/property/wall/WallLineTrailMaterialProperty.js @@ -31,7 +31,7 @@ class WallLineTrailMaterialProperty extends MaterialProperty { result.color = Cesium.Property.getValueOrUndefined(this._color, time) result.image = Cesium.Property.getValueOrUndefined(this._image, time) result.repeat = Cesium.Property.getValueOrUndefined(this._repeat, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/material/property/wall/WallTrailMaterialProperty.js b/src/modules/material/property/wall/WallTrailMaterialProperty.js index 4119f278..934e3462 100644 --- a/src/modules/material/property/wall/WallTrailMaterialProperty.js +++ b/src/modules/material/property/wall/WallTrailMaterialProperty.js @@ -24,7 +24,7 @@ class WallTrailMaterialProperty extends MaterialProperty { } result.color = Cesium.Property.getValueOrUndefined(this._color, time) result.image = Cesium.Property.getValueOrUndefined(this._image, time) - result.speed = this._speed + result.speed = Cesium.Property.getValueOrUndefined(this._speed, time) return result } diff --git a/src/modules/math/midCartesian.js b/src/modules/math/midCartesian.js index e6f7a81f..680ee99c 100644 --- a/src/modules/math/midCartesian.js +++ b/src/modules/math/midCartesian.js @@ -5,8 +5,5 @@ import { Cesium } from '../../namespace' export default function midCartesian(start, end) { - let c1 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(start) - let c2 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(end) - let cm = new Cesium.EllipsoidGeodesic(c1, c2).interpolateUsingFraction(0.5) - return Cesium.Ellipsoid.WGS84.cartographicToCartesian(cm) + return Cesium.Cartesian3.midpoint(start, end, new Cesium.Cartesian3()) } diff --git a/src/modules/measure/draw/DrawPolygon.js b/src/modules/measure/draw/DrawPolygon.js index d36a6e56..162a60d3 100644 --- a/src/modules/measure/draw/DrawPolygon.js +++ b/src/modules/measure/draw/DrawPolygon.js @@ -22,7 +22,9 @@ class DrawPolygon extends Draw { ...this._style, hierarchy: new Cesium.CallbackProperty(() => { if (this._positions.length > 2) { - return new Cesium.PolygonHierarchy(this._positions) + return new Cesium.PolygonHierarchy( + this._positions.map((item) => item.clone()) + ) } else { return null } diff --git a/src/modules/measure/type/DistanceSurface.js b/src/modules/measure/type/DistanceSurface.js index 162b7f84..c361bb24 100644 --- a/src/modules/measure/type/DistanceSurface.js +++ b/src/modules/measure/type/DistanceSurface.js @@ -108,10 +108,6 @@ class DistanceSurface extends MeasureBase { */ start(measure, options) { this._startHook(measure, options) - this._startLabel.label.heightReference = - Cesium.HeightReference.CLAMP_TO_GROUND - this._resultLabel.label.heightReference = - Cesium.HeightReference.CLAMP_TO_GROUND new DrawPolyline({ material: options.material || Cesium.Color.YELLOW.withAlpha(0.6), depthFailMaterial: