2011-10-03 40 views
3

我真的需要一些OSMdroid库的帮助。将地图存储在SD卡中作为zip文件很有用。此外,地图可以解压缩,图像文件可以直接用于更快的渲染。OSMdroid:如何从zip压缩文件加载离线地图 - MapTileFileArchiveProvider

我设法从我的SD卡装载砖时砖unziiped,有.tile扩展存储文件夹/SD卡/ osmdroid /瓷砖/ Mapnik的/ ... 要创建我的地图我使用了Mobile Atlas CreatorOSMAND瓷砖存储格式。

我在网上看了一些教程,声称存储包含磁贴的zip文件存储在/sdcard/osmdroid,那么离线地图将从zip文件中加载。但它不适合我。

  1. 有没有人设法使它工作?如果是这样如何?

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

+1

嗨,u能发布2个简单样品 - 1,用于存储用于检索它的地图和1? – ofirbt

+1

你能提供样品代码:) – usman

回答

6

在ZIP中的文件需要在形式:

Z/X/Y.png 

如果您Y.tile文件重命名为Y.png,压缩起来,并把zip文件中/ SD卡/ osmdroid /,应该工作。

+0

对不起,我的仓促。我正在进一步测试,我将分享结果。 – epiGR

+1

非常感谢。地图图块正确渲染。 如果有人有兴趣,可以使用Mobile Atlas Creator的OSMdroid ZIP格式来创建这样的压缩映射。 – epiGR

+0

@ user976933 - 不需要进入/ sdcard/osmdroid/tiles吗?我实际上在两个地方尝试过,我仍然会看到一张空白的地图。 –

0

只是修正或补充user976933的答案,拉链也应包含tilesource作为基本目录的名称,拉链内所需的结构是:

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