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); } } }
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); } } } }
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) }); } } }
public static Extent GetExtentOfTilesInView(ITileSchema schema, Extent extent, string levelId) { var range = TileTransform.WorldToTile(extent, levelId, schema); return(TileTransform.TileToWorld(range, levelId, schema)); }
public Extent GetExtentOfTilesInView(Extent extent, int level) { TileRange range = TileTransform.WorldToTile(extent, level, this); return(TileTransform.TileToWorld(range, level, this)); }