2014-11-08 63 views
0

我想在osmdroid中使用在線和離線地圖瓷磚提供程序。所以我創建了一個延伸MapTileProviderArray的類MyTileProvider;然後我將我的離線和在線提供者都添加到提供者列表中。基於文檔,它應該在第一個提供者上查找文件,並且如果它不提供該文件並返回null,則轉到另一個提供者來查找該文件。
但在線提供程序不適用於離線返回空值的位置。這裏是我的代碼:
osmdroid如何使用多個磁貼供應商?

class MyTileProvider extends MapTileProviderArray 
{ 
private static ITileSource tileSource; 

protected MyTileProvider(Context context) 
{ 
    super(tileSource = TileSourceFactory.MAPNIK, new SimpleRegisterReceiver(context)); 
    // offline tile providing: 
    mTileProviderList.add(new OfflineMapTileProvider(context, tileSource)); 
    // online tile providing: 
    mTileProviderList.add(new MapTileDownloader(TileSourceFactory.MAPNIK)); 

    setTileSource(tileSource); 
} 
} 

任何意見將不勝感激。謝謝。

回答

2

試試這個:

//create the first tilesOverlay 
final MapTileProviderBasic tileProvider = new MapTileProviderBasic(getApplicationContext()); 
final ITileSource tileSource = new XYTileSource("MyCustomTiles", null, 1, 16, 256, ".png", 
    "http://a.url.to/custom-tiles/"); 
tileProvider.setTileSource(tileSource); 
final TilesOverlay tilesOverlay = new TilesOverlay(tileProvider, this.getBaseContext()); 
tilesOverlay.setLoadingBackgroundColor(Color.TRANSPARENT); 

//create the second one 
final MapTileProviderBasic anotherTileProvider = new MapTileProviderBasic(getApplicationContext()); 
final ITileSource anotherTileSource = new XYTileSource("MyCustomTiles", null, 1, 16, 256, ".png", 
    "http://a.secondurl.to/custom-tiles/"); 
anotherTileProvider.setTileSource(anotherTileSource); 
final TilesOverlay secondTilesOverlay = new TilesOverlay(anotherTileProvider, this.getBaseContext()); 
secondTilesOverlay.setLoadingBackgroundColor(Color.TRANSPARENT); 

// add the first tilesOverlay to the list 
osmv.getOverlays().add(tilesOverlay); 

// add the second tilesOverlay to the list 
osmv.getOverlays().add(secondTilesOverlay);