【问题标题】:OSMdroid : How to load offline map from zip archive - MapTileFileArchiveProviderOSMdroid:如何从 zip 存档加载离线地图 - MapTileFileArchiveProvider
【发布时间】:2011-11-29 20:29:23
【问题描述】:

我真的需要一些有关 OSMdroid 库的帮助。将地图作为 zip 文件存储在 sdcard 中很有用。此外,地图可以解压缩,图像文件可以直接用于更快的渲染。

当图块解压缩、具有.tile 扩展名 并且存储 文件夹 时,我设法从我的SD 卡加载图块>/sdcard/osmdroid/tiles/Mapnik/... 为了创建我的地图,我使用了 Mobile Atlas CreatorOSMAND tile storage 格式。

我在网上阅读了一些教程,声称存储包含切片的 zip 文件存储在 /sdcard/osmdroid 中,然后将从 zip 加载离线地图。但这对我不起作用。

  1. 有人设法让它工作吗?如果有怎么办?

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

【问题讨论】:

  • 嘿,你能发布 2 个简单的样本 - 1 个用于存储地图,1 个用于检索它吗?
  • 能否提供示例代码:)

标签: android map archive offline osmdroid


【解决方案1】:

只是对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;
}

【讨论】:

    【解决方案2】:

    您的 ZIP 中的文件需要采用以下格式:

    Z/X/Y.png
    

    如果您将 Y.tile 文件重命名为 Y.png,请将它们压缩并将压缩文件放入 /sdcard/osmdroid/,这样应该可以。

    【讨论】:

    • 对不起,我的仓促。我正在做进一步的测试,我会分享结果。
    • 非常感谢。地图图块已正确渲染。如果有人有兴趣,可以使用 Mobile Atlas Creator 的 OSMdroid ZIP 格式来创建这样的压缩地图。
    • @user976933 - zip 不需要进入 /sdcard/osmdroid/tiles 吗?我实际上在这两个地方都试过了,但我仍然得到一张空白地图。
    • @DavidDoria 你能解决这个问题吗?我被困在这里
    • @epiGR 你能显示sn-p来设置瓦片源吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多