Android osmdroid如何使用多个磁贴提供程序?

Android osmdroid如何使用多个磁贴提供程序?,android,osmdroid,Android,Osmdroid,我想在osmdroid中同时使用在线和离线地图平铺提供程序。因此,我创建了一个类MyTileProvider,它扩展了MapTileProviderArray;然后,我将离线和在线提供商都添加到提供商列表中。根据文档,它应该查看第一个提供者,如果它不提供互动程序,则返回null,然后转到另一个提供者查找互动程序。 但是在线提供者在离线返回null的地方不起作用。这是我的代码: class MyTileProvider extends MapTileProviderArray { private

我想在osmdroid中同时使用在线和离线地图平铺提供程序。因此,我创建了一个类
MyTileProvider
,它扩展了
MapTileProviderArray
;然后,我将离线和在线提供商都添加到提供商列表中。根据文档,它应该查看第一个提供者,如果它不提供互动程序,则返回null,然后转到另一个提供者查找互动程序。
但是在线提供者在离线返回null的地方不起作用。这是我的代码:

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);
}
}
如有任何建议,将不胜感激。谢谢。

试试这个:

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