首页 文章

OSMdroid:如何从zip存档加载离线 Map - MapTileFileArchiveProvider

提问于
浏览
3

我真的需要一些OSMdroid库的帮助 . 将映射存储在sdcard中作为zip文件很有用 . 此外,可以解压缩 Map ,并且可以直接使用图像文件以进行更快的渲染 .

我设法从切片中加载瓷砖,当瓷砖未被切割,具有.tile扩展名并存储在文件夹/ sdcard / osmdroid / tiles / Mapnik / ...中 . 为了创建我的 Map ,我使用了Mobile Atlas Creator和OSMAND磁贴存储格式 .

我在网上阅读了一些声称存储包含磁贴的zip文件存储在/ sdcard / osmdroid中的教程,然后将从zip加载离线 Map . 但它对我不起作用 .

  • 有没有人设法让它发挥作用?如果是这样的话?

  • 我是否需要实例化自己的MapTileFileArchiveProvider?如果是这样,我该怎么做?任何例子?

2 回答

  • 0

    ZIP中的文件必须采用以下形式:

    Z/X/Y.png
    

    如果你将Y.tile文件重命名为Y.png,请将它们压缩并将zip文件放在/ sdcard / osmdroid /中,这应该可行 .

  • 6

    只是修改或添加了user976933的答案,zip还应该包含tilesource的名称作为基本目录,zip中所需的结构是:

    tilesourcename / Z / X / Y

    加载切片的代码位于BitmapTileSourceBase中:

    @Override
    public String getTileRelativeFilenameString(final MapTile tile) {
        final StringBuilder sb = new StringBuilder();
        sb.append(pathBase());
        sb.append('/');
        sb.append(tile.getZoomLevel());
        sb.append('/');
        sb.append(tile.getX());
        sb.append('/');
        sb.append(tile.getY());
        sb.append(imageFilenameEnding());
        return sb.toString();
    }
    
    public String pathBase() {
        return mName;
    }
    

相关问题