| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | 
                        - /**
 -  * @Author : Caven Chen
 -  */
 - 
 - import { Cesium } from '../../namespace'
 - import Position from '../position/Position'
 - 
 - const WMP = new Cesium.WebMercatorProjection()
 - 
 - class Transform {
 -   /**
 -    * Transforms Cartesian To WGS84
 -    * @param cartesian
 -    * @returns {Position}
 -    */
 -   static transformCartesianToWGS84(cartesian) {
 -     if (cartesian) {
 -       let cartographic =
 -         Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian)
 -       return new Position(
 -         Cesium.Math.toDegrees(cartographic?.longitude || 0),
 -         Cesium.Math.toDegrees(cartographic?.latitude || 0),
 -         cartographic.height || 0
 -       )
 -     }
 -     return new Position(0, 0)
 -   }
 - 
 -   /**
 -    * Transforms Cartographic To WGS84
 -    * @param cartographic
 -    * @returns {Position}
 -    */
 -   static transformCartographicToWGS84(cartographic) {
 -     if (cartographic) {
 -       return new Position(
 -         Cesium.Math.toDegrees(cartographic?.longitude || 0),
 -         Cesium.Math.toDegrees(cartographic?.latitude || 0),
 -         cartographic.height || 0
 -       )
 -     }
 -     return new Position(0, 0)
 -   }
 - 
 -   /**
 -    * Transforms WGS84 To Cartesian
 -    * @param position
 -    * @returns {Cartesian3}
 -    */
 -   static transformWGS84ToCartesian(position) {
 -     return position
 -       ? Cesium.Cartesian3.fromDegrees(
 -           position.lng,
 -           position.lat,
 -           position.alt,
 -           Cesium.Ellipsoid.WGS84
 -         )
 -       : Cesium.Cartesian3.ZERO
 -   }
 - 
 -   /**
 -    * Transforms WGS84 To Cartographic
 -    * @param position
 -    * @returns {Cartographic}
 -    */
 -   static transformWGS84ToCartographic(position) {
 -     return position
 -       ? Cesium.Cartographic.fromDegrees(
 -           position.lng,
 -           position.lat,
 -           position.alt
 -         )
 -       : Cesium.Cartographic.ZERO
 -   }
 - 
 -   /**
 -    * Transforms Cartesian Array To WGS84 Array
 -    * @param cartesianArr
 -    * @returns {*|*[]}
 -    */
 -   static transformCartesianArrayToWGS84Array(cartesianArr) {
 -     return cartesianArr
 -       ? cartesianArr.map((item) => this.transformCartesianToWGS84(item))
 -       : []
 -   }
 - 
 -   /**
 -    * Transforms WGS84 Array To Cartesian Array
 -    * @param WGS84Arr
 -    * @returns {*|*[]}
 -    */
 -   static transformWGS84ArrayToCartesianArray(WGS84Arr) {
 -     return WGS84Arr
 -       ? WGS84Arr.map((item) => this.transformWGS84ToCartesian(item))
 -       : []
 -   }
 - 
 -   /**
 -    * Transforms WGS84 To Mercator
 -    * @param position
 -    * @returns {Position}
 -    */
 -   static transformWGS84ToMercator(position) {
 -     let mp = WMP.project(
 -       Cesium.Cartographic.fromDegrees(position.lng, position.lat, position.alt)
 -     )
 -     return new Position(mp.x, mp.y, mp.z)
 -   }
 - 
 -   /**
 -    * Transforms Mercator To WGS84
 -    * @param position
 -    * @returns {Position}
 -    */
 -   static transformMercatorToWGS84(position) {
 -     let mp = WMP.unproject(
 -       new Cesium.Cartesian3(position.lng, position.lat, position.alt)
 -     )
 -     return new Position(
 -       Cesium.Math.toDegrees(mp.longitude),
 -       Cesium.Math.toDegrees(mp.latitude),
 -       mp.height
 -     )
 -   }
 - 
 -   /**
 -    * Transforms Window To WGS84
 -    * @param position
 -    * @param viewer
 -    * @returns {Position}
 -    */
 -   static transformWindowToWGS84(position, viewer) {
 -     let scene = viewer.scene
 -     let cartesian
 -     if (scene.mode === Cesium.SceneMode.SCENE3D) {
 -       let ray = scene.camera.getPickRay(position)
 -       cartesian = scene.globe.pick(ray, scene)
 -     } else {
 -       cartesian = scene.camera.pickEllipsoid(position, Cesium.Ellipsoid.WGS84)
 -     }
 -     return this.transformCartesianToWGS84(cartesian)
 -   }
 - 
 -   /**
 -    * Transforms WGS84 To Window
 -    * @param position
 -    * @param viewer
 -    * @returns {Cartesian2}
 -    */
 -   static transformWGS84ToWindow(position, viewer) {
 -     let scene = viewer.scene
 -     return Cesium.SceneTransforms.wgs84ToWindowCoordinates(
 -       scene,
 -       this.transformWGS84ToCartesian(position)
 -     )
 -   }
 - }
 - 
 - export default Transform
 
 
  |