首页 / 浏览问题 / WebGIS / 问题详情
使用WebGIS进行开发时地形配置的错误
9EXP 2024年04月25日

使用产品:SuperMap iClient3D 11i (2023) SP1 for Cesium_CN、supermap-iserver-11.1.1a-windows-x64-setup

问题:使用new Cesium.CesiumTerrainProvider方法调用iserver发布服务后有错误 代码: window.viewer=new Cesium.Viewer("cesiumContain",{ terrainProvider: new Cesium.CesiumTerrainProvider({ url:' http://localhost:8090/iserver/services/3D-CBD/rest/realspace/datas/Building%40CBD', isSct:true, invisibility:true, }), globe:true, })

实际效果:

Error constructing CesiumWidget.

Visit http://get.webgl.org to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:

TypeError: Cannot read properties of undefined (reading 'addEventListener') TypeError: Cannot read properties of undefined (reading 'addEventListener') at po (http://localhost:8081/Cesium/Cesium.js:293:3999083) at M$4.set (http://localhost:8081/Cesium/Cesium.js:293:4001479) at new p (http://localhost:8081/Cesium/Cesium.js:369:660689) at new u (http://localhost:8081/Cesium/Cesium.js:369:777379) at VueComponent.InitCesium (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/MyCesium.vue?vue&type=script&lang=js:13:23) at VueComponent.mounted (webpack-internal:///./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./src/components/MyCesium.vue?vue&type=script&lang=js:19:10) at invokeWithErrorHandling (webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js:2924:57) at callHook$1 (webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js:3896:7) at Object.insert (webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js:4263:7) at invokeInsertHook (webpack-internal:///./node_modules/vue/dist/vue.runtime.esm.js:6555:30)

顺带提问如果想调用百度或者高德的地形图应该怎么做

1个回答

您好,

一.根据异常信息显示

是iClient3D for Cesium在运行时检测到您的浏览器不支持WebGL。此异常通常出现在浏览器不支持WebGL或目前浏览器渲染性能低的情况,可以按以下要点进行排查:

1. 需要了解以下您使用的什么浏览器及其版本?显卡型号?

2. 可通过一个在线网站检测您浏览器对WebGL的支持,https://webglreport.com/ 。若打开此网站看到绿色背景的提示“This browser supports WebGL 1”和““This browser supports WebGL 2”则您的浏览器是支持WebGL的,我们将进一步排查您的其它设置;若看到其它异常提示,请提供您看到的异常信息,同时您可以尝试重新安装浏览器。

3. 浏览器开启硬件加速。以chrome为例:打开 chrome 设置,『显示高级设置』,找到『系统』,在『使用硬件加速模式』选项前打钩。重启浏览器。其它品牌的浏览器也有对应的设置。

4. 查看浏览器显卡支持

以chrome为例,你可以打开 chrome://gpu 查看显卡对浏览器特性的支持度,看看到底是那儿出了问题。Graphic Feature Status 中对 WebGL 一项的支持状态可能为:

  1. Hardware accelerated:WebGL 已启用,并获得了显卡支持
  2. Software only, hardware acceleration unavailable:WebGL 已启用,但没有显卡支持,只有软件渲染支持
  3. Unavailable:WebGL 既没有显卡支持也没有软件支持

WebGL 应用一般需要显卡加速,如果你的浏览器显示 WebGL 未获得显卡支持(即显示为后面两项)则你电脑的显卡可能进入了 chrome 的黑名单。

5. 检测显卡驱动

参考 https://blog.csdn.net/supermapsupport/article/details/128440798 设置显卡驱动,并设置浏览器程序为高性能

6. 若为台式机请检测 显示器信号线插在独立显卡的接口上。

二. 查看您提供的代码

 new Cesium.CesiumTerrainProvider({ url:' http://localhost:8090/iserver/services/3D-CBD/rest/realspace/datas/Building%40CBD', isSct:true, invisibility:true, })

通过判断,http://localhost:8090/iserver/services/3D-CBD/rest/realspace/datas/Building%40CBD 是iServer完整安装包安装后的一份示例数据,他是S3M格式的建筑物缓存需要使用 scene.addS3MTilesLayerByScp("http://localhost:8090/iserver/services/3D-CBD/rest/realspace/datas/Building%40CBD/config");加载到场景中,它是S3MTileLayer, 而非Terrain(地形)。

三、您提到的“百度或者高德的地形图”

基于“二”中提到的地形理解偏差,我们需要进一步了解您理解的"百度或者高德的地形图”具体是什么。还请提供一些您搜索到的资料链接,以便我们更准确、更快速的为您找到解决办法。

希望对您有所帮助

360EXP 2024年04月26日
最后一个问题实际上就是使用了超图后使用Cesium的 Cesium.CesiumTerrainProvider.fromIonAssetId(1),函数会不执行,想咨询下有没有办法可以在iClient3D for Cesium中加载地形,以及去哪里寻找地形比较好

您好,

1. iClient3D for Cesium 基于 Cesium1.67(发布于2020-03-02发布)进行扩展,1.67版本还没有方法 Cesium.CesiumTerrainProvider.fromIonAssetId。
若您需要使用此方法,您可以参考CesiumTerrainProvide类的源码,查看方法fromIonAssetId中的代码在您的项目中进行实现
https://github.com/CesiumGS/cesium/blame/main/packages/engine/Source/Core/CesiumTerrainProvider.js
 

2 关于“哪里寻找地形”,您可以 参考:www.gscloud.cn或https://panda.copernicus.eu/panda

下载到地形数据后,可以参考下方链接生成场景缓存。

https://www.jianshu.com/p/8df809ee93cb

再将场景缓存发布到iServer, 接着在iClient3D for Cesium 中加载iServer的地形服务,参考 http://support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/editor.html#terrainAndImagery

十分感谢!我想得到更多关于iClient3D for Cesium的教程,但是我没有找到合适的文档,有没有什么推荐

您好,
1.您可以访问在线示例 http://support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/examples.html#layer
同时鼠标移动到该页面顶部菜单右侧 的“iClient3D-Cesium”选项后,有对应的学习资料目录,您可参看了解。


2. 您可以在 csdn https://blog.csdn.net/supermapsupport?type=blog 下搜索“iClient3D  {您需求的关键词}”

3. 另外我们还有 超图机器人 供您进行搜索

...