supermap-2.5d-vr.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template >
  2. <div id="cesiumContainer" style="width: 100%; height: 100%;background: none;" >
  3. </div>
  4. </template>
  5. <script>
  6. let viewer;
  7. let road_name;
  8. let cacheData= {
  9. ProvinceRoad: "",
  10. CountyRoad: "",
  11. StateRoad: "",
  12. ShuiXi: "",
  13. XianJie: "",
  14. XiangZhenJie: "",
  15. Cun: "",
  16. };
  17. let promise;
  18. import Cookies from 'js-cookie'
  19. export default {
  20. name: 'supermap-2.5d-vr',
  21. data() {
  22. return {
  23. superMapRootUrl: null,
  24. layer: null,
  25. supermapUrls: [
  26. "/3D-sipingchangjing/rest/realspace/datas/dem@spyx4326",
  27. "/3D-sipingchangjing/rest/realspace/datas/siping_2m@spyx4326",//底图0
  28. "/3D-local3DCache-0608XinBanQingXieShiJing/rest/realspace/datas/Combine/config",//3D模型(二级图层)1
  29. "/3D-road_Name_S/rest/realspace",//路网名称6
  30. "ProvinceRoad_L@SiPing#1",//名称图层叠加7
  31. "CountyRoad_L@SiPing#1",//名称图层叠加8
  32. "StateRoad_L@SiPing#1",//名称图层叠加9
  33. "/map-SIPING/rest/maps/XianJie_XiangZhenJie",//乡镇街界限12
  34. "/3D-Name_he/rest/realspace",//乡镇街名称13
  35. "XianJie@SiPing#1",//县界名称14
  36. "XiangZhenJie@SiPing#2",//乡镇街名称15
  37. "Cun@SiPing#1",//村名称16
  38. ],
  39. }
  40. },
  41. created() {
  42. this.superMapRootUrl = Cookies.get('superMap.iServer');
  43. },
  44. mounted() {
  45. let that = this;
  46. //1.添加地形数据
  47. viewer = new Cesium.Viewer('cesiumContainer', {
  48. //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
  49. terrainProvider: new Cesium.CesiumTerrainProvider({
  50. url: that.superMapRootUrl + that.supermapUrls[0],
  51. invisibility: true
  52. }),
  53. infoBox: false,
  54. navigation: false
  55. }, {
  56. contextOptions: {
  57. msaaLevel: 4,
  58. requestWebgl2: true
  59. },
  60. orderIndependentTranslucency: false
  61. });
  62. viewer.cesiumWidget.creditContainer.style.display = "none" // 去掉超图logo水印
  63. //2.添加SuperMap iServer发布的影像服务
  64. that.layer = viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
  65. url: that.superMapRootUrl + that.supermapUrls[1],
  66. }));
  67. promise = viewer.scene.addS3MTilesLayerByScp( that.superMapRootUrl + that.supermapUrls[2])
  68. //飞行值坐标点,每3秒推进一级
  69. //heading-代表镜头左右方向,正值为右,负值为左
  70. //pitch-代表镜头上下方向,正值为上,负值为下.
  71. //roll-代表镜头左右倾斜,正值,向右倾斜,负值向左倾斜
  72. // heading : Cesium.Math.toRadians(346.4202942851978),
  73. // pitch : Cesium.Math.toRadians(-56.74026687972041),
  74. // roll : Cesium.Math.toRadians(0)
  75. setTimeout(function() {
  76. viewer.scene.camera.flyTo({
  77. //您这边设置一下漫游的目的地,也就是最后的经纬度和高度
  78. destination: new Cesium.Cartesian3.fromDegrees(124.35067376627266, 43.1645243760159, 1500), // 设置位置
  79. orientation: {
  80. heading: Cesium.Math.toRadians(346.4202942851978),
  81. pitch: Cesium.Math.toRadians(-56.74026687972041),
  82. roll: Cesium.Math.toRadians(0)
  83. },
  84. //控制漫游时间,单位是s
  85. duration:5,
  86. });
  87. }, 1000)
  88. //开始加载专题图等数据,8秒后开始执行
  89. setTimeout(function () {
  90. // 7.添加路网NAME
  91. let road_name_url = that.superMapRootUrl + that.supermapUrls[3];
  92. road_name = viewer.scene.open(road_name_url);
  93. cacheData.ProvinceRoad = that.supermapUrls[4]
  94. cacheData.CountyRoad = that.supermapUrls[5]
  95. cacheData.StateRoad = that.supermapUrls[6]
  96. road_name.then(function (layers) {
  97. let provinceRoad_textLayer = viewer.scene.layers.find(that.supermapUrls[4]);//文字图层
  98. let countyRoad_textLayer = viewer.scene.layers.find(that.supermapUrls[5]);//文字图层
  99. let stateRoad_textLayer = viewer.scene.layers.find(that.supermapUrls[6]);//文字图层
  100. //加载后隐藏
  101. provinceRoad_textLayer.visible = false;
  102. countyRoad_textLayer.visible = false;
  103. stateRoad_textLayer.visible = false;
  104. //关闭避让
  105. provinceRoad_textLayer.isOverlapDisplayed = true;
  106. countyRoad_textLayer.isOverlapDisplayed = true;
  107. stateRoad_textLayer.isOverlapDisplayed = true;
  108. });
  109. //9.添加县界和乡镇界
  110. that.layer_xianjie = viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
  111. url: that.superMapRootUrl + that.supermapUrls[7],
  112. }));
  113. //10.添加区县乡镇村名称
  114. let layer_xiangzhenjie_name = that.superMapRootUrl + that.supermapUrls[8];
  115. viewer.scene.open(layer_xiangzhenjie_name);
  116. cacheData.XianJie = that.supermapUrls[9]
  117. cacheData.XiangZhenJie = that.supermapUrls[10]
  118. cacheData.Cun = that.supermapUrls[11]
  119. road_name.then(function (layers) {
  120. let xianJie_textLayer = viewer.scene.layers.find(that.supermapUrls[9]);//区县文字图层
  121. let xiangZhenJie_textLayer = viewer.scene.layers.find(that.supermapUrls[10]);//乡镇文字图层
  122. let cun_textLayer = viewer.scene.layers.find(that.supermapUrls[11]);//村文字图层
  123. //关闭避让
  124. xianJie_textLayer.isOverlapDisplayed = true;
  125. xiangZhenJie_textLayer.isOverlapDisplayed = true;
  126. cun_textLayer.isOverlapDisplayed = true;
  127. });
  128. }, 2000);
  129. },
  130. }
  131. </script>
  132. <style rel="stylesheet/scss" lang="scss" scoped>
  133. .map-tit {
  134. position: absolute;
  135. top: 90px;
  136. left: 50%;
  137. transform: translatex(-50%);
  138. border: 1px solid #15519b;
  139. z-index: 9999;
  140. background: linear-gradient(rgba(4, 23, 62, 0.6), rgba(0, 28, 70, 0.6));
  141. min-width: 300px;
  142. .top-tit {
  143. width: 100%;
  144. height: 28px;
  145. line-height: 28px;
  146. display: flex;
  147. flex-direction: row;
  148. justify-content: space-between;
  149. background: #15519b80;
  150. padding: 0px 10px;
  151. align-items: center;
  152. i {
  153. color: #10ccff;
  154. font-size: 18px;
  155. text-shadow: 0px 0px 5px #23b3b3;
  156. ;
  157. }
  158. span img {
  159. display: block;
  160. width: 12px;
  161. height: 12px;
  162. color: #fff;
  163. cursor: pointer;
  164. }
  165. }
  166. .map-txt {
  167. padding: 10px 15px;
  168. color: #fff;
  169. line-height: 20px;
  170. font-size: 12px;
  171. .d-l-con {}
  172. }
  173. }
  174. .fade-enter-active,
  175. .fade-leave-active {
  176. transition: 1s;
  177. }
  178. .fade-enter,
  179. .fade-leave-to {
  180. opacity: 0;
  181. transform: translateY(-10rem);
  182. }
  183. .map-tit{
  184. .sj-icon-btn{
  185. display: block;
  186. margin: 10px auto 15px auto;
  187. padding: 0px 16px;
  188. font-size: 10px;
  189. height: 1.7rem;
  190. }
  191. }
  192. </style>