2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

osmdroid を使って OpenStreetMap から オフライン地図用のタイルを取得する

Last updated at Posted at 2019-02-13

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

CacheManager クラス

タイルのキャシュを管理するためのクラスです。

参考 : Cache Manager

OSMサーバーからタイル画像をダウンロードし、オフライン用のタイルファイルを作成するメッソッドがある。

downloadAreaAsync(Context ctx, BoundingBox bb, final int zoomMin, final int zoomMax, final CacheManagerCallback callback)

CacheManagerCallback のメソッド

  • onTaskComplete()
    成功した時に呼ばれる

  • onTaskFailed(int errors)
    失敗した時に呼ばれる

  • updateProgress(int progress, int currentZoomLevel, int zoomMin, int zoomMax)
    定期的に呼ばれるので、途中経過を表示するのに役立つ

  • downloadStarted()
    ダウンロードが開始された時に呼ばれる

  • setPossibleTilesInArea(int total) {
    ダウンロードが始まる直前に呼ばれる

基本的な使い方

//String outputName : 出力ファイルのパス名
// 例 /storage/emulated/0/osmdroid/archive.sqlite

        // MapView から表示範囲を取得する
        BoundingBox bb = mMapView.getBoundingBox();

// ダウンロードする
 SqliteArchiveTileWriter writer =new SqliteArchiveTileWriter(outputName);
CacheManager mgr = new CacheManager(mMapView, writer);
                    mgr.downloadAreaAsync( context, bb, zoommin, zoommax, new CacheManager.CacheManagerCallback() {
                    // コールバックの処理
                    });

ズームレベルを指定する UI を追加する

// SeekBar sb;シークバーの view

// MapView からズームレベルを取得して、シークバーの最大値を設定する
    int max = (max)mMapView.getMaxZoomLevel();
    sb.setMax( max);

// シークバーから指定されたズームレベルを取得する
    int zoom =sb.getProgress();

スクリーンショット

範囲を選択するための地図

7_map.png

####パラメータを指定するためのダイアログ

上のシークバーは、最小ズーム。下は最大ズーム。
7_dialog.png

github にソースを公開した

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?