vue3cesium加载天地图

// 引入服务(推荐)
<script src="http://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js"></script>
// 或者
npm i cesium-tdt --save
// 安装完将项目的根目录/node_modules/cesium-tdt/src/路径下的lib文件夹拷贝到自身项目的src下
// 引入
import './lib'
// 全部代码

<template>
  <main>
    <div style="width: 90vw;height: 90vh;" id="cesium"></div>
  </main>
</template>

<script setup>
import * as Cesium from 'cesium'
import {onMounted} from "vue";

// 服务负载子域
const subdomains=['0','1','2','3','4','5','6','7'];
// 天地图密钥
const tiandituTk='key';
// 加载地图
const esri=new Cesium.ArcGisMapServerImageryProvider({
  url:'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
})
// // 加载天地图
const tianditu=new Cesium.WebMapTileServiceImageryProvider({
  //影像底图
  url:"http://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0" +
      "&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
      "&style=default&format=tiles&tk=" +tiandituTk,
  layer: "tdtImg_c",
  style: "default",
  format: "tiles",
  tileMatrixSetID: "c",
  subdomains: subdomains,
  tilingScheme: new Cesium.GeographicTilingScheme(),
  tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
  maximumLevel: 50,
  show: false
})
const init =async () => {
  // cesium密钥
  Cesium.Ion.defaultAccessToken = 'key'
  window.viewer = new Cesium.Viewer('cesium', {
    baseLayerPicker: false, // 加载新地图时就地图隐藏,否则会影响新地图的加载
    // imageryProvider:esri, // 加载地图
    imageryProvider:tianditu, // 加载天地图
    animation: true, // 动画小组件
    timeline: false, // 时间轴
    fullscreenButton: false, // 全屏
    vrButton: false, // va模式
    geocoder: true, //是否显示地名查找控件
    homeButton: false, // 首页按钮
    infoBox: false, // 禁用沙箱,解决控制台报错
    sceneModePicker: false, // 2D3D模式切换
    scene3DOnly: true, // 3D场景
    selectionIndicator: false, // 选取指示器
    navigationHelpButton: false, // 帮助提示
    navigationInstructionsInitiallyVisible: false, // 导航说明
    // 加载3D地形数据
    terrainProvider: new Cesium.CesiumTerrainProvider({
      url: new Cesium.IonResource.fromAssetId(1),
      requestWaterMask: true, // 水面
      requestVertexNormals: true, // 山脉
    }),


  })
  window.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 420; // 最小距离
  // window.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 300; // 最大距离

  // 加载其他地图
  window.viewer.scene.primitives.add(
      await new Cesium.Cesium3DTileset({
        url: Cesium.IonResource.fromAssetId(96188)
      })
  );

  window.viewer.scene.postProcessStages.fxaa.enabled = false;
  window.viewer._cesiumWidget._creditContainer.style.display = 'none'
  window.viewer.scene.globe.enableLighting = false;

  window.viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
    //影像注记
    url: "http://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0" +
        "&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
        "&style=default&format=tiles&tk=" +tiandituTk,
    layer: "tdtImg_c",
    style: "default",
    format: "tiles",
    tileMatrixSetID: "c",
    subdomains: subdomains,
    tilingScheme: new Cesium.GeographicTilingScheme(),
    tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
    maximumLevel: 50,
    show: false
  }));

  // 亮度设置
  let stages = window.viewer.scene.postProcessStages;
  window.viewer.scene.brightness =  viewer.scene.brightness || stages.add(Cesium.PostProcessStageLibrary.createBrightnessStage());
  window.viewer.scene.brightness.enabled = true;
  window.viewer.scene.brightness.uniforms.brightness = Number(1);
}


onMounted(()=>{
  init()
})
</script>

<style scoped></style>

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
加载倾斜摄影需要用到Cesium的3DTiles功能,具体步骤如下: 1. 引入CesiumCesium中的3DTiles模块 ```html <script src="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Cesium.js"></script> <script src="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Widgets/widgets.css"></script> <script src="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/ThirdParty/Workers/require.js"></script> ``` 2. 初始化Cesium Viewer ```js var viewer = new Cesium.Viewer('cesiumContainer'); ``` 3. 加载倾斜摄影的3DTiles数据 ```js var tileset = new Cesium.Cesium3DTileset({ url: 'path/to/3dtiles', maximumScreenSpaceError: 1, maximumNumberOfLoadedTiles: 1000 }); viewer.scene.primitives.add(tileset); viewer.zoomTo(tileset); ``` 其中,`url`是倾斜摄影数据的路径,`maximumScreenSpaceError`是用来控制细节级别的参数,`maximumNumberOfLoadedTiles`是用来控制加载的瓦片数量的参数。 4. 配置Cesium的光照效果 ```js viewer.scene.globe.enableLighting = true; ``` 5. 配置Cesium的相机视角 ```js viewer.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(lon, lat, height), orientation: { heading: Cesium.Math.toRadians(heading), pitch: Cesium.Math.toRadians(pitch), roll: Cesium.Math.toRadians(roll) } }); ``` 其中,`lon`、`lat`和`height`是倾斜摄影的中心点经纬度和高度,`heading`、`pitch`和`roll`是相机的朝向参数。 6. 在Vue中使用Cesium 将以上代码放入Vue的`mounted`生命周期钩子中即可。注意,需要在Vue组件中引入Cesium和3DTiles模块。 ```js mounted() { var viewer = new Cesium.Viewer('cesiumContainer'); var tileset = new Cesium.Cesium3DTileset({ url: 'path/to/3dtiles', maximumScreenSpaceError: 1, maximumNumberOfLoadedTiles: 1000 }); viewer.scene.primitives.add(tileset); viewer.zoomTo(tileset); viewer.scene.globe.enableLighting = true; viewer.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(lon, lat, height), orientation: { heading: Cesium.Math.toRadians(heading), pitch: Cesium.Math.toRadians(pitch), roll: Cesium.Math.toRadians(roll) } }); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值