cesium 自動采集3dtiles 上的點位高度


 

 

效果如下:

 

這個是官方案例的截圖

有時候我們需要的場景是 在地圖上標點,如果有 點位上有 傾斜攝影的建築, 希望點位標在建築的頂端,

官方案例是 設置2個位置,然后以偏移的方式獲取 30個點的坐標,然后 標點連線。

官方代碼:

function sampleHeights() {
  viewer.entities.removeAll();
  // 設置初始的2個點
  var cartesian1 = new Cesium.Cartesian3(
    1216390.063324395,
    -4736314.814479433,
    4081341.9787972216
  );
  var cartesian2 = new Cesium.Cartesian3(
    1216329.5413318684,
    -4736272.029009798,
    4081407.9342479417
  );
  // 通過偏移的方式 獲取30個點,這30個點在一條直線上
  var count = 30;
  var cartesians = new Array(count);
  for (var i = 0; i < count; ++i) {
    var offset = i / (count - 1);
    cartesians[i] = Cesium.Cartesian3.lerp(
      cartesian1,
      cartesian2,
      offset,
      new Cesium.Cartesian3()
    );
  }
  // 加載點列表采集高度
  scene
    .clampToHeightMostDetailed(cartesians)
    .then(function (clampedCartesians) {
      // 添加點
      for (var i = 0; i < count; ++i) {
        viewer.entities.add({
          position: clampedCartesians[i],
          ellipsoid: {
            radii: new Cesium.Cartesian3(0.2, 0.2, 0.2),
            material: Cesium.Color.RED,
          },
        });
      }
      // 連線
      viewer.entities.add({
        polyline: {
          positions: clampedCartesians,
          arcType: Cesium.ArcType.NONE,
          width: 2,
          material: new Cesium.PolylineOutlineMaterialProperty({
            color: Cesium.Color.YELLOW,
          }),
          depthFailMaterial: new Cesium.PolylineOutlineMaterialProperty(
            {
              color: Cesium.Color.YELLOW,
            }
          ),
        },
      });
    });
}

 

代碼如下

// 先獲取迪卡坐標
let cartesians = [];
let start = Cesium.Cartesian3.fromDegrees(x, y, 0);
cartesians.push(start);
// 該方法在加載坐標時,會自動采集該點位的 3dtiles 高度,然后返回
viewer.scene
      .clampToHeightMostDetailed(cartesians)
      .then(function (clampedCartesians) {
      // clampedCartesians  就是返回有高度的坐標
      // viever.entities.add(); 然后就可以添加你自己的數據
});

 

需要注意的是,  clampToHeightMostDetailed 采集傾斜攝影的高度 需要等 傾斜攝影加載完成之后,才會返回數據,如果傾斜攝像加載很慢,這個過程需要很久,

有的點位沒在傾斜攝影上面,返回 undefined, 對於這些點位,需要做特殊處理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM