【问题标题】:Html5 canvas map application / canvas per tile vs single canvas for a layerHtml5画布地图应用程序/每块画布与图层的单个画布
【发布时间】:2013-09-20 13:47:19
【问题描述】:

我们正在创建一个画布地图应用程序,我们想知道哪种方法比另一种更好;为图层的每个图块创建画布或创建单个画布。

如果我们使用每个图块的画布选项,我们将能够;

  • 为每个图块的平移效果制作淡入淡出动画,
  • 在缩小时,当图层尺寸小于屏幕尺寸时,我们将 绘制较小的区域(例如只有 2-3 个小画布)。

但是;

  • 会有不止一个上下文和更多的绘制操作。
  • (我认为)更多的内存使用。

所以我们无法决定选择哪个选项。性能对我们来说非常重要,因为我们正在处理大数据。但我们也关心使用 css3 进行平移和缩放等动画。你有什么建议?

【问题讨论】:

  • 第三个命题怎么样?启用了多线程的单个画布。关键字:Web Workers。另见this SO question。谷歌搜索导致MSDN article on performance improvements of a canvas render using WebWorkers
  • 谢谢!我认为这对性能真的有帮助。如果我的表现有所改善,我会尝试并给你回信。
  • @Derija93 从您链接到的文章:“需要注意的重要一点是,在最近的计算机上,差异可能很小,甚至有利于没有工人的代码。内存复制的开销必须由工人使用的复杂代码来平衡。“
  • @Ken-AbdiasSoftware 好吧,JavaScript 从来没有打算成为一种多线程脚本语言。这个问题确实没有理想的解决方案,每个都有其优点和缺点。使用工人确实可能会导致高度复杂的代码......就像我说的,这只是一个提议。 ;)
  • @HalilIbrahim 你也可以考虑这个库:leafletjs.com

标签: javascript html css canvas map


【解决方案1】:

出于性能考虑,建议图层的单个画布在大多数情况下包括平移和缩放等动画(如果不是必须由 css3 实现)。以下列出的一些项目可能对您有所帮助: 1.https://github.com/dfacts/Slippy-Map-On-Canvas 2.https://github.com/zynga/scroller

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2014-08-20
    • 2017-03-26
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    相关资源
    最近更新 更多