forEachTileCoord () возвращает неправильную координату y - PullRequest
0 голосов
/ 12 марта 2020

Я использую эту функцию, чтобы получить все координаты на плитках моего вида с моим текущим увеличением. Я делаю так:

...
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;
});

Но это не совсем правильно.

1 Ответ

0 голосов
/ 13 марта 2020

Как @Mike упомянул в комментариях к моему вопросу, метод обхода, который я предложил в конце вопроса, - это метод, обычно используемый для получения координат плитки до версии 6 OpenLayers. Более новые версии не должны делать это, чтобы получить те же результаты.

@ Mike:

Если вы используете OpenLayers 5 или более ранние версии, и ваши значения y отрицательны, то есть ожидается. Но OpenLayers 6 использует ту же систему, что и XYZ. До версии 6 обходной путь был обычной процедурой, поскольку сетки OpenLayers были пронумерованы вверх, в то время как источник XYZ были пронумерованы вниз. Он описан в примечаниях к обновлению в разделе «Новые внутренние координаты плиток».

Упомянутый пример

Упомянутые примечания к обновлению

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...