zoukankan      html  css  js  c++  java
  • 坐标

    加事件

    事件柄

    this.drawhander = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);
    

    事件处理函数

     this.drawhander.setInputAction((movement) => {
       const position = this.viewerService.getPosition(movement.position, this.viewer);
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
    

    获取球心坐标系 的 坐标值 viewer.scene.pickPosition()

      /**
       * 获取经纬度值
       */
      getPosition(movement: {}, viewer?: any) {
        // const ray = this.viewer.camera.getPickRay(movement);
        // return this.viewer.scene.globe.pick(ray, this.viewer.scene);
        if (!this.viewer) this.viewer = viewer;
        if (!movement || !this.viewer) return;
        return this.viewer.scene.pickPosition(movement);
      }
    

    鼠标位置

    alt

    返回的球心坐标系 坐标值,其实就是笛卡尔坐标系下的值 (x,y,z),坐标原点在球心

    alt

    空间坐标(笛卡尔坐标系(x,y,z)) 转化为 要用的 经纬度坐标系(longitude,latitude,height)

      /**
       * 世界坐标转经纬度
       * @return 经纬度值
       */
      cartesianToLonLat(cartesian: {}) {
        const cartographic = Cesium.Cartographic.fromCartesian(cartesian);
        return this.cartographicToLonLat(cartographic);
      }
    
    
    
      /**
       * 球心坐标(笛卡尔坐标(x,y,z))转经纬度值
       * @return 经纬度值
       */
      cartographicToLonLat(cartographic: {
        height: number;
        latitude: number;
        longitude: number;
      }) {
        // 弧度 转 度
        const lon = Cesium.Math.toDegrees(cartographic.longitude);
        const lat = Cesium.Math.toDegrees(cartographic.latitude);
        const height = cartographic.height;
        return {
          lon,
          lat,
          height
        };
      }
    

    经纬度 反转化为 空间坐标系(笛卡尔坐标系)

      /**
       * 空间坐标 转 经纬度
       * @param cartesian 平面笛卡尔积坐标 position x,y,z
       * @returns [lon, lat] 经纬度数组
       */
      cartesian2LonLat(cartesian) {
        let cartographic: any;
        let lon: any;
        let lat: any;
        cartographic = Cesium.Cartographic.fromCartesian(cartesian);
        lon = Cesium.Math.toDegrees(cartographic.longitude);
        lat = Cesium.Math.toDegrees(cartographic.latitude);
        return [lon, lat];
      }
    
    
  • 相关阅读:
    module 和 component 的区别
    API、SDK、DLL有什么用?
    app基本控件
    PaaS是什么?
    js回调函数(callback)(转载)
    多语言 SEO
    axure rp 8.0
    整天看用户埋点数据,知道数据是咋来的吗?
    发现恶意ip大量访问 可使用命令进行封禁
    阿里云服务器迁移更改IP,导致网站挂掉
  • 原文地址:https://www.cnblogs.com/telwanggs/p/11289681.html
Copyright © 2011-2022 走看看