我正在 cesiumjs 中制作一个 3d 模型 viwer。geojson 是从 url 请求的,它适用于小型模型。如果复杂的 json 多面体文件和 json url 请求数据超过 16mb,铯在解析和渲染时需要很长时间,如果我调用另一个模型,它会使 Web 浏览器崩溃,并出现内存不足的错误。我在旁边检查了 chrome,它从 url 消耗了大约 900 个内存来获取 16mb geojson。有没有更好的内存管理方法?或任何提示如何解决这个问题。一种解决方案可能是在发送该模型的 geojson 之前进行 3d 网格简化,但我要求与客户端的内存管理有关。
问问题
1661 次
1 回答
0
请记住,部分时间是浏览器在 16 兆字节的文件上运行 JSON.parse。这是所有浏览器中的同步操作,在浏览器添加异步 JSON 解析之前,任何人都无能为力。我建议的第一件事是通过服务器上的TopoJSON运行 GeoJSON ,这应该可以显着节省大小。这将减少传输时间和 JSON.parse 时间。我还可以确定您的服务器正在压缩您的数据,这将进一步节省费用。我已经看到使用这些技术可以将 16MB 的文件压缩到一个兆以下。
话虽如此,这只是问题的第一部分。真正的问题不是 GeoJSON 有多大,而是它有多少功能?如果它是一个 16MB 的文件,具有约 15000 个功能,那么我的上述建议将解决您的问题。如果它有成千上万个功能,那么您将遇到一些不容易解决的问题。实际上,我昨天在我们的邮件列表中提供了一些详细信息:https ://groups.google.com/d/msg/cesium-dev/F6IkY9aEG1I/8dRkhlBnLI4J
我们一直在寻找优化和进一步改进 Cesium 的方法。如果可以的话,请随时联系我们的邮件列表并提供一些大样本数据,然后我们可以在将来优化事物时将其用作一个很好的用例。
于 2015-04-28T17:41:04.163 回答