Skip to content

Commit 83accaf

Browse files
committed
fix tile magFilter when tile is zoomed in
1 parent bee6e4a commit 83accaf

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

packages/maptalks/src/layer/ImageLayer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ export class ImageLayerGLRenderer extends ImageGLRenderable(ImageLayerCanvasRend
306306

307307
//@internal
308308
_drawImage(image: LayerImageType, extent: PointExtent, opacity: number) {
309-
this.drawGLImage(image, extent.xmin, extent.ymax, extent.getWidth(), extent.getHeight(), 1, opacity);
309+
const width = extent.getWidth();
310+
this.drawGLImage(image, extent.xmin, extent.ymax, width, extent.getHeight(), 1, opacity, image.width !== width);
310311
}
311312

312313
createContext() {

packages/maptalks/src/renderer/layer/ImageGLRenderable.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ const ImageGLRenderable = function <T extends MixinConstructor>(Base: T) {
108108
* @param debugInfo
109109
* @param baseColor
110110
*/
111-
drawGLImage(image: TileImageType, x: number, y: number, w: number, h: number, scale: number, opacity: number, debugInfo?: string, baseColor?: number[]) {
111+
drawGLImage(image: TileImageType, x: number, y: number, w: number, h: number, scale: number, opacity: number, resized, debugInfo?: string, baseColor?: number[]) {
112112
if ((this.gl as any).program !== this.program) {
113113
this.useProgram(this.program);
114114
}
115115
const gl = this.gl;
116-
this.loadTexture(image);
116+
this.loadTexture(image, resized);
117117
const inGroup = this.canvas.gl && this.canvas.gl.wrap;
118118
if (inGroup) {
119119
let layerOpacity = this.layer && this.layer.options['opacity'];
@@ -417,7 +417,7 @@ const ImageGLRenderable = function <T extends MixinConstructor>(Base: T) {
417417
* Load image into a text and bind it with WebGLContext
418418
* @param image
419419
*/
420-
loadTexture(image: TileImageType): TileImageTexture {
420+
loadTexture(image: TileImageType, resized = false): TileImageTexture {
421421
const map = (this as any).getMap();
422422
const gl = this.gl;
423423
let texture = image.texture; // Create a texture object
@@ -433,6 +433,12 @@ const ImageGLRenderable = function <T extends MixinConstructor>(Base: T) {
433433
} else {
434434
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
435435
}
436+
if (resized) {
437+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
438+
} else {
439+
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
440+
}
441+
436442
}
437443
return texture;
438444
}

packages/maptalks/src/renderer/layer/tilelayer/TileLayerGLRenderer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class TileLayerGLRenderer extends ImageGLRenderable(TileLayerCanvasRenderer) {
101101
const polygonOffset = this.drawingCurrentTiles ? layerPolygonOffset : layerPolygonOffset + 1;
102102
gl.polygonOffset(polygonOffset, polygonOffset);
103103

104-
this.drawGLImage(tileImage as any, x, y, w, h, scale, opacity, debugInfo);
104+
this.drawGLImage(tileImage as any, x, y, w, h, scale, opacity, map._getResolution() !== tileInfo.res, debugInfo);
105105
if (this.getTileFadingOpacity(tileImage) < 1) {
106106
this.setToRedraw();
107107
} else {

0 commit comments

Comments
 (0)