openlayers-3 - 如果这些图块不存在,则阻止在 OpenLayers 3 中加载图块
问题描述
我在 xyz 文件夹结构中有一个平铺服务器和一个小图像,该图像仅覆盖世界的一部分。我已经设法阻止加载 Z,该地图上不存在的某些缩放级别(停止在 OpenLayers 3 tileloadstart 事件中加载图块)。现在我还需要限制 X 和 Y 的加载,因为许多文件夹和图块显然不存在。如何才能做到这一点?我能否管理在服务器端引发的某种错误,使 OpenLayers 明白不再请求这些图块,因为它们不存在?如果是这样,如何做到这一点?
解决方案
您可以通过指定范围来进一步限制切片格网。ol.tilegrid.TileGrid
尽管您可以获得要使用的默认来源和分辨率,但您将需要使用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
或者
var restrictedExtent = ol.extent.extend(
defaultTileGrid.getTileCoordExtent([maxZ, minX, -minY - 1]),
defaultTileGrid.getTileCoordExtent([maxZ, maxX, -maxY - 1])
);
在早期版本中
推荐阅读
- ios - 使用错误的 Localizable.string
- amazon-web-services - AWS Managed Kafka 的 HTTP 端点?
- c++ - 无法从 C++ 中的类正确传输数据
- chart.js - chartjs 在悬停时显示十字准线
- c++ - 如何确定 2 个 URI(路径)是否属于同一个分区或卷
- r - X轴在DF熔化后没有排序离散值
- java - IntelliJ 不运行更新的代码并运行来自先前分支的代码
- android - 第一个活动在第二个活动的后台关闭
- python - 如何使用 pandas read_sql_query 方法删除 postgres 中唯一的行但不删除表?
- php - Docusign - PHP - 客户端使用 Symfony 设置到期日