如果不存在这些图块,则防止在 OpenLayers 3 中加载图块

Prevent tiles loading in OpenLayers 3 if those tiles are absent

我在 xyz 文件夹结构中有一个 tile-server 和一个小图像,该图像仅覆盖世界的一部分。我已经设法阻止加载 Z,以及该地图上不存在的某些缩放级别 ()。现在我还需要限制 X 和 Y 的加载,因为许多文件夹和磁贴显然不存在。如何才能做到这一点?我能否管理服务器端抛出的某种错误,使 OpenLayers 理解不再请求这些图块,因为它们不存在?如果是这样,如何做到这一点?

您可以通过指定范围进一步限制图块网格。尽管您可以从 ol.tilegrid.createXYZ

获取要使用的默认原点和分辨率,但您将需要使用 ol.tilegrid.TileGrid 来执行此操作
  var defaultTileGrid = ol.tilegrid.createXYZ({
    minZoom: 2,
    maxZoom: 8
  });

  var restrictedTileGrid = new ol.tilegrid.TileGrid({
    extent: restrictedExtent,
    minZoom: defaultTileGrid.getMinZoom(),
    origin: defaultTileGrid.getOrigin(0),
    resolutions: defaultTileGrid.getResolutions(),
  });

您还可以在图层上指定一个范围(但必须在视图投影中,这可能与 tilegrid 投影不同)。

如果您知道最大 Z 值处的最小和最大 X 和 Y 值,您可以将限制范围计算为

var restrictedExtent = ol.extent.extend(
  defaultTileGrid.getTileCoordExtent([maxZ, minX, minY]),
  defaultTileGrid.getTileCoordExtent([maxZ, maxX, maxY])
);

在 OpenLayers 6 中

var restrictedExtent = ol.extent.extend(
  defaultTileGrid.getTileCoordExtent([maxZ, minX, -minY - 1]),
  defaultTileGrid.getTileCoordExtent([maxZ, maxX, -maxY - 1])
);

早期版本