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;
}