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