OpenLayers:查询TileImage源中的像素,但不在地图上显示图层

时间:2019-01-22 00:19:22

标签: openlayers

在OpenLayers 4.6.5中,我试图从TileImage源中读取像素值,而不实际将源渲染为地图上的图层。我一直在尝试按照以下方式改编this question中的一些代码-请注意,在此阶段,我只是要检查图块是否存在,而且还没有实际查询到该图块。瓷砖了:

window['tiles'] = {};

window["L8SourceNRG"] = new ol.source.TileImage({
    url: NRGtileURL,
    crossOrigin: 'anonymous',
    transition: 0,
    preload: Infinity,
    tileGrid: L8SourceTileGrid
});

window["L8SourceNRG"].on("tileloadend", (e) => {
    console.log('tileloadend event fired');
    let coord = e.tile.getTileCoord();
    window['tiles'][coord.join('-')] = e.tile.getImage();
});

map.on('pointermove', (evt) => {
    if (evt.dragging) {
        return;
    }

    let coordinate = ol.proj.transform(evt.coordinate, map.getView().getProjection(), ol.proj.get('EPSG:3857'));

    let tileCoord = L8SourceTileGrid.getTileCoordForCoordAndResolution(coordinate, this.map.getView().getResolution());
    let key = tileCoord.join('-');
    if (key in window['tiles']) {
        console.log('key in tiles');
    }
});

仅使用上述代码,就不会出现控制台日志消息“ key in tile”。如果我已经将“ L8SourceNRG”源加载到图层中并在地图上进行渲染,则只能显示该内容。但我不想在地图上显示它-我只想使用像素值来运行一些计算,这些计算将用于创建新的多边形层。

如您所见,在定义该源时,我还尝试过使用“预加载”设置,但这似乎没有什么区别-尽管我很可能会错误地这样做

是否可以更改我的代码以使其工作?或者是否有更好的方式从TileImage源读取像素值,而无需将该源渲染为地图上的图层?

0 个答案:

没有答案