vue3cesium加载天地图

本文介绍了如何在Vue项目中通过Cesium库集成天地图和Esri服务,展示了如何加载和管理不同地图提供者,以及设置地图样式和交互选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 引入服务(推荐)
<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>

Vue2中使用Cesium加载天地图,你需要先安装必要的库并配置好地图资源。以下是大致步骤: 1. **安装依赖**: - 首先,确保已安装了VueCesiumJS和CesiumIon(Cesium的一个模块,用于访问在线瓦片),可以使用npm或yarn安装: ```bash npm install vue cesium cesium-ion # 或者 yarn add vue cesium cesium-ion ``` 2. **引入并注册组件**: 在Vue项目中创建一个新的文件(如`CesiumTerrain.vue`),并导入Cesium组件: ```vue <template> <div id="cesiumContainer"></div> </template> <script> import * as Cesium from &#39;cesium&#39;; export default { name: &#39;CesiumTerrain&#39;, mounted() { // 初始化Cesium环境 }, methods: { loadTiledMap() { // 加载天地图数据 } } }; </script> ``` 3. **加载天地图**: 使用CesiumIon从CDN获取天地图瓦片集,然后通过`TiledImageLayer`加载: ```js mounted() { const ion = new Cesium.Ion.default({ url: &#39;https://tms.openmap.cn/maps/&#39; }); ion.loadTileSet({ url: &#39;tms/tileset.json&#39;, credit: &#39;天地图&#39;, requestWatermark: true, }).then((result) => { const tileset = result.tileset; const layer = new Cesium.TiledImageLayer({ url: tileset.urlTemplate, minimumLevel: tileset.minLevel, maximumLevel: tileset.maxLevel, }); this.$refs.cesiumContainer.ionRenderer.addImageLayer(layer); }); }, ``` 这里假设`url`指向天地图的瓦片JSON文件,并设置了信用信息。 4. **添加到DOM**: 在模板中引用刚创建的组件并将它添加到页面上: ```html <div id="app"> <CesiumTerrain ref="cesiumContainer" /> </div> ``` 5. **注意**: - 确保你的应用已经启用了Cesium Ion(通常需要设置环境变量`ION_AUTH_KEY`)。 - 根据实际需求调整Cesium层的相关参数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值