首页 / 浏览问题 / 三维GIS / 问题详情
webgl调用场景,透明度等参数消失
63EXP 2018年05月18日

数据:南城矢量数据、影像地形数据

使用产品:idesktop 8C、iserver

问题:在idesktop中,已经设置了场景的可见高度和透明度等参数(第一张图),但是在前端调用发布的场景服务时,可见高度和透明度等参数都消失(第二张图)。请问这是什么原因造成的?

1个回答

您好,您在桌面设置的这些风格属性,是保存到工作空间里面的,没有保存到数据里面,前端加载只读数据,不读工作空间,所以这些风格属性需要在前端重新设置。
5,985EXP 2018年05月18日
前端怎么设置呢,有没有相关资料呢

ImageryLayer.transperantBackColor设置透明色,S3MTilesLayer.maxVisibleAltitude设置图层可见高度。

API链接http://support.supermap.com.cn:8090/webgl/Build/Documentation/index.html

十分感谢
请问S3MTilesLayer.maxVisibleAltitude可以实现对天地图,影像的控制可见高度吗?
不能,S3MTilesLayer.maxVisibleAltitude是针对s3m图层的,不是针对影像图层的,你可以自己注册scene.postRender监听,当相机高度大于某值时,ImageryLayer.show=false

我想问下scene.open调用的不是工作空间发布的场景吗?也不能调用到风格属性吗

前端只读数据,不读工作空间里面存的信息
请问前端设置透明色以及可见高度有没有相关案例呢,我这边一直没成功

没有,都是一句代码搞定,比如设置s3m图层最大可见高度500米,把下面在线范例修改成如下代码即可:http://support.supermap.com.cn:8090/webgl/examples/editor.html#S3MTiles_vector

<!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/config.js"></script>
	<script type="text/javascript" src="./js/require.min.js" data-main="js/main"></script>

    <style>
        html, body, #cesiumContainer {
            width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;background-color: #000000;
        }
    </style>
</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 type="text/javascript">
    var host = document.location.toString().match(/file:\/\//)?"http://localhost:8090":'http://' + document.location.host;
    function onload(Cesium) {
        //初始化viewer部件
        var viewer = new Cesium.Viewer('cesiumContainer',{
            imageryProvider :  new Cesium.BingMapsImageryProvider({
                key : "AjQhMyw76oicHqFz7cUc3qTEy3M2fC2YIbcHjqgyMPuQprNVBr3SsvVdOfmlVc0v",//可至官网(https://www.bingmapsportal.com/)申请key
                url : URL_CONFIG.BINGMAP
            })
        });
        var scene = viewer.scene;
        var widget = viewer.cesiumWidget;
        $('#loadingbar').remove();
        try{
            //打开所发布三维服务下的所有图层
            var promise = scene.open('http://www.supermapol.com/realspace/services/3D-GuangZhou/rest/realspace');
            Cesium.when.all(promise,function(layers){
               var layer=scene.layers.findByIndex(0);
		        var color = new Cesium.Color(1.0, 0.0, 0.0);
		        layer.style3D.fillForeColor = color;
		        layer.maxVisibleAltitude=500;
		        //设置后需刷新图层
		        layer.refresh();
                //设置图层的阴影模式
                scene.camera.setView({
                    //将经度、纬度、高度的坐标转换为笛卡尔坐标
                    destination : new Cesium.Cartesian3(-2323607.7945701713,5386182.530303348,2505814.811681112),
                    orientation : {
                        heading : 4.844795866469065,
                        pitch : -0.58125995096984,
                        roll :1.2504663970958063e-11
                    }
                });
            },function(e){
                if (widget._showRenderLoopErrors) {
                    var title = '加载SCP失败,请检查网络连接状态或者url地址是否正确?';
                    widget.showErrorPanel(title, undefined, e);
                }
            });
        }
        catch(e){
            if (widget._showRenderLoopErrors) {
                var title = '渲染时发生错误,已停止渲染。';
                widget.showErrorPanel(title, undefined, e);
            }
        }
    }
    </script>
</body>
</html>

这样使用transperantBackColor代码是不是有点问题?

//添加SuperMap iServer发布的影像服务
        var layer = viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
        url : 'http://59.55.128.155:8090/iserver/services/3D-HMHSD/rest/realspace/datas/ncimage@terriandata'//江西影像
         }));
        layer.transperantBackColor = '#000000';

var cesiumBlue = Cesium.Color.fromCssColorString('#67ADDF');
很抱歉,加上了你的代码,但还是没有效果
已经解决了,原来还要设置色容,代码没啥问题,给色容附一个值就可以了
...