private void SetTileSource(MapTile tile, TileId tileId, MultiScaleTileSource source) { bool refresh = false; if (!tileId.Equals(tile.TileId)) { tile.TileId = tileId; refresh = true; } while (true) { TileSource tileSource = source.GetTileSource(tileId); if (tileSource != null) { if (tile.Source != tileSource || refresh) { tile.Source = tileSource; } if (tileSource.IsUsed) { this.usedTiles.Add(tileSource); this.unusedTiles.Remove(tileSource); break; } else { tileSource = null; } } if (tileSource == null) { tileId = this.ReduceTileId(tileId); if (tileId == null) { tile.Source = null; break; } } } }