首页 / 浏览问题 / 云GIS / 问题详情
10i,webgl三维场景中地形图层无法显示
106EXP 2020年07月10日

使用产品:supermap-iserver-10.0.1-win64-zip

问题描述:桌面10i版本,端制作三维场景并切缓存,桌面端场景显示正常;通过iserevr 10i发布后,在iserver中webgl3D查看场景,场景无法显示出来;点击查看三维图层中的地形图层,其中参数:图层是否始终渲染为false;通过webgl客户端开发,浏览器加载,场景可以显示,但是地形图层不显示,想请教下是什么原因?谢谢!

问题图片:

桌面端场景

iserver查看场景:

iserver查看图层:

webgl客户端开发,浏览器加载:

1个回答

您好,如果只有地形不显示,您看下代码里isSct是不是为true,链接是加载地形的操作手册您参考一下。如果不是这个问题您可以把代码贴出来,我来帮您看看。

    var viewer = new Cesium.Viewer('cesiumContainer',{
        //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
        terrainProvider : new Cesium.CesiumTerrainProvider({
            url : YOUR.URL,
            isSct : true//地形服务源自SuperMap iServer发布时需设置isSct为true
        }),
    });

地形发布:http://support.supermap.com.cn:8090/webgl/examples/TopicDoc/LoadTerrain_OperateTopic.html

jjz
4,720EXP 2020年07月10日
建议您把图片里的ip打码。

我按照你的方式写进去了,场景中也还是没有显示出地形图层;另外,我记得之前用iserver9d时,直接open场景后地形图层就加载出来了;

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
    <title>test7页面</title>
    <link href="../Build/Cesium/Widgets/widgets.css" rel="stylesheet">
    <link href="./css/bootstrap.min.css" rel="stylesheet">
    <link href="./css/pretty.css" rel="stylesheet">
    <script src="./js/jquery.min.js"></script>
    <script src="./js/bootstrap.min.js"></script>
    <script src="./js/bootstrap-select.min.js"></script>
    <script src="./js/config.js"></script>
    <script type="text/javascript" src="./js/require.min.js" data-main="js/main"></script>
	
	<script type="text/javascript" src="./perjs/layerControl.js"></script>
    <style>
        
    </style>
</head>
<body class="loading">
<div id="cesiumContainer"></div>
<script>
	var viewer; 
	var scene;
    var canvas;
    var widget;

	function onload(Cesium) {
		// init方法
		function init(){
			console.log("init");	
			
			console.log(viewer.terrainProvider);
			
			ext_layerControl.addLayerByName("路网");
		}
		
	    viewer = new Cesium.Viewer('cesiumContainer',{
	    	navigation:false,
	    	infoBox:false,
        	selectionIndicator:false,
			//创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
			terrainProvider : new Cesium.CesiumTerrainProvider({
				url : "http://192.168.12.111:8090/iserver/services/3D-LanLiXiaoXue/rest/realspace/datas/gc_17@data",
				isSct : true//地形服务源自SuperMap iServer发布时需设置isSct为true
			})
        });
	    
	  	//加载影像底图
	    var tiandituLayer= new Cesium.WebMapTileServiceImageryProvider({
	        url: 'http://t0.tianditu.gov.cn/img_w/wmts?tk=4a00a1dc5387b8ed8adba3374bd87e5e',
	        layer:'img',
	        style:'default',
	        tileMatrixSetID:'w',
	        format:'tiles',
	        maximumLevel: 16
	    });
	    viewer.imageryLayers.addImageryProvider(tiandituLayer);	    
	    //加载影像注记
	    var labelLayer= new Cesium.WebMapTileServiceImageryProvider({
	        url: 'http://t0.tianditu.gov.cn/cia_w/wmts?tk=4a00a1dc5387b8ed8adba3374bd87e5e',  
	        layer:'cia', 
	        style:'default',
	        tileMatrixSetID:'w',
	        format:'tiles',
	        maximumLevel: 16 
	    });
	    viewer.imageryLayers.addImageryProvider(labelLayer); 
		
		// 矢量数据点击
	    viewer.pickEvent.addEventListener(function(feature){
	    	console.log("pickEvent",feature);
	    });
	    
	    scene = viewer.scene;
	    canvas = scene.canvas;
	    widget = viewer.cesiumWidget;
	    
	    // 随场景变动,动态修改div
		scene.postRender.addEventListener(function(){
			
	    });
	    
	    var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
	 	// 设置鼠标左键点击回调事件
	    handler.setInputAction(function(e){
	    	//console.log(scene.camera);
	    	let pick = viewer.scene.pick(e.position);
            if(Cesium.defined(pick)) {
            	console.log("true");
            	
            	console.log(pick);
                console.log(pick.id.id,pick.id.name,pick.id.type);
                
                // 移除测试
	            //viewer.entities.removeById(pick.id.id);
	            //viewer.entities.removeAll();
	            
	            
	            /* viewer. entities.remove(entity)//删除entity
				viewer. entities.removeById(id)//根据id删除entity
				viewer. entities.removeAll()//清空所有entity
				viewer. entities.getById(id)// 获取enetity
				viewer. entities.contains(entity)// 是否包含 */
            }else{
            	console.log("无选中实体!!!");
            }
            
            
	    },Cesium.ScreenSpaceEventType.LEFT_CLICK);
	    // 设置鼠标滑轮滚动事件
	    handler.setInputAction(function(e){
	        
	    },Cesium.ScreenSpaceEventType.WHEEL);
		
	    try{
	    	//添加S3M图层服务
	        var curlayer;
	        var promise = scene.open("http://192.168.12.111:8090/iserver/services/3D-LanLiXiaoXue/rest/realspace");
	        Cesium.when(promise,function(layers){
	            //设置相机位置、视角,便于观察场景
	            scene.camera.setView({
	                destination : new Cesium.Cartesian3.fromDegrees(120.02858549,30.348389000000001,1000),
	                orientation: {
	                    heading : 0, // east, default value is 0.0 (north)
	                    pitch : Cesium.Math.toRadians(-90),    // default value (looking down)
	                    roll : 0                             // default value
	                }
	                /* destination : new Cesium.Cartesian3(-1294071.81682246,5426342.538443363,3204671.5177213713),
	                orientation: {
	                    heading : 6.1888523443835,
	                    pitch : -0.7818287229882057,
	                    roll : 6.283185307179583
	                } */
	            });
	            
	            scene.globe.depthTestAgainstTerrain = false;
	            //scene.fxaa=false  //关闭快速抗锯齿

	         	init();
	            
	        },function(){
	            var title = '加载SCP失败,请检查网络连接状态或者url地址是否正确?';
	            widget.showErrorPanel(title, undefined, e);
	        });
	    }
	    catch(e){
	        if (widget._showRenderLoopErrors) {
	            var title = '渲染时发生错误,已停止渲染。';
	            widget.showErrorPanel(title, undefined, e);
	        }
	    }
	
	}
	
</script>
</body>
</html>

另外,您看方便加下qq2446705230吗,方便沟通

您这样,最简单的验证方式是去官网示例把地址修改成您自己的,看看地形会不会显示,如果还是显示不了有可能是数据或者WebGL的问题.

地形示例:http://support.supermap.com.cn:8090/webgl/examples/editor.html#terrainAndImagery

...