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/
使い方
-
「新規作成」をクリックする。
-
「地図データの取得元を選択する」
OSM本家がないので、OSM Public trasport で代用する。 -
必要なエリアを矩形で選択する
-
ズームレベルを選択する。
複数のズームレベルを選択できるが、タイル数も大きくなり、生成に時間がかかる。
タイル数が数百くらいであれば、1分程度で生成される。 -
地図形式に「Osmdroid SQLite」を選択する。
Osmdroid SQLite -
「地図(アトラス)の構成処理を実行」をクリックする。
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 で生成した日本エリアのタイルファイルを同封してます。