Слой статического изображения, который требует перепроецирования, не позволяет отключить сглаживание изображения.
Вот слой, который я использую:
var layer = new ol.layer.Image({
source: new ol.source.ImageStatic({
url: "grid.png",
imageExtent: [-130, 20, -55, 50],
projection: 'EPSG:4326'
})
});
При увеличении края пикселяразмытые (с псевдонимами), и они должны быть четкими.
Следующее неэффективно, потому что ловушка prerender приходит после работы проекции внутри ol / reproj.js, где создается холст:
layer.on('prerender', function(evt) {
evt.context.imageSmoothingEnabled = false;
});
Тем временем я пользуюсь хаком:
diff --git a/src/ol/reproj.js b/src/ol/reproj.js
index 7593c6b..5e0d090 100644
--- a/src/ol/reproj.js
+++ b/src/ol/reproj.js
@@ -103,6 +103,11 @@ export function render(width, height, pixelRatio,
context.scale(pixelRatio, pixelRatio);
+ context.imageSmoothingEnabled = false;
+ context.webkitImageSmoothingEnabled = false;
+ context.mozImageSmoothingEnabled = false;
+ context.msImageSmoothingEnabled = false;
+
const sourceDataExtent = createEmpty();
sources.forEach(function(src, i, arr) {
extend(sourceDataExtent, src.extent);
Я что-то пропустил? Есть ли способ сделать это без восстановления openlayers?