10

私は現在、学校のプロジェクトに取り組んでおり、ユーザーがオフライン時にマップを表示できるように、OSM マップ タイルを携帯電話のローカル メモリ/キャッシュにダウンロードする手法を習得しようとしています。

これは、特定の場所を指定することによって行われます。その場所から特定の半径/距離内にあるマップ タイルは、オフラインで表示するために電話のメモリにダウンロードされます (オンライン接続がある場合)。

ただし、OSMDroid の API を理解するのに少し問題があります。私の理解では、関連するクラスは次のようです。

私が間違っている場合は、私を修正してください。

また、MapTileBase (プロバイダーだと思います) では、getMapTile はandroid.graphics.drawable.Drawableを返します。

この Drawable クラスは、オフライン マップ表示の概念にも関連していますか?

電話のメモリにダウンロードするためにマップが呼び出されている正確な場所と、マップを編集してルート、ピンなどのインターフェイス項目を表示する方法について誰かが私に教えてくれることを願っています.

4

2 に答える 2

1

MapViewがまだナビゲートしていないエリアの外でオフラインでキャッシュする方法を探しているので、正確な答えはありません。組み込みのキャッシング サポートはありますが、希望どおりの方法ではありません。

独自のオフライン マップ タイルを提供するだけでなく、キャッシュする予定がある場合は、オンライン ダウンロード機能が必要になります。MapTileDownloader を見て、独自のバージョンを実装してみてください。MapTileDownloader.TileLoader.loadTile() メソッドは、マップ タイルが必要なときに MapTileProviderArray が呼び出すと思われる MapTileRequestState を取ります。

既存の MapTileDownloader の TileLoader 機能を複製できる場合は、おそらく独自の相対的な MapTileRequestState を挿入するか、MapTile を要求されたものにまっすぐに挿入できます。たとえば、MapTileRequestState と呼ばれる TileLoader を取得して調べ、現在のビューの外側にあるタイルを表す新しい MapTileRequestState/MapTile を構築する方法を見つけます。ただし、さまざまなズームレベルに対処する必要があり、ズームレベルによっては半径を小さくする必要があるため、簡単ではありません.18の低いズームレベルでは、タイルの半径がより大きくなります.より高い10。

個人的には、最近 100% オフラインで作業しようとしていたので、参考になるサンプル コードはありません。数ヶ月経っても頑張ってください。

于 2012-12-14T06:22:56.620 に答える
0

まず、ソース https://github.com/osmdroid/osmdroidを右に移動します

役立つ wiki 記事がいくつかあります。特に、オフライン マップ タイルの記事が参考になります。つまり、MOBAC または osmdroid が提供するツールを使用します。OSMBonuspack には、デバイスで同じタスクを実行するためのツールもあります。

マップ タイルは実際にこのクラスを使用してダウンロードされ ます https://github.com/osmdroid/osmdroid/blob/master/osmdroid-android/src/main/java/org/osmdroid/tileprovider/modules/MapTileDownloader.java

于 2015-12-19T13:04:16.570 に答える