webGL开发坡度坡向功能,报错

0 投票

使用产品:iclient 3d for webGL
问题详细描述:webGL开发坡度坡向功能,报错 cannot read property 'generateBuffer' of undefined
问题重现步骤: 在  viewer.scene.globe.SlopeSetting = {
                slopeSetting : slope,
                analysisMode : wide
            };语句中报错 cannot read property 'generateBuffer' of undefined

11月 26, 2019 分类:  39次浏览 | 用户: xd487000 初出茅庐 (25 分)

1个回答

0 投票
 
已采纳
您好,您把该部分代码删了,该报错就不会出现了么?我这边测了一下,并没有出现您的报错问题
11月 27, 2019 用户: 赵爽 登峰造极 (5,870 分)
采纳于 12月 11, 2019 用户:xd487000
是的,在报错之后我查了一下这个slopesetting,slope的参数也都赋进去了,但是就是报这个错,而且界面上只画出了一个多边形,没有进行坡度坡向的分析
并且我把其他画点画线测量的功能都注销掉了,再测试,报一样的错误,并且总是出现Cesium.js:25的提示。
或者把您的代码示例发给我看一下吧,但是我感觉我的slope的参数应该没设置错误
您的slope是怎么设置的,代码贴一下,我再尝试一下
                var slope = new Cesium.SlopeSetting();
                slope.DisplayMode = Cesium.SlopeSettingEnum.DisplayMode.FACE_AND_ARROW;
                slope.MaxVisibleValue =78;
                slope.MinVisibleValue =0;
                var colorTable = new Cesium.ColorTable();
             
                colorTable.insert(0, new Cesium.Color(255/255, 0/255, 0/255));
                colorTable.insert(20, new Cesium.Color(221/255, 224/255, 7/255));
                colorTable.insert(30, new Cesium.Color(20/255, 187/255, 18/255));
                colorTable.insert(50, new Cesium.Color(0, 161/255, 1));
                colorTable.insert(80, new Cesium.Color(9/255, 9/255, 255/255));
                slope.colorTable=colorTable;

                var array = [].concat(result.object.positions);
                var positions = [];
                for(var i = 0, len = array.length; i < len; i ++){
                var cartographic = Cesium.Cartographic.fromCartesian(array[i]);
                var longitude = Cesium.Math.toDegrees(cartographic.longitude);
                var latitude = Cesium.Math.toDegrees(cartographic.latitude);
                var h=cartographic.height;
                if(positions.indexOf(longitude)==-1&&positions.indexOf(latitude)==-1){
                    positions.push(longitude);
                    positions.push(latitude);
                    positions.push(h);
                  }
              }
                slope.CoverageArea = positions;
                slope.updateColorDictTable=true;
               _this.viewer.scene.globe.SlopeSetting = {
                slopeSetting : slope,
                analysisMode : 1,
              };

我和webGL的示例程序核对过,感觉没什么出入,难道我其他文件的设置有问题吗?
您拿我们官网的示例尝试一下,检查代码是否正确

还有就是地形在iDesktop中切缓存的时候,需要勾选上【带法线】的复选框
...