osmdroid を使ってAndroid に オフライン地図を表示する


osmdroid を使って OpenStreetMap 地図を Android に表示する
の続きです

オフライン用タイルを作成する

下記の方法がある

  • OSM Map Tile Packager

  • Mobile Atlas Creator (MOBAC)

  • Maperitive.net

  • osmdroid の Cache Manager

参考 : Offline Map Tiles

Mobile Atlas Creator (MOBAC)

携帯電話(モバイル)用のアプリケーション向けにオフラインタイルを作成するツールです。
PCにダウンロードして使用する。
日本語で表示される。

// https://mobac.sourceforge.io/

使い方

  1. 「新規作成」をクリックする。

  2. 「地図データの取得元を選択する」
    OSM本家がないので、OSM Public trasport で代用する。

  3. 必要なエリアを矩形で選択する

  4. ズームレベルを選択する。
    複数のズームレベルを選択できるが、タイル数も大きくなり、生成に時間がかかる。
    タイル数が数百くらいであれば、1分程度で生成される。

  5. 地図形式に「Osmdroid SQLite」を選択する。
    Osmdroid SQLite

  6. 「地図(アトラス)の構成処理を実行」をクリックする。

atlases ディレクトリにファイルが生成される。

作成したファイル(.sqlite、.zipなど)を Android端末 の SD カードの osmdroid デレクトリにコピーする。

タイルプロバイダを設定する

// File file : タイルファイル
    OfflineTileProvider tileProvider = null;
    try {
        tileProvider = new OfflineTileProvider(new SimpleRegisterReceiver( this),
                                    new File[]{file});
                 } catch (Exception ex) {
                            ex.printStackTrace();
                } 

  mMapView.setTileProvider( provider );

タイルソースを設定する

    ITileSource  tileSource = null;
                            IArchiveFile[] archives = tileProvider.getArchives();
                            if (archives.length > 0 ) {
                            Set<String> sourceNames = archives[0].getTileSources();

                  if (!sourceNames.isEmpty()) {
                    String source = sourceNames.iterator().next();
                 tileSource = FileBasedTileSource.getSource(source);
    }
}

    mMapView.setTileSource(  tileSource );

スクリーンショット

github にソースを公開した

MOBAC  で生成した日本エリアのタイルファイルを同封してます。