自定义地图图块模糊

时间:2016-03-04 20:40:19

标签: android google-maps

在某些缩放级别,地图图块会模糊,无法进行平滑渲染。

使用以下代码:

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));
}

2 个答案:

答案 0 :(得分:1)

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

  

为图块图层创建图像时,您需要创建一个图像   您希望支持的每个缩放级别的每个图块的图像。   Google地图在显示时定位256 dp(与设备无关的像素)   瓷砖。对于高分辨率设备,建议您返回   高dpi瓷砖(512x512像素)。请参阅Android开发者   有关支持不同屏幕尺寸和信息的信息的文档   密度

如果您使用的是URLTileProvider,您可以在构造函数中给出大小,如果您使用自定义创建的图块,则应创建2个版本的图块(对于普通/高密度),或者只是创建高密度并让系统对普通设备进行缩减。

如果问题不是这个,请附上您的问题图片!

答案 1 :(得分:1)

使用512x512而不是256x256修复了问题