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];
      }
    
    
  • 相关阅读:
    高内聚 低耦合
    关系型数据库-三范式
    Excel 批量重命名照片
    完整性约束
    testCompile failed: multiple points
    Java日志体系
    Mac 修改HostName
    mac 配置/etc/profile重启后不生效
    mac命令行配置
    logback删除日志
  • 原文地址:https://www.cnblogs.com/telwanggs/p/11289681.html
Copyright © 2011-2022 走看看