Openlayers 3 如果缺少OpenLayers 3中的瓷砖,请防止这些瓷砖加载

Openlayers 3 如果缺少OpenLayers 3中的瓷砖,请防止这些瓷砖加载,openlayers-3,Openlayers 3,我有一个平铺服务器和xyz文件夹结构中的一个小图像,这个图像只覆盖世界的一部分。我已经设法阻止加载Z,一些地图上不存在的缩放级别()。现在我还需要限制X和Y的加载,因为很多文件夹和磁贴显然不存在。如何做到这一点?我是否可以管理服务器端抛出的某种错误,使OpenLayers理解不再请求这些磁贴,因为它们不存在?如果是这样,怎么做呢?您可以通过指定区段来进一步限制平铺网格。尽管您可以从ol.tilegrid.createXYZ var defaultTileGrid = ol.tilegrid.

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

您可以通过指定区段来进一步限制平铺网格。尽管您可以从
ol.tilegrid.createXYZ

  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中


在早期版本中

这绝对令人惊讶。非常感谢@Mike!!!
var restrictedExtent = ol.extent.extend(
  defaultTileGrid.getTileCoordExtent([maxZ, minX, -minY - 1]),
  defaultTileGrid.getTileCoordExtent([maxZ, maxX, -maxY - 1])
);