如果不存在这些图块,则防止在 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])
);
早期版本
我在 xyz 文件夹结构中有一个 tile-server 和一个小图像,该图像仅覆盖世界的一部分。我已经设法阻止加载 Z,以及该地图上不存在的某些缩放级别 (
您可以通过指定范围进一步限制图块网格。尽管您可以从 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])
);
早期版本