我想为OpenSeadragon创建一个tilesource,以渲染玩家的游戏视图。
世界具有坐标(x,y),玩家处于特定的坐标范围内,并具有视野范围。

我想要的是为OpenSeadragon创建一个tilesource,可以显示整个视图。在最大缩放时,1个图块= 1个坐标。
所以我有几个问题:
如何计算玩家视野范围的最大缩放水平?
我怎么知道我必须在OpenSeadragon(x,y,level)请求的图块中渲染的世界位置?

谢谢 :)

最佳答案

如果我理解正确,那么您正在尝试创建一个自定义的TileSource,您可以在其中从构成游戏地图构建块的一组标准图块中进行加载。如果需要,可以指定最大级别是它尝试加载的唯一级别(通过使minLevel和maxLevel相同),因此不必处理生成图块组合。这使getTileUrl(level, x, y)变得容易,因为您只需要处理1:1层。这留下了什么是最大水平的问题。定义如下:

http://openseadragon.github.io/docs/OpenSeadragon.TileSource.html

...公式为:


  默认情况下,图像金字塔被分成N层,其中图像的最长边以M为单位(以像素为单位),其中N是满足2 ^(N + 1)> = M的最小整数。


基本上,您只是在计算2的幂,直到达到图像大小为止。因此,如果图像的一侧为1像素,则最大级别为0。如果一侧为2像素,则最大级别为1、4 = 2、8 = 3,依此类推。

假设您的tileSize为100像素,地图为5x7的图块。这意味着最长尺寸为700像素。以2的幂为单位,700大于512且小于1024,因此我们使用1024。1024是2的10次幂,因此您的最大电平为10。

这能回答您的问题吗?

07-24 16:10