Несколько слоев плитки на osmdroid

В настоящее время я загружаю один слой данных плитки поверх базовой карты OSMdroid с

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);
osmv.getOverlays().add(tilesOverlay);

Можно ли визуализировать несколько слоев данных друг над другом поверх базовой карты или я могу отображать только один слой данных за раз? Я нашел этот пример для GoogleMaps, но не нашел примера кода OSMdroid, обрабатывающего множественные tileSources в время.


person birgit    schedule 13.11.2012    source источник


Ответы (1)


Да, конечно ты можешь. Вам просто нужно добавить еще один TilesOverlay на карту. Наложения (также tileOverlays) рисуются последовательно, начиная с самого низкого индекса списка (=0). Вот пример:

//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);
person Sabian    schedule 10.12.2012
comment
По моему опыту, слои в библиотеке osmdroid немного потребляют память, а это означает, что если вы добавите более 2 или 3 слоев, вы быстро столкнетесь с некоторыми проблемами (исключение OutOfMemory). - person Sabian; 10.12.2012
comment
как изменить BaseLayer? - person Muhammad Babar; 29.08.2014