2013-04-07 1 views
4

У меня есть карта osmdroid, и я хочу загрузить офлайн-плитки из файла MOBAC osmdroid zip или gemf. Я заглянул в него, и везде, где я говорю, просто добавьте его в sdcard/osmdroid. Но он не работает, мне нужно что-то изменить в коде?Osmdroid offline file

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

+0

Никто не может найти решения? – perzsa

ответ

2

я испытал та же проблема, и я решил ее, используя онлайн-фрагменты из Mapnik. Таким образом, мое приложение создало путь на моем мобильном устройстве (телефон/osmdroid/плитки/Mapnik).

mMapView.setTileSource(TileSourceFactory.Mapnik); 

Вы также можете добавить tilesouce, добавив в ваш XML-файл, и в вашем MapView:

tilesource="Mapnik" 

Не забудьте указать, что вы не хотите, чтобы приложение для загрузки данных путем добавления :

 mMapView.setUseDataConnection(false); 

Сделав это, вы можете получить приложение для использования в автономном режиме плитки, просто следовать этому руководству: http://www.haakseth.com/?p=30

+0

@williedanielsson: Я не совсем понимаю, где именно ** tilesource = "Mapnik" ** должно быть. Можете ли вы добавить к этому контекст? –

1

Ваш код правильный MapTileProviderBasic использование MapTileFileArchiveProvider:

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

Вы должны проверить путь свой почтовый и структуру каталогов в файле почтового индекса.

Почтовый файл должен быть помещен в OSMDROID_PATH (/ mnt/sdcard/osmdroid). Вот где ищутся файлы почтового индекса:

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); 
      } 
    } 
} 

Внутри вашего почтового индекса не забудьте установить название источника плитки в качестве базового каталога:

/tilesourcename/zoomlevel/...