Я использую эту функцию, чтобы получить все координаты на плитках моего вида с моим текущим увеличением. Я делаю так:
...
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;
});
Но это не совсем правильно.