Пример #1
0
        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;
                    }
                }
            }
        }