Javascript CesiumJS内存管理问题

Javascript CesiumJS内存管理问题,javascript,json,geojson,cesium,Javascript,Json,Geojson,Cesium,我正在用cesiumjs制作一个3d模型viwer。geojson是从url请求的,它可以很好地用于小型模型。如果复杂的json multipolygon文件和json url请求数据超过16mb,铯在解析和渲染过程中会花费很长时间,如果我调用另一个模型,它会导致web浏览器崩溃,并出现内存不足的错误。我检查了旁边的chrome浏览器,它从url获取的16mb geojson占用了大约900个内存。有更好的内存管理方法吗?或者任何解决这个问题的方法。一个解决方案可能是在发送该模型的geojson

我正在用cesiumjs制作一个3d模型viwer。geojson是从url请求的,它可以很好地用于小型模型。如果复杂的json multipolygon文件和json url请求数据超过16mb,铯在解析和渲染过程中会花费很长时间,如果我调用另一个模型,它会导致web浏览器崩溃,并出现内存不足的错误。我检查了旁边的chrome浏览器,它从url获取的16mb geojson占用了大约900个内存。有更好的内存管理方法吗?或者任何解决这个问题的方法。一个解决方案可能是在发送该模型的geojson之前进行3d网格简化,但我要问的是与客户端内存管理相关的问题

请记住,浏览器在16MB的文件上运行JSON.parse是一部分时间。这在所有浏览器中都是一个同步操作,在浏览器添加异步JSON解析之前,任何人都无能为力。我建议的第一件事是在服务器上运行GeoJSON,这将大大节省大小。这将减少传输时间和JSON.parse时间。我还可以肯定,您的服务器正在压缩您的数据,这将进一步节省成本。我已经看到16MB的文件通过这些技术下降到了一个meg以下

尽管如此,这只是问题的第一部分。真正的问题不是GeoJSON有多大,而是它有多少特性?如果它是一个16MB的文件,具有大约15000个功能,那么我上面的建议将解决您的问题。如果它有成千上万的特性,那么你将遇到一些不容易解决的问题。事实上,我昨天在我们的邮件列表中提供了一些细节:


我们一直在寻找优化和进一步改进铯的方法。如果可以,请随时联系我们的邮件列表,并提供一些大样本数据,然后,我们可以将其作为一个很好的用例,在我们将来进行优化时使用。

Google earth web api KML可以非常顺利地处理相同的数据,并且永远不会耗尽内存,因此,随着Google earth的消亡,我们必须转向铯,是的,它比Google earth web插件快得多,加载数据需要时间,但当加载数据时,它的速度会更快比GoogleEarth更流畅,但GoogleEarth的优点是,我可以处理更多的kml,甚至96mb大小的kml,同时处理更多的此类文件,但速度较慢。当然我会参与邮件列表!!谢谢,我将探索TopojSunBTW,我在哪里可以分享关于该组的信息?谷歌地球是一个本地C++应用程序(这就是为什么它需要插件),并且使它更容易强力地支持大数据集。由于铯是纯JavaScript,因此具有良好的性能更具挑战性。别误会我的意思,铯有很大的优化空间,我们会做到的,这只是一个更难解决的问题。你可以在我们的网站上发布到论坛:或者在谷歌的主页上发布