Cesium加载天地图在线卫星切片,中文标注,防止视角钻入底下,加载超图在线地形服务

本代码展示加载天地图服务卫星和中文标志

加载超图地形服务

解决视角钻入底下的问题

代码如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>超图加载在线地形数据stk</title>
		<link rel="stylesheet" href="../Build/Widgets/widgets.css" />
		<script type="text/javascript" src="../Build/Cesium.js" ></script>
	</head>
	<body>
		<div  id="cesiumContainer" style="width: 100%;height: 900px;background-color: rosybrown;"></div>
	</body>
	<script>
	    var url="https://www.supermapol.com/realspace/services/3D-stk_terrain/rest/realspace/datas/info/data/path";
		var vtxfTerrainProvider = new Cesium.CesiumTerrainProvider({
        url : url,
        requestVertexNormals : true
        });
	    var viewer = new Cesium.Viewer('cesiumContainer', {
	    terrainProvider: vtxfTerrainProvider,
	    imageryProvider : new Cesium.WebMapTileServiceImageryProvider({
				          url: 'http://t0.tianditu.com/img_w/wmts?',
				          layer: 'img',
				          style: 'default',
				          format: 'tiles',
				          tileMatrixSetID: 'w',
				          credit: new Cesium.Credit('天地图全球影像服务'),
				          maximumLevel: 18
		 })
		});
			  //全球影像中文注记服务
	   	viewer.imageryLayers.addImageryProvider(new Cesium.WebMapTileServiceImageryProvider({
		    url: "http://t0.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",
		    layer: "tdtAnnoLayer",
		    style: "default",
		    format: "image/jpeg",
		    tileMatrixSetID: "GoogleMapsCompatible",
		    show: false
		}));
		
		viewer.scene.preRender.addEventListener(this.undergroundMode);
		  //禁止摄像头入地
	    function  undergroundMode() {
	      let { viewer } = this;
	      if (viewer.scene.mode === Cesium.SceneMode.SCENE3D) {
	        //地下浏览
	        viewer.camera._suspendTerrainAdjustment = false;
	        viewer.scene.screenSpaceCameraController.enableCollisionDetection = true;
	        viewer.camera._adjustHeightForTerrain();
	      }
	    },
	</script>
</html>

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
要在Cesium加载地图的离线切片,你需要执行以下步骤: 1. 下载离线切片数据:首先,你需要从地图官网或其他渠道下载离线切片数据。确保下载的数据是符合地图切片规范的。 2. 将切片数据转换为Cesium可用的格式:Cesium使用的切片数据格式是TMS(Tiled Map Service)或WMTS(Web Map Tile Service)。如果你下载的切片数据不是这两种格式,你需要将其转换为相应格式。你可以使用GDAL或其他切片转换工具来完成这个步骤。 3. 创建Cesium Viewer对象:在Cesium中,你需要创建一个Viewer对象来显示地图。你可以使用以下代码创建一个基本的Viewer对象: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); ``` 这里的 'cesiumContainer' 是一个HTML元素的ID,它将用于显示Cesium地图。 4. 添加离线切片图层:接下来,你需要将离线切片图层添加到Cesium Viewer中。你可以使用以下代码将切片图层添加到Viewer中: ```javascript var offlineLayer = new Cesium.UrlTemplateImageryProvider({ url: 'path/to/your/tiles/{z}/{x}/{y}.png', }); viewer.imageryLayers.addImageryProvider(offlineLayer); ``` 这里的 'path/to/your/tiles/{z}/{x}/{y}.png' 是你离线切片数据的路径。确保将路径正确指向离线切片数据的存储位置。 5. 设置初始视图:最后,你可以使用以下代码设置地图的初始视图: ```javascript viewer.camera.setView({ destination : Cesium.Cartesian3.fromDegrees(lon, lat, height), orientation : { heading : Cesium.Math.toRadians(heading), pitch : Cesium.Math.toRadians(pitch), roll : Cesium.Math.toRadians(roll), } }); ``` 在上面的代码中,lon、lat和height是地图的经度、纬度和高度,heading、pitch和roll是地图视角。 完成这些步骤后,你应该能够在Cesium加载并显示地图的离线切片数据了。记得根据你的实际情况调整代码中的路径和初始视图参数。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值