当前位置:   article > 正文

cesium+threejs结合实现GIS+BIM大场景-1_javascript gis bim

javascript gis bim

概述

前面已经花费了许多内容去介绍BIM如何搭建了。其实我不太担心抄袭,让有一些节省成本的老板想自己搞引擎的。(你搞去~看是不是能节省成本!)

那我们一步步说。有源码放源码。搭不出来说明你基础不好了。

首先Cesium入门准备。先下载吧。从这里可以找到:

下载

Cesium中文网:cesium编程入门(二)环境搭建 | cesium中文网

当然官方最新版一定也要搞一个:CesiumJS – Cesium

此处插播广告。有BIM模型引擎的需求,可以找我们。

自研引擎产品试用,demo下载:

QModel-BIM模型浏览器

账号准备

Cesium可不像别的下载引入就能用。首先要去官方搞一个token

Cesium准备

注册:Cesium ion

新建应用App,生成Token,复制下来,

天地图准备

在中国,啥地图都不如用天地图,毕竟你得看一下,这是谁家的招牌!不过这个网站的信息不安全,小心你填写的学校信息,隔天就被骗子拿走了,说是京东客服,让老子在大学时期的啥手机号和证件还是什么的被拿去贷款老掉牙的套路,被我问候了他父母也没脾气。

说回正事,这里需要拿到一个Key,后面告诉你怎么用。

 开始工作

首先,你得把Cesium的HelloWord跑起来。我在Cesium中文下载的1.40版本Demo,然后在官方下载的1.8SDK替换进去了。照样可以跑。如何跑起来这个helloword?,看官方教程或者Cesium中文,你可以在上一级使用node server.js

由于原版的Cesium的Helloword,是使用acrgis的。当你替换完cesium的token之后,已经可以看见地球了,但是没有中文,看着有点不适。

放出整个使用天地图的代码吧。替换进去即可。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <!-- Use correct character set. -->
  5. <meta charset="utf-8">
  6. <!-- Tell IE to use the latest, best version. -->
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  8. <!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
  9. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
  10. <title>Hello World!</title>
  11. <script src="../Build/Cesium/Cesium.js"></script>
  12. <script src="http://www.qmodel.cn/js/jquery-3.2.1.min.js"></script>
  13. <style>
  14. @import url(../Build/Cesium/Widgets/widgets.css);
  15. html, body, #cesiumContainer {
  16. width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <div id="cesiumContainer"></div>
  22. <script>
  23. Cesium.Ion.defaultAccessToken='前面说的,Cesium的token';
  24. let viewerOption = {
  25. animation: false, // 控制场景动画的播放速度控件
  26. baseLayerPicker: false, // 底图切换控件
  27. fullscreenButton: false, // 全屏控件
  28. geocoder: false, // 地理位置查询定位控件
  29. homeButton: false, // 默认相机位置控件
  30. timeline: false, // 时间滚动条控件
  31. infoBox: false, //是否显示信息框
  32. sceneModePicker: false, //是否显示3D/2D选择器
  33. selectionIndicator: false, // 点击点绿色弹出 是否显示选取指示器组件
  34. sceneMode: Cesium.SceneMode.SCENE3D, //设定3维地图的默认场景模式:Cesium.SceneMode.SCENE2D、Cesium.SceneMode.SCENE3D、Cesium.SceneMode.MORPHING
  35. navigationHelpButton: false, // 默认的相机控制提示控件
  36. scene3DOnly: true, // 每个几何实例仅以3D渲染以节省GPU内存
  37. navigationInstructionsInitiallyVisible: false,
  38. showRenderLoopErrors: false, //是否显示渲染错误
  39. orderIndependentTranslucency:false,//设置背景透明
  40. errainProvider: Cesium.createWorldTerrain()
  41. };
  42. let viewer = new Cesium.Viewer("cesiumContainer", viewerOption);
  43. var TDU_Key = "前面说的,天地图的Key"//天地图申请的**
  44. //在线天地图影像服务地址(墨卡托投影)
  45. var TDT_IMG_W = "http://{s}.tianditu.gov.cn/img_w/wmts?service=wmts&request=GetTile&version=1.0.0" +
  46. "&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
  47. "&style=default&format=tiles&tk=" + TDU_Key;
  48. //在线天地图矢量地图服务(墨卡托投影)
  49. var TDT_VEC_W = "http://{s}.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0" +
  50. "&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
  51. "&style=default&format=tiles&tk=" + TDU_Key;
  52. //在线天地图影像中文标记服务(墨卡托投影)
  53. var TDT_CIA_W = "http://{s}.tianditu.gov.cn/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0" +
  54. "&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
  55. "&style=default.jpg&tk=" + TDU_Key
  56. //在线天地图矢量中文标记服务(墨卡托投影)
  57. var TDT_CVA_W = "http://{s}.tianditu.gov.cn/cva_w/wmts?service=wmts&request=GetTile&version=1.0.0" +
  58. "&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
  59. "&style=default.jpg&tk=" + TDU_Key;
  60. //此处插播广告。有BIM模型引擎的需求,可以找我们。官网http://www.qmodel.cn/
  61. let Img = new Cesium.WebMapTileServiceImageryProvider({ //调用影响中文服务
  62. url: TDT_VEC_W,//url地址,换影像还是矢量,随便你喜欢
  63. layer: "img_w", //WMTS请求的层名称
  64. style: "default",//WMTS请求的样式名称
  65. format: "tiles",//MIME类型,用于从服务器检索图像
  66. tileMatrixSetID: "GoogleMapsCompatible",// 用于WMTS请求的TileMatrixSet的标识符
  67. subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],//天地图8个服务器
  68. minimumLevel: 0,//最小层级
  69. maximumLevel: 18,//最大层级
  70. })
  71. viewer.imageryLayers.addImageryProvider(Img)//添加到cesium图层上
  72. let cia = new Cesium.WebMapTileServiceImageryProvider({ //调用影响中文注记服务
  73. url: TDT_CVA_W,
  74. layer: "cia_w",
  75. style: "default",
  76. format: "tiles",
  77. tileMatrixSetID: "GoogleMapsCompatible",
  78. subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],//天地图8个服务器
  79. minimumLevel: 0,
  80. maximumLevel: 18,
  81. })
  82. viewer.imageryLayers.addImageryProvider(cia)//添加到cesium图层上
  83. viewer.scene.globe.depthTestAgainstTerrain = !0;
  84. // 没有影像图层时地球的底色
  85. viewer.scene.globe.baseColor = Cesium.Color.BLACK;
  86. viewer.camera.setView({
  87. destination: new Cesium.Cartesian3(6788280.844465209, -81980750.10214644, 1061921.04004376)
  88. });
  89. viewer.camera.flyTo({
  90. // destination: new Cesium.Cartesian3.fromDegrees(116.435314, 40.960521, 10000000.0),
  91. // duration:8
  92. destination: new Cesium.Cartesian3.fromDegrees(116.435314, 22.960521, 2000.0),
  93. duration:18
  94. });
  95. </script>
  96. </body>
  97. </html>

来了来了。此处插播广告。有BIM模型引擎的需求,可以找我们。官网TestPage

换个效果再看下

今天先到这,下回继续。。。

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

闽ICP备14008679号