openlayers - forEachTileCoord() 返回错误的 y 坐标
问题描述
我正在使用此功能以当前缩放来获取视图图块中的所有坐标。我正在这样做:
...
this.map.getLayers().forEach((layer) => {
if (layer.get('name') === 'randomLayer') {
let extent = this.map.getView().calculateExtent(this.map.getSize());
let zoom = this.map.getView().getZoom();
layer.getSource().tileGrid.forEachTileCoord(extent, i, tileCoord => {
console.log(tileCoord);
});
}
});
这是在我的视图中加载图块的方式(z/x/y),缩放 12:
12/1474/2376 12/1475/2376 12/1476/2376
12/1474/2377 12/1475/2377 12/1476/2377
12/1474/2378 12/1475/2378 12/1476/2378
这就是函数返回的内容:
12/1474/2377 12/1475/2377 12/1476/2377
12/1474/2378 12/1475/2378 12/1476/2378
12/1474/2379 12/1475/2379 12/1476/2379
不返回位于屏幕顶部的第一行坐标,并返回甚至不在视图中的底部行 (2379)。这是故意的吗?也许我以错误的方式划定范围?
我也试图得到程度this.map.getView().calculateExtent();
,但同样的情况发生了。
作为一种解决方法,我可以执行以下操作:
...
layer.getSource().tileGrid.forEachTileCoord(extent, i, tileCoord => {
let z = Math.abs(tileCoord[2]) - 1;
});
但这似乎不太正确。
解决方案
推荐阅读
- assembly - IAR Embedded Workbench 非法操作码错误
- python - TensorFlow v10 重新制定 sigmoid 交叉熵损失以在给定 sigmoid 的情况下工作?
- postgresql - 在 Spring Boot 2、Hibernate、PostgreSQL 中通过 JDBC 语句执行 DDL 时出错
- sql - 如何查找不同表中的行数
- angular - 使用角度材料以角度在两个表之间交换数据行
- dart - Flutter 将网络 mp3 文件保存到本地目录
- javascript - 如何使用 expressjs、reactjs 持久化数据?
- reactjs - 在同一级别的路径中反应路由器 4 不明确匹配
- python - 通过在 Python 中使用插值来统一 ct 扫描体素大小
- c# - 用一个Enumeration值绑定combobox,并以枚举的形式获取选中的项