Обеспечение загрузки всех плиток в XYZ-источнике Open Layers 3

У нас есть несколько слоев, которые используютol.source.XYZ источник. Для стратегии загрузки мы используемol.loadingstrategy.tile(new ol.tilegrid.createXYZ({})), Мы должны убедиться, что все плитки были полностью загружены в виде карты, прежде чем приступить к другим операциям.

Мы сталкивались с несколькими статьями по этому поводу и пока не нашли 100% -ное решение, которое дало бы нам необходимое решение. Логика возвращает истину, даже если это не так. Мы попытались использовать события tileloadstart, tileloadend, tileloaderror, как показано например страница, но это не всегда возвращает ожидаемый результат.

Статья об обмене стеками ГИСВот казалось многообещающим, потому что мы могли бы использовать код, перечисленный ниже, в сочетании с событиями tileloadstart / tileloadend, но есть ряд вызовов функций, которые доступны только вол-debug.js а неol.js исходный код. Из-за этого код, вставленный ниже, не работает сol.js, Этот код является лишь копией из упомянутой статьи GIS Stack Exchange.

function calculateNumberOfTiles(tileSource) {
     var tg = (tileSource.getTileGrid()) ? tileSource.getTileGrid(): ol.tilegrid.getForProjection(map.getView().getProjection()), 
            z = tg.getZForResolution(map.getView().getResolution()),
            tileRange = tg.getTileRangeForExtentAndZ(map.getView().calculateExtent(map.getSize()), z),
            xTiles = tileRange['maxX'] - tileRange['minX'] + 1,
            yTiles = tileRange['maxY'] - tileRange['minY'] + 1;
        return xTiles * yTiles;
}

У меня есть два вопроса, кто-нибудь может представить какие-либо дополнительные мысли о том, что мы можем упустить? Спасибо за вашу помощь.

Почему вызовы функций доступны в ol-debug.js, а не в ol.js, когда они зависают от прототипаtilegrid объект?Любые другие предложения, как сказать, что все плитки полностью загружены на карте?

Ответы на вопрос(2)

Ваш ответ на вопрос