Я работаю в OpenLayers 4.6.5 со слоем Landsat 8 TileImage, предоставляемым сервером листов AWS Lambda (согласно https://github.com/mapbox/landsat-tiler),, и необходимо предотвратить сглаживание / интерполяцию пикселей на изображении - например, что каждый пиксель (высотой около 30 м и шириной 30 м) содержит только один цвет без затенения. Ниже приведен пример того, что я вижу:
Я обнаружил несколько случаев, когда у других была такая же проблема со статическими источниками PNG, и поэтому я попробовал следующий javascript:
map.on('precompose', function(evt) {
evt.context.imageSmoothingEnabled = false;
evt.context.webkitImageSmoothingEnabled = false;
evt.context.mozImageSmoothingEnabled = false;
evt.context.msImageSmoothingEnabled = false;
});
... и следующий CSS:
.tm-openlayer-map
canvas {
image-rendering: optimizeSpeed;
image-rendering: -moz-crisp-edges;
image-rendering: -webkit-optimize-contrast;
image-rendering: -o-crisp-edges;
image-rendering: pixelated;
-ms-interpolation-mode: nearest-neighbor;
}
Но ни один из этих подходов, похоже, вообще ничего не меняет. Я могу только заключить, что либо эти подходы не работают со слоями TileImage, либо что мой сервер плиток на самом деле предоставляет предварительно сглаженные изображения. Буду признателен за любые предложения!