首页 / 浏览问题 / 三维GIS / 问题详情
地形影像不显示。
580EXP 2020年03月20日

用自己发布的地形影像做测试,在官网示例沙窗中调试运行完全正常,但用iserver 10.0.1自带的webgl开发包以及官网最新开发包测试都无法显示,麻烦帮忙找找原因。代码如下,可直接粘贴在官网示例中运行。

<!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>地形影像</title>
    <link href="../Build/Cesium/Widgets/widgets.css" rel="stylesheet">
    <link href="./css/pretty.css" rel="stylesheet">
    <script src="./js/jquery.min.js"></script>
     <script src="./js/spectrum.js"></script>
	<script type="text/javascript" src="./js/require.min.js" data-main="js/main"></script>
    <script src="./js/config.js"></script>
</head>
<body>
<div id="cesiumContainer"></div>
<div id='loadingbar' class="spinner">
    <div class="spinner-container container1">
        <div class="circle1"></div>
        <div class="circle2"></div>
        <div class="circle3"></div>
        <div class="circle4"></div>
    </div>
    <div class="spinner-container container2">
        <div class="circle1"></div>
        <div class="circle2"></div>
        <div class="circle3"></div>
        <div class="circle4"></div>
    </div>
    <div class="spinner-container container3">
        <div class="circle1"></div>
        <div class="circle2"></div>
        <div class="circle3"></div>
        <div class="circle4"></div>
    </div>
</div>

    
<script>
function onload(Cesium) {
    var viewer = new Cesium.Viewer('cesiumContainer',{
        //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
        terrainProvider : new Cesium.CesiumTerrainProvider({
            url : "http://47.114.77.210:8094/iserver/services/3D-scene1/rest/realspace/datas/Dem30_xsbn_2000@SWDX_1",
            isSct : true//地形服务源自SuperMap iServer发布时需设置isSct为true
        }),
    });
    //添加SuperMap iServer发布的影像服务
    var layer = viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
        url :"http://47.114.77.210:8094/iserver/services/3D-scene1/rest/realspace/datas/Dem30_xsbn_2000@SWDX"
    }));

    viewer.scene.camera.setView({
        destination : new Cesium.Cartesian3(-1175252.4120536193,5813068.471236246,2353500.311611918),
        orientation : {
            heading:1.0837374967571982,
            pitch:-0.3123415330246515,
            roll:2.779998453661392e-13
        }
    });
    $('#loadingbar').remove();
    $('#toolbar').show();
    
    //获取相机视角输出到控制台
        var handler1 = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
        handler1.setInputAction(function (movement) {
            console.log(viewer.scene.camera.position.x + "," + viewer.scene.camera.position.y + "," + viewer.scene.camera.position.z);//相机XYZ
            console.log("换行输出:"+"\n"+
                            "heading:" + viewer.scene.camera.heading + ","+"\n"+
                            "pitch:" + viewer.scene.camera.pitch + ","+"\n"+
                            "roll:" + viewer.scene.camera.roll
            );
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}
</script>
</body>
</html>

1个回答

您好,您发布的是三维的服务,应该用加载三维的方法添加var promise = scene.open(url)

2,560EXP 2020年03月20日
我的写法也没错啊。还有不喜欢用open,open有时候会出现场景里部分三维图层丢失的情况。
如果您要用这个方法(SuperMapImageryProvider)的话,要发布地图服务才可以使用的。
...