protected override string CreateRequestUri(TileIndex index)
        {
            int z = index.Level;
            int x = index.X;
            int y = MapTileProvider.GetSideTilesNum(z) - 1 - index.Y;

            return(String.Format(UriFormat, z, x, y));
        }
        public bool TryParse(string fileName, out TileIndex index)
        {
            string name = fileName.Substring(0, fileName.IndexOf('.'));

            int x     = 0;
            int y     = 0;
            int level = 0;

            foreach (char ch in name)
            {
                switch (ch)
                {
                case '0':
                    break;

                case '1':
                    x++;
                    break;

                case '2':
                    y++;
                    break;

                case '3':
                    x++;
                    y++;
                    break;

                default:
                    index = new TileIndex();
                    return(false);
                }

                level++;
                x *= 2;
                y *= 2;
            }

            y     = MapTileProvider.GetSideTilesNum(level) - y;
            index = new TileIndex(x, y, level);

            return(true);
        }