2013-10-28 4 views
0

Я пытаюсь загрузить источник плитки, но по какой-то причине он работает. Вот мой код:Загрузка Tile Source

final IRegisterReceiver registerReceiver = new SimpleRegisterReceiver(this); 

    // Create a custom tile source 
    final ITileSource tileSource = TileSourceFactory.MAPNIK; 

    // Create a file cache modular provider 
    final TileWriter tileWriter = new TileWriter(); 
    final MapTileFilesystemProvider fileSystemProvider = new MapTileFilesystemProvider(registerReceiver, tileSource); 

    File myMapTileSource = new File(mapsDirectory.getPath()+File.separator+"Lisboa.gemf"); 

    // Create an archive file modular tile provider 
    IArchiveFile[] archives = { ArchiveFileFactory.getArchiveFile(myMapTileSource) }; 
    MapTileFileArchiveProvider fileArchiveProvider = new MapTileFileArchiveProvider(registerReceiver, tileSource, archives); 

    // Create a download modular tile provider 
    final NetworkAvailabliltyCheck networkAvailablilityCheck = new NetworkAvailabliltyCheck(this); 
    final MapTileDownloader downloaderProvider = new MapTileDownloader(tileSource, tileWriter, networkAvailablilityCheck); 

    // Create a custom tile provider array with the custom tile source and the custom tile providers 
    final MapTileProviderArray tileProviderArray = new MapTileProviderArray(tileSource, registerReceiver, new MapTileModuleProviderBase[] { fileSystemProvider, fileArchiveProvider, downloaderProvider }); 

    // Create the mapview with the custom tile provider array 
    mMapView = new MapView(this, 256, new DefaultResourceProxyImpl(this), tileProviderArray); 
    mMapView.setUseDataConnection(false); 

почему это работает, и я могу увидеть карту лиссабон в автономном режиме.

если я переключить линию

File myMapTileSource = new File(mapsDirectory.getPath()+File.separator+"Lisboa.gemf"); 

для

File myMapTileSource = new File(mapsDirectory.getPath()+File.separator+"Lissabon.osm"); 

это doenst работу. Он возвращает ошибку «Ошибка загрузки плитки» из MapTileFileArchiveProvider.

Файл gemf был создан в MOBAC. Файл osm был загружен с here.

Может ли кто-нибудь объяснить мне, почему это работает?

ответ

1

Если вы посмотрите на ArchiveFileFactory, вы увидите, что файлы GEMF поддерживаются, но файлы .osm - нет. Я не уверен, какие файлы формата .osm (возможно, это один из поддерживаемых форматов и просто нужно переименовать?)

+0

Вы правы. Я думал, что файлы gemf являются источником плитки. У меня, вероятно, была плохая интерпретация того, что я читал. osm - это XML-файл формата метаданных. [source] (http://wiki.openstreetmap.org/wiki/OSM_XML) Итак, если я хочу загрузить пользовательскую карту с помощью osmdroid, мне нужно будет получить источник плитки из «zip», «sqlite», mbtiles "или" gemf "? который вы бы предложили? – Short

+0

Я верю, что слышал о проблемах с быстродействием с zip-файлами, когда они становятся большими, поэтому я бы избегал этого. У меня были хорошие результаты с помощью gemf. Mbtiles использует sqlite в своем ядре, и я тоже хорошо слышу об этом! – kurtzmarc

+0

Можно ли создать mbtile в MOBAC? – Short