2016-03-04 111 views
1

在某些缩放级别下,地图图块模糊不清而且没有进行平滑的渲染。自定义地图图块模糊

使用下面的代码:

public MapTileLayer setupTileLayer(final TileListener listener) { 
TileProvider provider = new TileProvider() { 
     @Override 
     public Tile getTile(int x, int y, int zoom) { 
      String filename = listener.loadTileFilename(x, y, zoom, true); 
      if (filename != null && filename.trim().length() > 0) { 
       byte[] bytes = FileService.getBytesForFile(filename); 
       if (bytes != null) { 
        return new Tile(TILE_SIZE, TILE_SIZE, bytes); 
       } 
      } 
      return null; 
     } 
    }; 
    TileOverlayOptions options = new TileOverlayOptions().tileProvider(provider); 
    options.visible(true); 

    return new GoogleTileLayer(map.addTileOverlay(options)); 
} 

回答

0

使用512x512代替256x256固定问题

1

可能的是什么问题可以帮助,但无论如何,你应该采取有关瓷砖的大小照顾的图像。 在大多数设备上,图块的大小(或gmaps如何拼接世界)是256x256像素,但在密度更高的设备上(我有使用Nexus 10的经验),图块大小为512x512。这意味着如果你有/下载一个256的图块并且显示为512,它会降低质量。 看这里: https://developers.google.com/maps/documentation/android-api/tileoverlay#coordinates

当创建图块层图像,你需要在你想支持每个缩放级别每个图块创建 图像。 当显示 拼贴时,Google地图会以256 dp(设备无关像素)为目标。对于高分辨率设备,建议您返回 高dpi图块(512x512像素)。有关支持不同屏幕尺寸和密度的信息,请参阅Android Developers 文档。

如果您使用的是URLTileProvider你可以给在构造函数的大小,如果您使用的是自定义创建瓷砖您应该创建2版本的瓷砖(正常/高密度),或简单地创建高密度并让系统对普通设备进行缩减。

如果问题不在此,请附上您问题的图片!

+0

为什么downvote?以及为什么作者回答并接受他自己的帖子时,我写了一个更完整的版本(在他之前)解释同样的事情? 这很有趣,谁downvoted –