在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源读取像素值,而无需将该源渲染为地图上的图层?