4

osmdroid マップがあり、MOBAC の osmdroid zip または gemf ファイルからオフライン タイルをロードしたいと考えています。私はそれを調べましたが、どこに行っても、sdcard / osmdroidに入れるだけです。しかし、うまくいきません。コードを変更する必要がありますか?

 public class Map extends Activity {
  private IMapView mMapView;
  private static IMapController mMapController;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);

    mMapView = (MapView) findViewById(R.id.mapview);
    ((MapView) mMapView).setBuiltInZoomControls(true);

    mMapController = mMapView.getController();
    mMapController.setZoom(13);
    GeoPoint geoPecs = new GeoPoint(46.070833,18.233056);
    mMapController.setCenter(geoPecs);

mProvider = new MapTileProviderBasic(getApplicationContext());
    mCustomTileSource = new XYTileSource("Turaterkep", null, 13, 15, 256, ".png", "http://users.atw.hu/perzsa/map/Turaterkep/");
    mProvider.setTileSource(mCustomTileSource);
    mTilesOverlay = new TilesOverlay(mProvider,this.getBaseContext());

    mMapView.getOverlays().add(mTilesOverlay);

更新: osmdroid に含まれているサンプルを使用して、オンラインからタイルを読み込むことができました。コードも更新しました。このサンプルから始めなければならないと思います。ローカルホストから読み込むことができますか? 調子が悪い

写真: http://i.stack.imgur.com/CoZT1.png

4

3 に答える 3

2

I experienced the same problem and I solved it by using online tiles from Mapnik. This way, my application created the path in my mobile device (phone/osmdroid/tiles/Mapnik).

    mMapView.setTileSource(TileSourceFactory.Mapnik);

You can also add the tilesouce by adding this to your xml-file and in your mapview:

    tilesource="Mapnik"

Dont forget to specify that you don't want the application to download data by adding:

      mMapView.setUseDataConnection(false);

With that done, you can get the application to use offline tiles, just follow this guide: http://www.haakseth.com/?p=30

于 2014-04-01T19:04:52.590 に答える
1

あなたのコードは正しいです MapTileProviderBasic 使用 MapTileFileArchiveProvider:

https://code.google.com/p/osmdroid/source/browse/trunk/osmdroid-android/src/org/osmdroid/tileprovider/MapTileProviderBasic.java?r=681

zip のパスと zip ファイル内のディレクトリ構造を確認する必要があります。

zip ファイルは OSMDROID_PATH (/mnt/sdcard/osmdroid) に配置する必要があります。ここで zip ファイルが検索されます。

private void findArchiveFiles() {

    mArchiveFiles.clear();

    if (!getSdCardAvailable()) {
            return;
    }

    // path should be optionally configurable
    final File[] z = OSMDROID_PATH.listFiles();
    for (final File file : z) {
            final IArchiveFile archiveFile = ArchiveFileFactory.getArchiveFile(file);
            if (archiveFile != null) {
                    mArchiveFiles.add(archiveFile);
            }
    }
}

zip 内で、タイル ソース名をベース ディレクトリとして設定することを忘れないでください。

/タイルソース名/ズームレベル/...

于 2013-04-12T16:31:23.873 に答える