我目前正在从事的GIS项目必须具有跨浏览器,移动,多平台和万能的功能。Cesium在没有WebGL的情况下无法工作,在某些较旧的浏览器和其他次要异常中也无法正常工作,但我必须抓住它们。当无法使用Cesium时,我决定选择OpenLayers,OL在几乎所有方面都可以很好地工作。就目前而言,我有一个尝试捕获新的Cesium.Viewer的功能,该捕获启动了OpenLayers,直到最近,当我开始遇到Cesium“内存不足”错误时,OpenLayers的运行都非常好。
Cesium文档在Developer Error上的立场:永远不要被抓住;相反,调用代码应努力不生成它。那么如何解决这个难题呢?是否有任何可靠的方法可以检查Cesium是否可以正常启动,还是我必须尝试捕获我所调用的每个方法以确保它不会崩溃?
当然new Cesium.Viewer(...)
应该将其包装在try / catch中,因为Cesium.RuntimeError
如果无法初始化WebGL ,它将抛出该异常。此外,viewer.scene
还有一个renderError事件,当在渲染循环内发生错误时会引发该事件(因为正常/自动渲染循环无法包装在try / catch中)。
但是,当然,如果浏览器接近内存不足,则在浏览器上分配内存的任何调用都可能会失败。不幸的是,在JavaScript中似乎并没有太多警告。铯已被很好地清理,以在渲染时不分配内存(重新使用带有result
参数的暂存变量等),但是某些操作(例如在高分辨率地形上放大)将必然会分配一些内存。添加实体以及新的图形基元和内容将分配内存。您可能希望在将新对象添加到视图时尝试/捕获。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句