基于JavaScript在Web端用Cesium加载自己的点云数据

1.上传数据至Cesium ion

    首先,我们需要登录Cesium ion官网,登录界面地址:Cesium ion

    登录成功后会进入这样的操作界面,点击My Assets能够看到我们上传的数据,上传数据可以点击Add data进行数据的上传。

 图1 主界面

 图2 我的资产

      点击Adjust Tileset Location可以在这里调整点云数据的位置。

图3 调整位置

       注意这里的ID号就是最后在Cesium里调用点云的凭据。

 2.代码编写

       在这里使用前端框架VUE进行代码的编写,话不多说,直接上代码!

//Cesium_Pointcloud.vue代码内容
<template>
  <el-main>
    <el-row>
      <el-col :span="24" class="colone">
        <el-row class="rowmap">
          <div id="RealMap" class="fullSize"></div>
        </el-row>
      </el-col>
    </el-row>
  </el-main>
</template>

<script>
export default {
  name: "RealMap",
  mounted() {
    mounted: {
      this.$nextTick(function () {
        //这里写入自己在Cesium ion里面的Token
        Cesium.Ion.defaultAccessToken =
          "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhOGUyYmQ3NC1jYmIzLTQ1OGYtYTMyNy04MzU0ODBkNzQ1NTEiLCJpZCI6NzY0NTgsImlhdCI6MTYzOTQ5MTUwMX0.Cc4wztmIqlr2MBzeijm8OVXMoptqFjTYEkB2svrY5hc";
        //定义Cesium地球
        var viewer = new Cesium.Viewer("RealMap",{
          geocoder: false,
          homeButton: true,
          sceneModePicker: false,
          baseLayerPicker: true,
          navigationHelpButton: false,
          animation: false,
          timeline: false,
          fullscreenButton: false,
          vrButton: false,
        });
        //这里定义要加入的点云数据,ID即为之前Cesium ion里资产数据的ID
        var tileset = viewer.scene.primitives.add(
          new Cesium.Cesium3DTileset({
            url: Cesium.IonResource.fromAssetId(1432554),
          })
        );

        tileset.readyPromise
          .then(function () {
            viewer.zoomTo(tileset);
            var extras = tileset.asset.extras;
            if (
              Cesium.defined(extras) &&
              Cesium.defined(extras.ion) &&
              Cesium.defined(extras.ion.defaultStyle)
            ) {
              tileset.style = new Cesium.Cesium3DTileStyle(
                extras.ion.defaultStyle
              );
            }
          })
          .otherwise(function (error) {
            console.log(error);
          });

        
      });
    }
  },
};
</script>
//样式
<style scoped>
.rowmap {
  background-color: white;
  border: 1px solid #dfe4ed;
  height: 900px !important;
  /*margin: 20px 10px 10px 10px !important;*/
  border: 1px solid #dfe4ed;
  box-shadow: 0px 0px 2px 2px lightgrey;
}
.rowaside {
  background-color: white;
  height: 380px !important;
  margin: 20px 10px 10px 10px !important;
  border: 2px solid #dfe4ed;
  box-shadow: 0px 0px 2px 2px lightgrey;
  line-height: 20px;
}
.coltwo {
  background-color: white;
  height: 828px !important;

  float: right;
}
.colone {
  background-color: white;
  height: 828px !important;
  /*border:1px solid #B3C0D1;*/
  float: left;
}
#RealMap {
  width: 100%;
  height: 100%;
  margin: 0 auto;
  /*width: 100%;*/
  /*height: calc(100vh);*/
  z-index: 1;
}
.el-aside {
  background-color: white;
  color: #333;
  text-align: center;
  line-height: 1000px;
  height: 1000px;
}
.el-main {
  /*background-color: #20a0ff;*/
  border: 1px solid #dfe4ed;
  background-color: white;
  height: 910px;
  text-align: center;
  line-height: 60px;
}

body > .el-container {
  margin-bottom: 40px;
}

.el-container:nth-child(5) .el-aside,
.el-container:nth-child(6) .el-aside {
  line-height: 260px;
}

.el-container:nth-child(7) .el-aside {
  line-height: 320px;
}
</style>

      同时记得在index.html中引入Cesium.js

<script src="https://cesium.com/downloads/cesiumjs/releases/1.89/Build/Cesium/Cesium.js"></script>

3.Web端展示

      这里省略了一些VUE里面的固有操作,只放入了一些核心代码,如需成功实现下图web端显示,还需加入一些VUE基本代码,这里不再赘述。下面是Web端展示结果:

 图4 Web端展示点云

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值