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; //表示取值失败
    }
  • 相关阅读:
    关于安卓9patch图片的探究
    android中系统时间
    android中的对话框
    swing界面刷新问题
    android中的xml解析全解
    android中listView下拉刷新
    次小生成树(poj 1679)
    poj 2312(bfs+priority_queue)
    poj 2060(最小路径覆盖)
    poj 1734 (最小环)
  • 原文地址:https://www.cnblogs.com/2008nmj/p/15662937.html
Copyright © 2011-2022 走看看