Ejemplo n.º 1
0
        public static IEnumerable <TileInfo> GetTilesInView(ITileSchema schema, Extent extent, string levelId)
        {
            var range = TileTransform.WorldToTile(extent, levelId, schema);

            for (var x = range.FirstCol; x < range.FirstCol + range.ColCount; x++)
            {
                for (var y = range.FirstRow; y < range.FirstRow + range.RowCount; y++)
                {
                    if (x < 0 || x >= schema.GetMatrixWidth(levelId))
                    {
                        continue;
                    }
                    if (y < 0 || y >= schema.GetMatrixHeight(levelId))
                    {
                        continue;
                    }

                    var info = new TileInfo
                    {
                        Extent = TileTransform.TileToWorld(new TileRange(x, y), levelId, schema),
                        Index  = new TileIndex(x, y, levelId)
                    };

                    yield return(info);
                }
            }
        }
Ejemplo n.º 2
0
        public IEnumerable <TileInfo> GetTilesInView(Extent extent, int level)
        {
            TileRange range = TileTransform.WorldToTile(extent, level, this);

            for (int x = range.FirstCol; x < range.FirstCol + range.ColCount; x++)
            {
                for (int y = range.FirstRow; y < range.FirstRow + range.RowCount; y++)
                {
                    var info = new TileInfo
                    {
                        Extent = TileTransform.TileToWorld(new TileRange(x, y), level, this),
                        Index  = new TileIndex(x, y, level)
                    };

                    if (WithinSchemaExtent(Extent, info.Extent))
                    {
                        yield return(info);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        internal static IEnumerable <TileInfo> GetTileInfos(ITileSchema schema, Extent extent, string levelId)
        {
            // todo: move this method elsewhere.
            var range = TileTransform.WorldToTile(extent, levelId, schema);

            // todo: use a method to get tilerange for full schema and intersect with requested tilerange.
            var startX = Math.Max(range.FirstCol, schema.GetMatrixFirstCol(levelId));
            var stopX  = Math.Min(range.FirstCol + range.ColCount, schema.GetMatrixFirstCol(levelId) + schema.GetMatrixWidth(levelId));
            var startY = Math.Max(range.FirstRow, schema.GetMatrixFirstRow(levelId));
            var stopY  = Math.Min(range.FirstRow + range.RowCount, schema.GetMatrixFirstRow(levelId) + schema.GetMatrixHeight(levelId));

            for (var x = startX; x < stopX; x++)
            {
                for (var y = startY; y < stopY; y++)
                {
                    yield return(new TileInfo
                    {
                        Extent = TileTransform.TileToWorld(new TileRange(x, y), levelId, schema),
                        Index = new TileIndex(x, y, levelId)
                    });
                }
            }
        }
Ejemplo n.º 4
0
        public static Extent GetExtentOfTilesInView(ITileSchema schema, Extent extent, string levelId)
        {
            var range = TileTransform.WorldToTile(extent, levelId, schema);

            return(TileTransform.TileToWorld(range, levelId, schema));
        }
Ejemplo n.º 5
0
        public Extent GetExtentOfTilesInView(Extent extent, int level)
        {
            TileRange range = TileTransform.WorldToTile(extent, level, this);

            return(TileTransform.TileToWorld(range, level, this));
        }