<script setup>
import { ref ,onMounted} from 'vue'
import * as Cesium from 'cesium';
import _ from "lodash";
import * as turf from 'turf';
let viewer = null,
  tempEntities = [],
  isAddPoint = false;
onMounted(()=>{
  initViewer();
})
  function initViewer(){
    //天地图影像
    const TDT_tk = "ea3530e6803b44025cfa81500eaae01f";
    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;
    const cesiumKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyNjI2ZjVjMS0zZTFjLTQ3MDAtYTZlZC02YWFjOWQwNzBjNjIiLCJpZCI6ODM1NTQsImlhdCI6MTY0NTY1NzYzM30.IPqS_sM-s_vzNnK0EAiTy6kpYP5RBYkuMgbqJtKQkPw";
    Cesium.Ion.defaultAccessToken = cesiumKey;
    
    viewer = new Cesium.Viewer("cesiumContainer",{
      geocoder: false, //位置查找
      homeButton: false, //视图返回初始位置
      sceneModePicker: true, //视角选择器
      baseLayerPicker:false,//底图选择器
      navigationHelpButton: false, //导航帮助按钮
      animation: false, //动画控制器
      creditContainer:document.createElement("div"),//版权显示
      timeline: false, //时间线
      fullscreenButton: false, //全屏控件
      vrButton: false,
      infoBox:false,
      selectionIndicator:false,
      // scene3DOnly: true, // 每个几何实例将只能以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", "19"],
      //     maximumLevel: 50,
      //     show: false
      // })
      // terrain: Cesium.Terrain.fromWorldTerrain({
      //   requestWaterMask: true,
      //   requestVertexNormals: true
      // })
    })
    // 添加Cesium ion的地形
    const terrain = new Cesium.Terrain(
      Cesium.CesiumTerrainProvider.fromIonAssetId(1),
    )
    viewer.scene.setTerrain(terrain);
    viewer.scene.globe.depthTestAgainstTerrain = false; // 图标被遮挡
    viewer.scene.fxaa = false;
    // 设置后当相机高度达到设置的最大和最小高度时将不再放大和缩小
    viewer.scene.screenSpaceCameraController.minimumZoomDistance = 0; // 相机的高度的最小值
    viewer.scene.screenSpaceCameraController.maximumZoomDistance = 20000000; // 相机高度的最大值

    // 关闭双击事件
    viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
      Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
    );
    // Fly the camera to San Francisco at the given longitude, latitude, and height.
    viewer.camera.flyTo({
      destination: Cesium.Cartesian3.fromDegrees(113.9641713, 23.3191755, 400),
      orientation: {
        heading: Cesium.Math.toRadians(0.0),
        pitch: Cesium.Math.toRadians(-15.0)
      }
    })
   
  }
</script>

<template>
  <div id="cesiumContainer"></div>
  <div class="menu-container">
        <el-row type="flex" :gutter="20">
          <el-col :span="24">
            <div class="grid-content bg-purple">
              <el-breadcrumb separator="/">
                <el-breadcrumb-item>cesium</el-breadcrumb-item>
                <el-breadcrumb-item>绘制功能</el-breadcrumb-item>
                <el-breadcrumb-item>点、线、面</el-breadcrumb-item>
              </el-breadcrumb>
            </div>
          </el-col>
        </el-row>
        <el-row type="flex" :gutter="20">
          <el-col :span="24">
            <div class="grid-content bg-purple">
              <cesiumComponent id="cesium" ref="refCesium" />
            </div>
          </el-col>
        </el-row>
        <el-row type="flex" :gutter="20">
          <el-col :span="24">
            <div class="grid-content bg-purple">
              <el-button type="primary" @click="drawTerrian()">获取视野内的地形</el-button>
              <el-button type="primary" @click="filterTerrian()">过滤地形</el-button>
              <el-button type="primary" @click="drawTin()">绘制TIN</el-button>
              <!-- <el-button type="primary" @click="draw('polyline')">绘制线</el-button>
              <el-button type="primary" @click="draw('polygon')">绘制面</el-button>
              <el-button type="primary" @click="clearDrawEntities">清空</el-button> -->
            </div>
          </el-col>
        </el-row>
      </div>
      <div
        id="tooltip"
        style="
          position: absolute;
          z-index: 999;
          background: rgba(0, 0, 0, 0.3);
          color: rgb(255, 255, 255);
          font-size: 12px;
          padding: 5px;
          border-radius: 5px;
        "
      > 
        左键点击选点,右键确定
      </div>
</template>

<style scoped>
#cesiumContainer{
  height: 100%;
  width: 100%;
}
.menu-container {
  position: absolute;
  top: 30px;
  left: 100px;
  z-index: 9999;
}
</style>