131 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			HTML
		
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			HTML
		
	
	
| <!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>
 |