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; //表示取值失败
    }
  • 相关阅读:
    大数据总结
    spark_streaming_微批量处理
    spark_sql_解析器
    spark_sql_函数
    spark-sql-04-spark连接hive的几种方式
    spark-sql-04-on_hive
    spark-sql-04-hive
    CF550C Divisibility by Eight
    CF489C Given Length and Sum of Digits...
    CF550A Two Substrings
  • 原文地址:https://www.cnblogs.com/2008nmj/p/15662937.html
Copyright © 2011-2022 走看看