【问题标题】:Get total number of tiles to load获取要加载的瓷砖总数
【发布时间】:2021-09-17 21:29:17
【问题描述】:

我想获取当前需要加载的图块总数。
原因是地图有一个平滑的加载栏。我知道 openlayers 上的演示,但对我来说,那个栏会到处乱跳(来回走动),因为很多时候 tileloadstart 在某些图块已经加载后被调用。这会导致最大值发生变化并带回条形图。
那么有没有办法(即使是自定义 OL)在调用时获取磁贴总数(tileloadstart 调用的最终总数)?

【问题讨论】:

  • 绝不是一个完整的答案,但是如果您有地图当前的缩放级别和范围,那么绝对可以自己计算出瓦片的数量。可能您必须找到每个缩放级别的单个图块的大小,然后检查当前地图范围需要多少个图块。
  • @MichaelKunst 这……正是我需要的!出于某种原因,我没有想到这一点。如果您将此作为答案,我会将其标记为已解决。 (也许将来我可以使用解决方案编辑您的评论 - 或为 OL 做出贡献)
  • 不要以为我真的有足够的答案。但是当你让它运行时,如果你可以自己添加它作为答案,那就太好了,展示你实际需要做的事情:-)
  • 好主意,谢谢!
  • @KayleMaster 你有没有想过做这个计算的好方法?

标签: openlayers openlayers-5


【解决方案1】:

很抱歉挖掘了一个老问题,但我今天被困在这个问题上并找到了一个简单的解决方案。这个问题并没有真正覆盖整个网络,所以我将发布一个计算图块的函数,而无需事先加载它们。它基于TileGridforEachTileCoord(extent, zoom, callback) 方法。

function getTileCount(map, tileGrid) {
   let size = map.getSize();
   let view = map.getView();
   let extent = view.calculateExtent(size);
   let zoom = view.getZoom();
   let count = 0;
   tileGrid.forEachTileCoord(extent, zoom, function() {
      ++count;
   });
   return count
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2013-01-26
    相关资源
    最近更新 更多