zoukankan      html  css  js  c++  java
  • Cesium如何获取贴地坐标

    1.51版新增的sampleHeight和clampToHeight函数虽然能获取3ditles数据指定位置的求交点,但是有一个问题,它只是以当前视角相机能看到的视野进行计算,视野范围之外,要么模型过于粗糙,要么就没有调度,很可能求取不到数值。

    参考:https://www.jianshu.com/p/a5d07bb47809

    /**
     * 获取坐标的 贴模型高度
     * opts支持:   是否异步 asyn:true  异步回调方法callback返回“新高度”和“原始的Cartographic坐标”
     */
    function getSurface3DTilesHeight(scene, position, opts) {
      opts = opts || {};
    
      //原始的Cartographic坐标
      opts.cartesian = opts.cartesian || Cesium.Cartographic.fromCartesian(position);
      var carto = opts.cartesian;
      var callback = opts.callback || opts.calback; //兼容不同参数名
    
      //是否异步求精确高度
      if (opts.asyn) {
        scene.clampToHeightMostDetailed([position], opts.objectsToExclude, 0.2).then(function (clampedPositions) {
          var clampedPt = clampedPositions[0];
          if (Cesium.defined(clampedPt)) {
            var cartiles = Cesium.Cartographic.fromCartesian(clampedPt);
            var heightTiles = cartiles.height;
            if (Cesium.defined(heightTiles) && heightTiles > -1000) {
              if (callback) callback(heightTiles, cartiles);
              return;
            }
          }
          //说明没在模型上,继续求地形上的高度
          getSurfaceTerrainHeight(scene, position, opts);
        });
      } else {
        //取贴模型高度
        var heightTiles = scene.sampleHeight(carto, opts.objectsToExclude, 0.2);
        if (Cesium.defined(heightTiles) && heightTiles > -1000) {
          if (callback) callback(heightTiles, carto);
          return heightTiles;
        }
      }
    
      return 0; //表示取值失败
    }
  • 相关阅读:
    php命令注入
    mysql事物
    安装php环境
    移除服务器缓存实例
    show user profile synchronization tools
    manual start user profile import
    JSON is undefined. Infopath Form People Picker in SharePoint 2013
    asp.net web 应用站点支持域账户登录
    Load sharepoint envirement by powershell
    sharepoint 2016 download
  • 原文地址:https://www.cnblogs.com/2008nmj/p/15662937.html
Copyright © 2011-2022 走看看