<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <!-- Include the CesiumJS JavaScript and CSS files -->
  <!--Cesium js文件引入 -->
<!--  <script src="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Cesium.js"></script>-->
<!--  <link href="https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Widgets/widgets.css" rel="stylesheet">-->
  <script src="./cesium/Cesium.js"></script>
  <script src="http://api.tianditu.gov.cn/cdn/plugins/cesium/cesiumTdt.js" ></script>
  <link href="./cesium/widgets.css" rel="stylesheet"/>
</head>
<style>
  *{
    margin: 0;
    padding: 0;
  }
  #cesiumContainer{
    width: 100vw;
    height: 100vh;
  }
</style>
<body>
<!-- 视图显示容器 -->
<div id="cesiumContainer"></div>
<script>
  var tiandituTk='e8a16137fd226a62a23cc7ba5c9c78ce';
  var subdomains=['0','1','2','3','4','5','6','7'];
  // 注册密钥: https://cesium.com/ion/tokens.
  // 账号密钥
  Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkOWQ0MGYwMy0yODUwLTQ1YzktOGM4OC02MTMwY2UyZjNlMzQiLCJpZCI6MTY0NTUwLCJpYXQiOjE2OTM4OTU1Mjd9.1cC0sSzyj79LZv0ILNCcl0Mabw6hl8TNngFNFr7H8f4';

  // 初始化容器 (容器:`cesiumContainer` )
  const viewer = new Cesium.Viewer('cesiumContainer', {
    // terrainProvider: Cesium.createWorldTerrain()
    animation:false,       //动画
    homeButton:true,       //home键
    geocoder:true,         //地址编码
    baseLayerPicker:false, //图层选择控件
    timeline:false,        //时间轴
    fullscreenButton:true, //全屏显示
    infoBox:true,         //点击要素之后浮窗
    sceneModePicker:true,  //投影方式  三维/二维
    navigationInstructionsInitiallyVisible:false, //导航指令
    navigationHelpButton:false,     //帮助信息
    selectionIndicator:false, // 选择
    imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
      //影像底图
      url: "http://t{s}.tianditu.com/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk="+tiandituTk,
      subdomains: subdomains,
      layer: "tdtImgLayer",
      style: "default",
      format: "image/jpeg",
      tileMatrixSetID: "GoogleMapsCompatible",//使用谷歌的瓦片切片方式
      show: true
    })
  });

  viewer._cesiumWidget._creditContainer.style.display = "none";  // 隐藏cesium ion
  viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
    //影像注记
    url: "http://t{s}.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk="+tiandituTk,
    subdomains: subdomains,
    layer: "tdtCiaLayer",
    style: "default",
    format: "image/jpeg",
    tileMatrixSetID: "GoogleMapsCompatible",
    show: true
  }));


  // 添加资源
  const buildingTileset = viewer.scene.primitives.add(Cesium.createOsmBuildings());
  // 视图缩放至加载资源位置
  viewer.camera.flyTo({
    //设置中心点,x,y,缩放等级
    destination: Cesium.Cartesian3.fromDegrees(119.60, 39.94, 178500),
    orientation: {
      heading :  Cesium.Math.toRadians(348.4202942851978),
      pitch : Cesium.Math.toRadians(-89.74026687972041),
      roll : Cesium.Math.toRadians(0)
    },
    complete:function callback() {
      // 定位完成之后的回调函数
    }
  });

  // 添加图标
  viewer.entities.add({
    id: 'id',
    position: Cesium.Cartesian3.fromDegrees(119.60, 39.94),
    billboard: {
      image: './operation-icon.png',
      height: 50,
      width: 50,
    }
  })

  const handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
  handler.setInputAction(function (movement) {
    let pick = viewer.scene.pick(movement.position);
    if (Cesium.defined(pick) && (pick.id.id)) {
      const div=document.createElement("div")
      div.id = pick.id.id;
      div.style.position = "absolute";
      div.style.width = "300px";
      div.style.height = "30px";
      div.style.background = "#00ffef66";
      div.style.border = "1px solid #08f8a7";
      div.innerText = `${pick.id.id}弹出`;
      viewer.cesiumWidget.container.appendChild(div);
      viewer.scene.postRender.addEventListener(() => {
        const canvasHeight = viewer.scene.canvas.height;
        const windowPosition = new Cesium.Cartesian2();
        Cesium.SceneTransforms.wgs84ToWindowCoordinates(
          viewer.scene,
          Cesium.Cartesian3.fromDegrees(119.60, 39.94),
          windowPosition
        );
        div.style.bottom = canvasHeight - windowPosition.y + 20 + "px";
        const elWidth = div.offsetWidth;
        div.style.left = windowPosition.x - elWidth / 2 + "px";
      });
    }
  }, Cesium.ScreenSpaceEventType.LEFT_CLICK);


</script>
</body>
</html>