android - 如何为 osmdroid 准备离线 map 的 map 图 block 存档?

标签 android offline osmdroid

我准备了this simple project测试 osmdroid 的离线 map 功能.在第一步中,我使用 Internet 连接下载图 block 。一切都按预期工作。以下代码 fragment 显示了包含 map View 的 Activity 的设置。

public class MainActivity extends Activity {

    public static final GeoPoint BERLIN = new GeoPoint(52.516667, 13.383333);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setClickable(true);
        mapView.setBuiltInZoomControls(true);
        mapView.setMultiTouchControls(true);
        mapView.setUseDataConnection(true);
        mapView.setTileSource(TileSourceFactory.MAPNIK);

        IMapController mapViewController = mapView.getController();
        mapViewController.setZoom(15);
        mapViewController.setCenter(BERLIN);
    }

}

现在我想手动提供一个包含图 block 位图的存档文件。这些是我为离线模式做准备的步骤:

  1. 我压缩了 sdcard 上的现有文件夹,可以在 /mnt/sdcard/osmdroid/tiles/ 中找到。
  2. 我将生成的 Mapnik.zip 放在 /mnt/sdcard/osmdroid/ 的上一层。
  3. 我删除了 /mnt/sdcard/osmdroid/tiles/Mapnik 中的所有缓存图 block 。

现在我关闭手机上的无线连接并重新启动应用程序。 没有显示 map 图 block 。为什么?

最佳答案

你应该使用 tile packager创建您的 zip,或 mobile atlas creator .但是,如果您将 zip 中的所有 *.tile 文件重命名为 *.png,它应该可以工作(未测试)。

关于android - 如何为 osmdroid 准备离线 map 的 map 图 block 存档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296285/

相关文章:

android - 无法获得ACTION_PACKAGE_REMOVED广播-Android 10/设置

android - 如何保存在微调器中选择的值,以便在通过 ViewPager 滑动时值不会改变

android - Android 上的离线谷歌语音识别

android - Flutter Mapbox 构建一直失败( list 合并失败)

android - 无法在以下类型的对象上找到参数 [com.android.tools.build :gradle:3. 3.0] 的方法 classpath():

android - OSMDROID:错误:类型不兼容:无法将 IGeoPoint 转换为 GeoPoint

android - 如何使用 Assets 作为 osmdroid 离线 map 的来源

android - 如何在 OSM(打开 map 街道)的 Android Studio 中画一条线(折线)?

javascript - 使用 JavaScript 从本地 HTML5 网络应用加载 JSON

angular - angular2延迟加载路由失败如何处理