cesium加载3dtiles模型贴图到地图

  
  
<template>
 
    <div id="cesiumContainer">  </div>
</template>
  
<script>
var viewer;
export default {
  data() {
    return {
    
    }
  },

  mounted() {
    //天地图token
    let TDT_tk = "fb258b4c0bbf60ff7a0205b519ad9a96";
    //Cesium token
    let cesium_tk = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjMzEyYTYxYS1jNDVjLTQwNWQtOWMxMS00YTBkODA5ZWM5ZTAiLCJpZCI6MTA4MjEyLCJpYXQiOjE2NjMzMTI1Mzd9.wzgyyPRkywsre6aZ7HPP-w5UqfSnuPgJa7EuWjPqccc";
    //天地图影像
    let TDT_IMG_C = "http://{s}.tianditu.gov.cn/img_c/wmts?service=wmts&request=GetTile&version=1.0.0" +
      "&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
      "&style=default&format=tiles&tk=" + TDT_tk;

    //标注
    let TDT_CIA_C = "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=" + TDT_tk;

    // //初始页面加载
    Cesium.Ion.defaultAccessToken = cesium_tk;
    viewer = new Cesium.Viewer('cesiumContainer', {
      geocoder: false,   // 位置查找工具
      baseLayerPicker: false,// 图层选择器(地形影像服务)
      timeline: false, // 底部时间线
      homeButton: false,// 视角返回初始位置
      fullscreenButton: false, // 全屏
      animation: false,   // 左下角仪表盘(动画器件)
      sceneModePicker: false,// 选择视角的模式(球体、平铺、斜视平铺)
      navigationHelpButton: false, //导航帮助按钮
      requestRenderMode: true, //启用请求渲染模式
        scene3DOnly: false, //每个几何实例将只能以3D渲染以节省GPU内存
        sceneMode: 3, //初始场景模式 1 2D模式 2 2D循环模式 3 3D模式  Cesium.SceneMode
      imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
        url: TDT_IMG_C,
        layer: "tdtImg_c",
        style: "default",
        format: "tiles",
        // tileMatrixSetID: "c",
        subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
        tilingScheme: new Cesium.GeographicTilingScheme(),
        tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18"],
        maximumLevel: 18,
        show: false,
      
        tileMatrixSetID: 'w',
        
      })
    });

     //调用影响中文注记服务
    viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
      url: TDT_CIA_C,
      layer: "tdtImg_c",
      style: "default",
      format: "tiles",
      tileMatrixSetID: "c",
      subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
      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
    }));

    this.loadModelFun();
  },
  methods: {
    loadModelFun() {
      viewer._cesiumWidget._creditContainer.style.display = "none"; //去除版权信息
      let tileSetModel = new Cesium.Cesium3DTileset({ url: "/terra_pnts/tileset.json" , maximumScreenSpaceError: 2,
            maximumNumberOfLoadedTiles: 100000});
      // tileSetModel.readyPromise.then(tileset => {
      //   console.log("加载完成")
      //   viewer.scene.primitives.add(tileset);
      //   viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.5, -0.5, tileset.boundingSphere.radius * 1.0));
      // }).catch(function (error) {
      //   console.log(error);
      // });

   //控制模型的位置
   tileSetModel.readyPromise.then(function (palaceTileset) {
          viewer.scene.primitives.add(palaceTileset);
          var heightOffset = 2.0; //可以改变3Dtiles的高度
          var boundingSphere = palaceTileset.boundingSphere;
          var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
          var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
          var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
          var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
          palaceTileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
          viewer.zoomTo(palaceTileset, new Cesium.HeadingPitchRange(0.5, -0.2, palaceTileset.boundingSphere.radius *
              1.0));
      });

     },


  }
}
</script>
  
<style scoped>
#cesiumContainer {
  width: 100%;
  height: 100vh;
}

</style> 
  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值