当前位置:   article > 正文

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

cesium加载点云数据

1.上传数据至Cesium ion

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

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

 图1 主界面

 图2 我的资产

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

图3 调整位置

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

 2.代码编写

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

  1. //Cesium_Pointcloud.vue代码内容
  2. <template>
  3. <el-main>
  4. <el-row>
  5. <el-col :span="24" class="colone">
  6. <el-row class="rowmap">
  7. <div id="RealMap" class="fullSize"></div>
  8. </el-row>
  9. </el-col>
  10. </el-row>
  11. </el-main>
  12. </template>
  13. <script>
  14. export default {
  15. name: "RealMap",
  16. mounted() {
  17. mounted: {
  18. this.$nextTick(function () {
  19. //这里写入自己在Cesium ion里面的Token
  20. Cesium.Ion.defaultAccessToken =
  21. "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhOGUyYmQ3NC1jYmIzLTQ1OGYtYTMyNy04MzU0ODBkNzQ1NTEiLCJpZCI6NzY0NTgsImlhdCI6MTYzOTQ5MTUwMX0.Cc4wztmIqlr2MBzeijm8OVXMoptqFjTYEkB2svrY5hc";
  22. //定义Cesium地球
  23. var viewer = new Cesium.Viewer("RealMap",{
  24. geocoder: false,
  25. homeButton: true,
  26. sceneModePicker: false,
  27. baseLayerPicker: true,
  28. navigationHelpButton: false,
  29. animation: false,
  30. timeline: false,
  31. fullscreenButton: false,
  32. vrButton: false,
  33. });
  34. //这里定义要加入的点云数据,ID即为之前Cesium ion里资产数据的ID
  35. var tileset = viewer.scene.primitives.add(
  36. new Cesium.Cesium3DTileset({
  37. url: Cesium.IonResource.fromAssetId(1432554),
  38. })
  39. );
  40. tileset.readyPromise
  41. .then(function () {
  42. viewer.zoomTo(tileset);
  43. var extras = tileset.asset.extras;
  44. if (
  45. Cesium.defined(extras) &&
  46. Cesium.defined(extras.ion) &&
  47. Cesium.defined(extras.ion.defaultStyle)
  48. ) {
  49. tileset.style = new Cesium.Cesium3DTileStyle(
  50. extras.ion.defaultStyle
  51. );
  52. }
  53. })
  54. .otherwise(function (error) {
  55. console.log(error);
  56. });
  57. });
  58. }
  59. },
  60. };
  61. </script>
  62. //样式
  63. <style scoped>
  64. .rowmap {
  65. background-color: white;
  66. border: 1px solid #dfe4ed;
  67. height: 900px !important;
  68. /*margin: 20px 10px 10px 10px !important;*/
  69. border: 1px solid #dfe4ed;
  70. box-shadow: 0px 0px 2px 2px lightgrey;
  71. }
  72. .rowaside {
  73. background-color: white;
  74. height: 380px !important;
  75. margin: 20px 10px 10px 10px !important;
  76. border: 2px solid #dfe4ed;
  77. box-shadow: 0px 0px 2px 2px lightgrey;
  78. line-height: 20px;
  79. }
  80. .coltwo {
  81. background-color: white;
  82. height: 828px !important;
  83. float: right;
  84. }
  85. .colone {
  86. background-color: white;
  87. height: 828px !important;
  88. /*border:1px solid #B3C0D1;*/
  89. float: left;
  90. }
  91. #RealMap {
  92. width: 100%;
  93. height: 100%;
  94. margin: 0 auto;
  95. /*width: 100%;*/
  96. /*height: calc(100vh);*/
  97. z-index: 1;
  98. }
  99. .el-aside {
  100. background-color: white;
  101. color: #333;
  102. text-align: center;
  103. line-height: 1000px;
  104. height: 1000px;
  105. }
  106. .el-main {
  107. /*background-color: #20a0ff;*/
  108. border: 1px solid #dfe4ed;
  109. background-color: white;
  110. height: 910px;
  111. text-align: center;
  112. line-height: 60px;
  113. }
  114. body > .el-container {
  115. margin-bottom: 40px;
  116. }
  117. .el-container:nth-child(5) .el-aside,
  118. .el-container:nth-child(6) .el-aside {
  119. line-height: 260px;
  120. }
  121. .el-container:nth-child(7) .el-aside {
  122. line-height: 320px;
  123. }
  124. </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端展示点云

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/220538
推荐阅读
  

闽ICP备14008679号