Mapbox - 无效的图块顺序

Mapbox - invalid tile order

我在自己的磁贴服务器上工作。我在以正确的顺序显示图块时遇到奇怪的问题。瓦片是使用 OSM 数据创建的。 当我将 tileserver-gl-light 用作图块服务器时,一切似乎都正常,但是当我尝试通过我自己的服务器提供图块时,它们在缩放后不会以正确的顺序出现。我使用同一页面来呈现地图,所以我认为问题与服务器有关。 瓷砖看起来像这样(缩放 1):

感谢您的帮助。 最好的祝福, 马立克

我不知道为什么,但是在从 mbtiles 数据库中获取数据之前需要修正 y 轴值。

如果您的图块 url 看起来像:http://host:port/data/{z}/{x}/{y} 在从数据库中获取 pbf 格式的图块数据之前,您需要重新计算 y 值:

y = pow(2, z) - 1 - y

mbtiles 规范中没有提到这一点,但我在 Tileserver-PHP source code

中找到了解决方案

像这样将图层添加到 mapbox-gl 时,将方案设置为 "tms":

    map.addLayer({
      id: 'tms_layer',
      type: 'raster',
      source: {
        type: 'raster',
        tiles: [
          'https://tile-server/{z}/{x}/{y}.png'
        ],
        scheme: 'tms'
      },
    });

发生这种情况是因为某些磁贴服务器使用 OSGeo 规范方案。

更多信息在这里:https://docs.mapbox.com/mapbox-gl-js/style-spec/#sources-raster-scheme