获取地图图块边界框

Sol*_*olo 7 mapbox-gl-js vector-tiles

是否可以获得瓷砖 LngLat 边界框?(如果可能的话还有中心/宽度)

即给定任何图块“id”(例如6/33/24),计算所需的坐标。我非常渴望得到答案,我什至不在乎它是用什么语言写的。


语境

磁贴“id”有 3 个部分:( 6/33/24) z/x/y

zx/y从左/上原点开始进行地板缩放 (0-24) 和图块编号。

当缩放为 1 时,整个地图被分为 4 个相等的图块(如图所示)。每次缩放 ( z) 增加时,每个图块都会细分为 4 个相等的图块(例如,缩放 2 = 16 个图块)。

 _______________________
|          |           |
|  1/0/0   |   1/1/0   |
|          |           |
|__________|___________|
|          |           |
|  1/0/1   |   1/1/1   |
|          |           |
|__________|___________|
Run Code Online (Sandbox Code Playgroud)

为什么?

我想实现客户端标记缓存并将它们绑定到图块似乎是最合理的解决方案。我知道如何获取图块(循环sourceCaches图块或使用几种transform方法),但我不知道如何从图块矩阵或图块 ID 获取 LngLat 数据。

标记缓存的超级基本 JavaScript 概念(用于上下文):

 _______________________
|          |           |
|  1/0/0   |   1/1/0   |
|          |           |
|__________|___________|
|          |           |
|  1/0/1   |   1/1/1   |
|          |           |
|__________|___________|
Run Code Online (Sandbox Code Playgroud)

Mor*_*itz 8

我相信您正在寻找这个库:

https://github.com/mapbox/tilebelt

它包含该tileToBBOX(tile)函数,该函数将返回给定图块的边界框。

用法:

var tilebelt = require('@mapbox/tilebelt');

var tile = [10,15,8] // x,y,z

var bbox = tilebelt.tileToBBOX(tile);
Run Code Online (Sandbox Code Playgroud)