2013-10-28 105 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