Beispiel #1
0
        public IEnumerable <Task <Drawing> > GetTilesForArea(IProjection projection, Extent mapArea)
        {
            var fullMapSize = new Rect(projection.FullMapSizeFor(mapArea.ZoomLevel));
            var mapRect     = projection.ToRect(mapArea);

            var listOfTiles = new List <Task <Drawing> >();

            for (double x = 0; x < fullMapSize.Width; x += projection.TileSize.Width)
            {
                for (double y = 0; y < fullMapSize.Height; y += projection.TileSize.Height)
                {
                    var currentTile = new Rect(x, y, projection.TileSize.Width, projection.TileSize.Height);

                    if (currentTile.IntersectsWith(mapRect))
                    {
                        listOfTiles.Add(Task.Run(() => RenderTile(projection, currentTile, mapArea)));
                    }
                }
            }

            return(listOfTiles);
        }