SuperMap.WindowsPhone.Mapping.TiledLayer.NeedShowTiles C# (CSharp) Method

NeedShowTiles() private method

计算需要添加的Tile块。
private NeedShowTiles ( double resolution, int span, bool useTransitions, int &level ) : List
resolution double
span int
useTransitions bool
level int
return List
        private List<Tile> NeedShowTiles(double resolution, int[] span, bool useTransitions, out int level)
        {
            double num = ((span[3] - span[1]) * 0.5) + span[1];
            double num2 = ((span[2] - span[0]) * 0.5) + span[0];
            List<Tile> tiles = new List<Tile>();
            List<DistanceTile> list = new List<DistanceTile>();
            for (int i = span[1]; i <= span[3]; i++)
            {
                for (int j = span[0]; j <= span[2]; j++)
                {
                    list.Add(new DistanceTile { Row = i, Column = j, Distance = Math.Pow(i - num, 2.0) + Math.Pow(j - num2, 2.0) });

                }
            }
            list.Sort();
            level = MathUtil.GetIndex(resolution, realResolutions);

            if (realResolutions != null)
            {
                if (level == -1)
                {
                    return tiles; //存在比例尺数组,但是不存在所请求的分辨率,那么就不要发送请求了。
                }
            }
            else
            {
                level = -1;
            }

            foreach (DistanceTile disTile in list)
            {
                MapImage mapImage = null;

                string str = Tile.GetTileKey(uniqueLayerId, disTile.Row, disTile.Column, resolution, level);
                Tile tile = new Tile(disTile.Row, disTile.Column, resolution, mapImage, useTransitions);
                tile.Level = level;
                tile.TileKey = str;
                tile.LayerID = uniqueLayerId;
                tiles.Add(tile);
            }
            return tiles;
        }