2013-10-28 77 views
0

我试图加载瓷砖来源,但由于某种原因,它可以工作。 这里是我的代码:加载瓷砖来源

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中返回一个错误“Error loading tile”。

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

是否可以在MOBAC中创建一个mbtile? – Short