Android 自定义贴图分幅是模糊的

Android 自定义贴图分幅是模糊的,android,google-maps,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 = liste

在某些缩放级别,贴图分幅模糊,无法进行平滑渲染

使用以下代码:

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

也许问题所在的图像会有所帮助,但无论如何,你应该注意瓷砖的大小。 在大多数设备上,磁贴的大小(或全球gmaps磁贴的大小)是256x256 px,但在密度更高的设备上(我有使用Nexus 10的经验),磁贴的大小是512x512。这意味着,如果您拥有/下载的磁贴为256,并且显示为512,则会降低质量。 看看这里:

为平铺层创建图像时,需要创建 您希望支持的每个缩放级别的每个平铺的图像。 谷歌地图在显示时以256 dp(设备独立像素)为目标 瓷砖。对于高分辨率设备,建议您返回 高dpi分幅(512x512像素)。请参考Android开发者 有关支持不同屏幕尺寸和尺寸的信息的文档 密度

如果您使用的是URLTileProvider,您可以在构造函数中给出大小;如果您使用的是自定义创建的磁贴,您应该创建两个版本的磁贴(用于正常/高密度),或者只创建高密度,让系统对正常设备进行降尺度


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

用512x512而不是256x256解决了这个问题

为什么要投否决票?当我(在他之前)写了一个更完整的版本来解释同样的事情时,为什么作者回答并接受了他自己的帖子?真有趣,不管是谁投了反对票