public IList <TileInfo> GetTilesWanted(TileSchema schema, Extent extent, int level) { IList <TileInfo> infos = new List <TileInfo>(); int step = 1; // Iterating through all levels from current to zero. If lower levels are // not availeble the renderer can fall back on higher level tiles. while (level >= 0) { IList <TileInfo> infosOfLevel = schema.GetTilesInView(extent, level); infosOfLevel = PrioritizeTiles(infosOfLevel, extent.CenterX, extent.CenterY, sorter); foreach (TileInfo info in infosOfLevel) { if ((info.Index.Row >= 0) && (info.Index.Col >= 0)) { infos.Add(info); } } level = level - step; step++; } return(infos); }
private void DrawRecursive(Canvas canvas, TileSchema schema, ITransform transform, MemoryCache <MemoryStream> memoryCache, Extent extent, int level) { IList <TileInfo> tiles = schema.GetTilesInView(extent, level); foreach (TileInfo tile in tiles) { MemoryStream image = memoryCache.Find(tile.Index); if (image == null) { if (level > 0) { DrawRecursive(canvas, schema, transform, memoryCache, tile.Extent.Intersect(extent), level - 1); } } else { Rect dest = MapTransformHelper.WorldToMap(tile.Extent, transform); double opacity = DrawImage(canvas, image, dest, tile); if ((opacity < 1) && (level > 0)) { DrawRecursive(canvas, schema, transform, memoryCache, tile.Extent.Intersect(extent), level - 1); } } } }
public IEnumerable <TileInfo> GetTilesInView(Extent extent, string levelId) { return(TileSchema.GetTilesInView(this, extent, levelId)); }